diff --git a/reactos/lib/drivers/ip/network/arp.c b/reactos/lib/drivers/ip/network/arp.c index 124ea51f97a..c5b4967177e 100644 --- a/reactos/lib/drivers/ip/network/arp.c +++ b/reactos/lib/drivers/ip/network/arp.c @@ -253,6 +253,8 @@ VOID ARPReceive( SenderHWAddress, LAN_PROTO_ARP); } + + Packet->Free(Packet); } /* EOF */ diff --git a/reactos/lib/drivers/ip/network/icmp.c b/reactos/lib/drivers/ip/network/icmp.c index 54bc6255fe0..3effdacb9d9 100644 --- a/reactos/lib/drivers/ip/network/icmp.c +++ b/reactos/lib/drivers/ip/network/icmp.c @@ -34,7 +34,7 @@ VOID SendICMPComplete( } -PIP_PACKET PrepareICMPPacket( +BOOLEAN PrepareICMPPacket( PIP_INTERFACE Interface, PIP_PACKET IPPacket, PIP_ADDRESS Destination, @@ -57,6 +57,8 @@ PIP_PACKET PrepareICMPPacket( TI_DbgPrint(DEBUG_ICMP, ("Called. DataSize (%d).\n", DataSize)); + IPInitializePacket(IPPacket, IP_ADDRESS_V4); + /* No special flags */ IPPacket->Flags = 0; @@ -65,7 +67,7 @@ PIP_PACKET PrepareICMPPacket( /* Allocate NDIS packet */ NdisStatus = AllocatePacketWithBuffer( &NdisPacket, NULL, Size ); - if( !NT_SUCCESS(NdisStatus) ) return NULL; + if( !NT_SUCCESS(NdisStatus) ) return FALSE; IPPacket->NdisPacket = NdisPacket; @@ -114,7 +116,7 @@ PIP_PACKET PrepareICMPPacket( TI_DbgPrint(MID_TRACE,("Leaving\n")); - return IPPacket; + return TRUE; } diff --git a/reactos/lib/drivers/ip/network/loopback.c b/reactos/lib/drivers/ip/network/loopback.c index 0b7bd489793..263b2ce5223 100644 --- a/reactos/lib/drivers/ip/network/loopback.c +++ b/reactos/lib/drivers/ip/network/loopback.c @@ -46,6 +46,9 @@ VOID LoopTransmit( return; } + /* FIXME: IPv4 only */ + IPInitializePacket(&IPPacket, IP_ADDRESS_V4); + NdisGetFirstBufferFromPacket(XmitPacket, &NdisBuffer, &IPPacket.Header, diff --git a/reactos/lib/drivers/ip/network/receive.c b/reactos/lib/drivers/ip/network/receive.c index aab94251de1..19bd105e4d2 100644 --- a/reactos/lib/drivers/ip/network/receive.c +++ b/reactos/lib/drivers/ip/network/receive.c @@ -608,11 +608,13 @@ VOID IPReceive( PIP_INTERFACE IF, PIP_PACKET IPPacket ) case 6: IPPacket->Type = IP_ADDRESS_V6; TI_DbgPrint(MAX_TRACE, ("Datagram of type IPv6 discarded.\n")); - return; + break; default: TI_DbgPrint(MIN_TRACE, ("Datagram has an unsupported IP version %d.\n", Version)); - return; + break; } + + IPPacket->Free(IPPacket); } /* EOF */ diff --git a/reactos/lib/drivers/ip/transport/rawip/rawip.c b/reactos/lib/drivers/ip/transport/rawip/rawip.c index d779c743688..2c8b5701a6c 100644 --- a/reactos/lib/drivers/ip/transport/rawip/rawip.c +++ b/reactos/lib/drivers/ip/transport/rawip/rawip.c @@ -107,8 +107,6 @@ NTSTATUS BuildRawIpPacket( /* FIXME: Assumes IPv4 */ IPInitializePacket(Packet, IP_ADDRESS_V4); - if (!Packet) - return STATUS_INSUFFICIENT_RESOURCES; Packet->TotalSize = sizeof(IPv4_HEADER) + DataLen; diff --git a/reactos/lib/drivers/ip/transport/udp/udp.c b/reactos/lib/drivers/ip/transport/udp/udp.c index 75652f88533..a3d3ec04f1a 100644 --- a/reactos/lib/drivers/ip/transport/udp/udp.c +++ b/reactos/lib/drivers/ip/transport/udp/udp.c @@ -88,8 +88,6 @@ NTSTATUS BuildUDPPacket( /* FIXME: Assumes IPv4 */ IPInitializePacket(Packet, IP_ADDRESS_V4); - if (!Packet) - return STATUS_INSUFFICIENT_RESOURCES; Packet->TotalSize = sizeof(IPv4_HEADER) + sizeof(UDP_HEADER) + DataLen;