AddrWidenAddress: set type
NBFlushPackets: We already hold the table lock when calling this.
Modified: trunk/reactos/drivers/lib/ip/network/address.c
Modified: trunk/reactos/drivers/lib/ip/network/neighbor.c

Modified: trunk/reactos/drivers/lib/ip/network/address.c
--- trunk/reactos/drivers/lib/ip/network/address.c	2005-02-11 22:49:44 UTC (rev 13498)
+++ trunk/reactos/drivers/lib/ip/network/address.c	2005-02-12 03:53:19 UTC (rev 13499)
@@ -86,6 +86,7 @@
 VOID AddrWidenAddress( PIP_ADDRESS Network, PIP_ADDRESS Source, 
 		       PIP_ADDRESS Netmask ) {
     if( Netmask->Type == IP_ADDRESS_V4 ) {
+        Network->Type = Netmask->Type;
 	Network->Address.IPv4Address = 
 	    Source->Address.IPv4Address & Netmask->Address.IPv4Address;
     } else {
@@ -220,8 +221,10 @@
     PIP_ADDRESS Address1,
     PIP_ADDRESS Address2)
 {
-    if (Address1->Type != Address2->Type)
+    if (Address1->Type != Address2->Type) {
+        DbgPrint("AddrIsEqual: Unequal Address Types\n");
         return FALSE;
+    }
 
     switch (Address1->Type) {
         case IP_ADDRESS_V4:
@@ -231,6 +234,10 @@
             return (RtlCompareMemory(&Address1->Address, &Address2->Address,
                 sizeof(IPv6_RAW_ADDRESS)) == sizeof(IPv6_RAW_ADDRESS));
             break;
+
+        default:
+            DbgPrint("AddrIsEqual: Bad address type\n");
+            break;
     }
 
     return FALSE;

Modified: trunk/reactos/drivers/lib/ip/network/neighbor.c
--- trunk/reactos/drivers/lib/ip/network/neighbor.c	2005-02-11 22:49:44 UTC (rev 13498)
+++ trunk/reactos/drivers/lib/ip/network/neighbor.c	2005-02-12 03:53:19 UTC (rev 13499)
@@ -52,19 +52,19 @@
     }
 }
 
+/* Must be called with table lock acquired */
 VOID NBFlushPacketQueue( PNEIGHBOR_CACHE_ENTRY NCE, 
 			 BOOL CallComplete,
 			 NTSTATUS ErrorCode ) {
     PLIST_ENTRY PacketEntry;
     PNEIGHBOR_PACKET Packet;
 	
-    PacketEntry = ExInterlockedRemoveHeadList(&NCE->PacketQueue,
-                                              &NCE->Table->Lock);
-    while( PacketEntry != NULL ) {
+    while( !IsListEmpty(&NCE->PacketQueue) ) {
+        PacketEntry = RemoveHeadList(&NCE->PacketQueue);
 	Packet = CONTAINING_RECORD
 	    ( PacketEntry, NEIGHBOR_PACKET, Next );
 
-  ASSERT_KM_POINTER(Packet);
+        ASSERT_KM_POINTER(Packet);
 	
 	TI_DbgPrint
 	    (MID_TRACE,
@@ -72,16 +72,14 @@
 	      PacketEntry, Packet->Packet));
 
 	if( CallComplete )
-    {
-      ASSERT_KM_POINTER(Packet->Complete);
+        {
+            ASSERT_KM_POINTER(Packet->Complete);
 	    Packet->Complete( Packet->Context,
 			      Packet->Packet,
 			      NDIS_STATUS_REQUEST_ABORTED );
-    }
+        }
 	
 	PoolFreeBuffer( Packet );
-	PacketEntry = ExInterlockedRemoveHeadList(&NCE->PacketQueue,
-	                                          &NCE->Table->Lock);
     }
 }