network: Add net_error_data parameter to error_received.

Same structure as used for error_reply, to contain information
(like path MTU or redirect gateway) from the original error packet,
so that upper layers don't have to re-parse it.

Nothing uses or passes it around at present, but it will be used
in the next commits.

Change-Id: I38a3dec5506bdcb77a7850294082db7be74dd80f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9399
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
This commit is contained in:
Augustin Cavalier
2025-06-28 17:22:47 +00:00
committed by waddlesplash
parent 4cf1bb8619
commit f9a86ebeab
11 changed files with 13 additions and 13 deletions
+1 -1
View File
@@ -105,7 +105,7 @@ struct net_protocol_module_info {
status_t (*receive_data)(net_buffer* data); status_t (*receive_data)(net_buffer* data);
status_t (*deliver_data)(net_protocol* self, net_buffer* data); status_t (*deliver_data)(net_protocol* self, net_buffer* data);
status_t (*error_received)(net_error error, net_buffer* data); status_t (*error_received)(net_error error, net_error_data* errorData, net_buffer* data);
status_t (*error_reply)(net_protocol* self, net_buffer* cause, status_t (*error_reply)(net_protocol* self, net_buffer* cause,
net_error error, net_error_data* errorData); net_error error, net_error_data* errorData);
@@ -50,7 +50,7 @@ HciConnection::~HciConnection()
if (L2cap != NULL) { if (L2cap != NULL) {
net_buffer* error = gBufferModule->create(128); net_buffer* error = gBufferModule->create(128);
error->interface_address = &interface_address; error->interface_address = &interface_address;
if (L2cap->error_received(B_NET_ERROR_UNREACH_HOST, error) != B_OK) { if (L2cap->error_received(B_NET_ERROR_UNREACH_HOST, NULL, error) != B_OK) {
error->interface_address = NULL; error->interface_address = NULL;
gBufferModule->free(error); gBufferModule->free(error);
} }
@@ -554,7 +554,7 @@ icmp_receive_data(net_buffer* buffer)
net_error error = icmp_to_net_error(header.type, header.code); net_error error = icmp_to_net_error(header.type, header.code);
if (error != 0) { if (error != 0) {
bufferHeader.Remove(); bufferHeader.Remove();
return domain->module->error_received(error, buffer); return domain->module->error_received(error, NULL, buffer);
} }
break; break;
} }
@@ -579,7 +579,7 @@ icmp_receive_data(net_buffer* buffer)
status_t status_t
icmp_error_received(net_error code, net_buffer* data) icmp_error_received(net_error code, net_error_data* errorData, net_buffer* data)
{ {
return B_ERROR; return B_ERROR;
} }
@@ -299,7 +299,7 @@ icmp6_deliver_data(net_protocol *protocol, net_buffer *buffer)
status_t status_t
icmp6_error_received(net_error code, net_buffer* data) icmp6_error_received(net_error code, net_error_data* errorData, net_buffer* data)
{ {
return B_ERROR; return B_ERROR;
} }
@@ -1878,7 +1878,7 @@ ipv4_deliver_data(net_protocol* _protocol, net_buffer* buffer)
status_t status_t
ipv4_error_received(net_error error, net_buffer* buffer) ipv4_error_received(net_error error, net_error_data* errorData, net_buffer* buffer)
{ {
TRACE(" ipv4_error_received(error %d, buffer %p [%" B_PRIu32 " bytes])", TRACE(" ipv4_error_received(error %d, buffer %p [%" B_PRIu32 " bytes])",
(int)error, buffer, buffer->size); (int)error, buffer, buffer->size);
@@ -1929,7 +1929,7 @@ ipv4_error_received(net_error error, net_buffer* buffer)
return B_ERROR; return B_ERROR;
// propagate error // propagate error
return protocol->error_received(error, buffer); return protocol->error_received(error, errorData, buffer);
} }
@@ -1572,7 +1572,7 @@ ipv6_deliver_data(net_protocol* _protocol, net_buffer* buffer)
status_t status_t
ipv6_error_received(net_error error, net_buffer* data) ipv6_error_received(net_error error, net_error_data* errorData, net_buffer* data)
{ {
return B_ERROR; return B_ERROR;
} }
@@ -296,7 +296,7 @@ l2cap_receive_data(net_buffer* buffer)
status_t status_t
l2cap_error_received(net_error error, net_buffer* data) l2cap_error_received(net_error error, net_error_data* errorData, net_buffer* data)
{ {
CALLED(); CALLED();
@@ -757,7 +757,7 @@ tcp_receive_data(net_buffer* buffer)
status_t status_t
tcp_error_received(net_error error, net_buffer* data) tcp_error_received(net_error error, net_error_data* errorData, net_buffer* data)
{ {
return B_ERROR; return B_ERROR;
} }
@@ -1371,7 +1371,7 @@ udp_deliver_data(net_protocol *protocol, net_buffer *buffer)
status_t status_t
udp_error_received(net_error error, net_buffer* buffer) udp_error_received(net_error error, net_error_data* errorData, net_buffer* buffer)
{ {
status_t notifyError = B_OK; status_t notifyError = B_OK;
@@ -275,7 +275,7 @@ unix_deliver_data(net_protocol *_protocol, net_buffer *buffer)
status_t status_t
unix_error_received(net_error error, net_buffer *data) unix_error_received(net_error error, net_error_data* errorData, net_buffer *data)
{ {
return B_ERROR; return B_ERROR;
} }
+1 -1
View File
@@ -629,7 +629,7 @@ link_receive_data(net_buffer* buffer)
static status_t static status_t
link_error_received(net_error error, net_buffer* data) link_error_received(net_error error, net_error_data* errorData, net_buffer* data)
{ {
// We don't do any error processing // We don't do any error processing
return B_ERROR; return B_ERROR;