Revert unrelated part of 17aa359b5d.
This commit is contained in:
@@ -38,7 +38,7 @@ if $(HAIKU_ATA_STACK) = 1 {
|
|||||||
|
|
||||||
AddFilesToPackage add-ons kernel busses random : virtio_rng ;
|
AddFilesToPackage add-ons kernel busses random : virtio_rng ;
|
||||||
AddFilesToPackage add-ons kernel busses scsi : ahci virtio_scsi ;
|
AddFilesToPackage add-ons kernel busses scsi : ahci virtio_scsi ;
|
||||||
AddFilesToPackage add-ons kernel busses usb : <usb>uhci <usb>ohci <usb>ehci <usb>xhci ;
|
AddFilesToPackage add-ons kernel busses usb : <usb>uhci <usb>ohci <usb>ehci ;
|
||||||
AddFilesToPackage add-ons kernel busses virtio : virtio_pci ;
|
AddFilesToPackage add-ons kernel busses virtio : virtio_pci ;
|
||||||
AddFilesToPackage add-ons kernel console : vga_text ;
|
AddFilesToPackage add-ons kernel console : vga_text ;
|
||||||
AddFilesToPackage add-ons kernel debugger
|
AddFilesToPackage add-ons kernel debugger
|
||||||
@@ -206,7 +206,7 @@ AddBootModuleSymlinksToPackage
|
|||||||
openpic@ppc
|
openpic@ppc
|
||||||
packagefs pci
|
packagefs pci
|
||||||
scsi scsi_cd scsi_disk scsi_periph silicon_image_3112
|
scsi scsi_cd scsi_disk scsi_periph silicon_image_3112
|
||||||
usb usb_disk <usb>ehci <usb>ohci <usb>uhci <usb>xhci
|
usb usb_disk <usb>ehci <usb>ohci <usb>uhci
|
||||||
virtio virtio_block virtio_pci virtio_scsi
|
virtio virtio_block virtio_pci virtio_scsi
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ typedef uint32_t in_addr_t;
|
|||||||
#define IPPROTO_NONE 59 /* 59, IPv6 no next header */
|
#define IPPROTO_NONE 59 /* 59, IPv6 no next header */
|
||||||
#define IPPROTO_DSTOPTS 60 /* 60, IPv6 destination option */
|
#define IPPROTO_DSTOPTS 60 /* 60, IPv6 destination option */
|
||||||
#define IPPROTO_ETHERIP 97 /* 97, Ethernet in IPv4 */
|
#define IPPROTO_ETHERIP 97 /* 97, Ethernet in IPv4 */
|
||||||
#define IPPROTO_UDPLITE 136 /* 136, UDPLite */
|
|
||||||
#define IPPROTO_RAW 255 /* 255 */
|
#define IPPROTO_RAW 255 /* 255 */
|
||||||
|
|
||||||
#define IPPROTO_MAX 256
|
#define IPPROTO_MAX 256
|
||||||
|
|||||||
@@ -223,12 +223,10 @@ public:
|
|||||||
|
|
||||||
status_t InitCheck() const;
|
status_t InitCheck() const;
|
||||||
|
|
||||||
status_t ReceiveData(net_buffer* buffer,
|
status_t ReceiveData(net_buffer* buffer);
|
||||||
bool isUDPLite = false);
|
|
||||||
status_t ReceiveError(status_t error,
|
status_t ReceiveError(status_t error,
|
||||||
net_buffer* buffer);
|
net_buffer* buffer);
|
||||||
status_t Deframe(net_buffer* buffer,
|
status_t Deframe(net_buffer* buffer);
|
||||||
bool isUDPLite = false);
|
|
||||||
|
|
||||||
UdpDomainSupport* OpenEndpoint(UdpEndpoint* endpoint);
|
UdpDomainSupport* OpenEndpoint(UdpEndpoint* endpoint);
|
||||||
status_t FreeEndpoint(UdpDomainSupport* domain);
|
status_t FreeEndpoint(UdpDomainSupport* domain);
|
||||||
@@ -694,7 +692,7 @@ UdpEndpointManager::DumpEndpoints(int argc, char *argv[])
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
UdpEndpointManager::ReceiveData(net_buffer *buffer, bool isUDPLite)
|
UdpEndpointManager::ReceiveData(net_buffer *buffer)
|
||||||
{
|
{
|
||||||
TRACE_EPM("ReceiveData(%p [%" B_PRIu32 " bytes])", buffer, buffer->size);
|
TRACE_EPM("ReceiveData(%p [%" B_PRIu32 " bytes])", buffer, buffer->size);
|
||||||
|
|
||||||
@@ -705,7 +703,7 @@ UdpEndpointManager::ReceiveData(net_buffer *buffer, bool isUDPLite)
|
|||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t status = Deframe(buffer, isUDPLite);
|
status_t status = Deframe(buffer);
|
||||||
if (status != B_OK)
|
if (status != B_OK)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
@@ -761,7 +759,7 @@ UdpEndpointManager::ReceiveError(status_t error, net_buffer* buffer)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
UdpEndpointManager::Deframe(net_buffer* buffer, bool isUDPLite)
|
UdpEndpointManager::Deframe(net_buffer* buffer)
|
||||||
{
|
{
|
||||||
TRACE_EPM("Deframe(%p [%ld bytes])", buffer, buffer->size);
|
TRACE_EPM("Deframe(%p [%ld bytes])", buffer, buffer->size);
|
||||||
|
|
||||||
@@ -788,33 +786,26 @@ UdpEndpointManager::Deframe(net_buffer* buffer, bool isUDPLite)
|
|||||||
TRACE_EPM(" Deframe(): data from %s to %s", source.AsString(true).Data(),
|
TRACE_EPM(" Deframe(): data from %s to %s", source.AsString(true).Data(),
|
||||||
destination.AsString(true).Data());
|
destination.AsString(true).Data());
|
||||||
|
|
||||||
bool liteCheck = isUDPLite;
|
|
||||||
uint16 udpLength = ntohs(header.udp_length);
|
uint16 udpLength = ntohs(header.udp_length);
|
||||||
if (isUDPLite && udpLength == 0) {
|
|
||||||
udpLength = buffer->size;
|
|
||||||
liteCheck = false;
|
|
||||||
}
|
|
||||||
if (udpLength > buffer->size) {
|
if (udpLength > buffer->size) {
|
||||||
TRACE_EPM(" Deframe(): buffer is too short, expected %hu.",
|
TRACE_EPM(" Deframe(): buffer is too short, expected %hu.",
|
||||||
udpLength);
|
udpLength);
|
||||||
return B_MISMATCHED_VALUES;
|
return B_MISMATCHED_VALUES;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isUDPLite && buffer->size > udpLength)
|
if (buffer->size > udpLength)
|
||||||
gBufferModule->trim(buffer, udpLength);
|
gBufferModule->trim(buffer, udpLength);
|
||||||
|
|
||||||
if (header.udp_checksum != 0) {
|
if (header.udp_checksum != 0) {
|
||||||
// check UDP-checksum (simulating a so-called "pseudo-header"):
|
// check UDP-checksum (simulating a so-called "pseudo-header"):
|
||||||
uint16 sum = Checksum::PseudoHeader(addressModule, gBufferModule,
|
uint16 sum = Checksum::PseudoHeader(addressModule, gBufferModule,
|
||||||
buffer, isUDPLite ? IPPROTO_UDPLITE : IPPROTO_UDP);
|
buffer, IPPROTO_UDP);
|
||||||
if (sum != 0) {
|
if (sum != 0) {
|
||||||
TRACE_EPM(" Deframe(): bad checksum 0x%hx.", sum);
|
TRACE_EPM(" Deframe(): bad checksum 0x%hx.", sum);
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO check for udpLength < configured min length
|
|
||||||
|
|
||||||
bufferHeader.Remove();
|
bufferHeader.Remove();
|
||||||
// remove UDP-header from buffer before passing it on
|
// remove UDP-header from buffer before passing it on
|
||||||
|
|
||||||
@@ -1000,7 +991,7 @@ UdpEndpoint::SendRoutedData(net_buffer *buffer, net_route *route)
|
|||||||
if (buffer->size > (0xffff - sizeof(udp_header)))
|
if (buffer->size > (0xffff - sizeof(udp_header)))
|
||||||
return EMSGSIZE;
|
return EMSGSIZE;
|
||||||
|
|
||||||
buffer->protocol = Socket()->protocol;
|
buffer->protocol = IPPROTO_UDP;
|
||||||
|
|
||||||
// add and fill UDP-specific header:
|
// add and fill UDP-specific header:
|
||||||
NetBufferPrepend<udp_header> header(buffer);
|
NetBufferPrepend<udp_header> header(buffer);
|
||||||
@@ -1080,7 +1071,7 @@ UdpEndpoint::DeliverData(net_buffer *_buffer)
|
|||||||
if (buffer == NULL)
|
if (buffer == NULL)
|
||||||
return B_NO_MEMORY;
|
return B_NO_MEMORY;
|
||||||
|
|
||||||
status_t status = sUdpEndpointManager->Deframe(buffer, Socket()->protocol);
|
status_t status = sUdpEndpointManager->Deframe(buffer);
|
||||||
if (status < B_OK) {
|
if (status < B_OK) {
|
||||||
gBufferModule->free(buffer);
|
gBufferModule->free(buffer);
|
||||||
return status;
|
return status;
|
||||||
@@ -1120,21 +1111,6 @@ udp_init_protocol(net_socket *socket)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
net_protocol *
|
|
||||||
udplite_init_protocol(net_socket *socket)
|
|
||||||
{
|
|
||||||
UdpEndpoint *endpoint = new (std::nothrow) UdpEndpoint(socket);
|
|
||||||
if (endpoint == NULL || endpoint->InitCheck() < B_OK) {
|
|
||||||
delete endpoint;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
socket->protocol = IPPROTO_UDPLITE;
|
|
||||||
|
|
||||||
return endpoint;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
udp_uninit_protocol(net_protocol *protocol)
|
udp_uninit_protocol(net_protocol *protocol)
|
||||||
{
|
{
|
||||||
@@ -1291,13 +1267,6 @@ udp_receive_data(net_buffer *buffer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
|
||||||
udplite_receive_data(net_buffer *buffer)
|
|
||||||
{
|
|
||||||
return sUdpEndpointManager->ReceiveData(buffer, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
udp_deliver_data(net_protocol *protocol, net_buffer *buffer)
|
udp_deliver_data(net_protocol *protocol, net_buffer *buffer)
|
||||||
{
|
{
|
||||||
@@ -1496,48 +1465,6 @@ net_protocol_module_info sUDPModule = {
|
|||||||
NULL // read_data_no_buffer()
|
NULL // read_data_no_buffer()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
net_protocol_module_info sUDPLiteModule = {
|
|
||||||
{
|
|
||||||
"network/protocols/udplite/v1",
|
|
||||||
0,
|
|
||||||
NULL
|
|
||||||
},
|
|
||||||
NET_PROTOCOL_ATOMIC_MESSAGES,
|
|
||||||
|
|
||||||
udplite_init_protocol,
|
|
||||||
udp_uninit_protocol,
|
|
||||||
udp_open,
|
|
||||||
udp_close,
|
|
||||||
udp_free,
|
|
||||||
udp_connect,
|
|
||||||
udp_accept,
|
|
||||||
udp_control,
|
|
||||||
udp_getsockopt,
|
|
||||||
udp_setsockopt,
|
|
||||||
udp_bind,
|
|
||||||
udp_unbind,
|
|
||||||
udp_listen,
|
|
||||||
udp_shutdown,
|
|
||||||
udp_send_data,
|
|
||||||
udp_send_routed_data,
|
|
||||||
udp_send_avail,
|
|
||||||
udp_read_data,
|
|
||||||
udp_read_avail,
|
|
||||||
udp_get_domain,
|
|
||||||
udp_get_mtu,
|
|
||||||
udplite_receive_data,
|
|
||||||
udp_deliver_data,
|
|
||||||
udp_error_received,
|
|
||||||
udp_error_reply,
|
|
||||||
NULL, // add_ancillary_data()
|
|
||||||
NULL, // process_ancillary_data()
|
|
||||||
udp_process_ancillary_data_no_container,
|
|
||||||
NULL, // send_data_no_buffer()
|
|
||||||
NULL // read_data_no_buffer()
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
module_dependency module_dependencies[] = {
|
module_dependency module_dependencies[] = {
|
||||||
{NET_STACK_MODULE_NAME, (module_info **)&gStackModule},
|
{NET_STACK_MODULE_NAME, (module_info **)&gStackModule},
|
||||||
{NET_BUFFER_MODULE_NAME, (module_info **)&gBufferModule},
|
{NET_BUFFER_MODULE_NAME, (module_info **)&gBufferModule},
|
||||||
|
|||||||
Reference in New Issue
Block a user