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:
committed by
waddlesplash
parent
4cf1bb8619
commit
f9a86ebeab
@@ -105,7 +105,7 @@ struct net_protocol_module_info {
|
||||
status_t (*receive_data)(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,
|
||||
net_error error, net_error_data* errorData);
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ HciConnection::~HciConnection()
|
||||
if (L2cap != NULL) {
|
||||
net_buffer* error = gBufferModule->create(128);
|
||||
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;
|
||||
gBufferModule->free(error);
|
||||
}
|
||||
|
||||
@@ -554,7 +554,7 @@ icmp_receive_data(net_buffer* buffer)
|
||||
net_error error = icmp_to_net_error(header.type, header.code);
|
||||
if (error != 0) {
|
||||
bufferHeader.Remove();
|
||||
return domain->module->error_received(error, buffer);
|
||||
return domain->module->error_received(error, NULL, buffer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -579,7 +579,7 @@ icmp_receive_data(net_buffer* buffer)
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -299,7 +299,7 @@ icmp6_deliver_data(net_protocol *protocol, net_buffer *buffer)
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -1878,7 +1878,7 @@ ipv4_deliver_data(net_protocol* _protocol, net_buffer* buffer)
|
||||
|
||||
|
||||
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])",
|
||||
(int)error, buffer, buffer->size);
|
||||
@@ -1929,7 +1929,7 @@ ipv4_error_received(net_error error, net_buffer* buffer)
|
||||
return B_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
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -296,7 +296,7 @@ l2cap_receive_data(net_buffer* buffer)
|
||||
|
||||
|
||||
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();
|
||||
|
||||
|
||||
@@ -757,7 +757,7 @@ tcp_receive_data(net_buffer* buffer)
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -1371,7 +1371,7 @@ udp_deliver_data(net_protocol *protocol, net_buffer *buffer)
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@ unix_deliver_data(net_protocol *_protocol, net_buffer *buffer)
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -629,7 +629,7 @@ link_receive_data(net_buffer* buffer)
|
||||
|
||||
|
||||
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
|
||||
return B_ERROR;
|
||||
|
||||
Reference in New Issue
Block a user