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 (*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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user