From f55e4a284345feef5f831d1e0ed1576028bace96 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 16 Jan 2009 23:30:40 +0000 Subject: [PATCH] - Merge aicom-network-fixes up to r38799 - This should finally fix the "UNTRACK: SPECIFIED ALREADY FREE ITEM 0" bug svn path=/trunk/; revision=38800 --- reactos/lib/drivers/ip/network/ip.c | 34 +++++++++++------------ reactos/lib/drivers/ip/network/loopback.c | 1 + 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/reactos/lib/drivers/ip/network/ip.c b/reactos/lib/drivers/ip/network/ip.c index 2365e13a6f8..57031e96ee4 100644 --- a/reactos/lib/drivers/ip/network/ip.c +++ b/reactos/lib/drivers/ip/network/ip.c @@ -293,8 +293,6 @@ BOOLEAN IPRegisterInterface( IF->Index = ChosenIndex; - IPAddInterfaceRoute( IF ); - /* Add interface to the global interface list */ TcpipInterlockedInsertTailList(&InterfaceListHead, &IF->ListEntry, @@ -345,6 +343,21 @@ VOID IPUnregisterInterface( } +VOID DefaultProtocolHandler( + PIP_INTERFACE Interface, + PIP_PACKET IPPacket) +/* + * FUNCTION: Default handler for Internet protocols + * ARGUMENTS: + * NTE = Pointer to net table entry which the packet was received on + * IPPacket = Pointer to an IP packet that was received + */ +{ + TI_DbgPrint(MID_TRACE, ("[IF %x] Packet of unknown Internet protocol " + "discarded.\n", Interface)); +} + + VOID IPRegisterProtocol( UINT ProtocolNumber, IP_PROTOCOL_HANDLER Handler) @@ -362,22 +375,7 @@ VOID IPRegisterProtocol( return; } - ProtocolTable[ProtocolNumber] = Handler; -} - - -VOID DefaultProtocolHandler( - PIP_INTERFACE Interface, - PIP_PACKET IPPacket) -/* - * FUNCTION: Default handler for Internet protocols - * ARGUMENTS: - * NTE = Pointer to net table entry which the packet was received on - * IPPacket = Pointer to an IP packet that was received - */ -{ - TI_DbgPrint(MID_TRACE, ("[IF %x] Packet of unknown Internet protocol " - "discarded.\n", Interface)); + ProtocolTable[ProtocolNumber] = Handler ? Handler : DefaultProtocolHandler; } diff --git a/reactos/lib/drivers/ip/network/loopback.c b/reactos/lib/drivers/ip/network/loopback.c index 71fcc5223e3..d09c6910d09 100644 --- a/reactos/lib/drivers/ip/network/loopback.c +++ b/reactos/lib/drivers/ip/network/loopback.c @@ -199,6 +199,7 @@ NDIS_STATUS LoopRegisterAdapter( AddrInitIPv4(&Loopback->Broadcast, LOOPBACK_BCASTADDR_IPv4); IPRegisterInterface(Loopback); + IPAddInterfaceRoute(Loopback); TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));