Don't keep overwriting the first address entry, give the others a chance too.
authorGé van Geldorp <ge@gse.nl>
Thu, 5 Jan 2006 23:11:51 +0000 (23:11 +0000)
committerGé van Geldorp <ge@gse.nl>
Thu, 5 Jan 2006 23:11:51 +0000 (23:11 +0000)
Fixes IP address display in ipconfig.

svn path=/trunk/; revision=20597

reactos/drivers/net/tcpip/tcpip/ninfo.c

index 9602d3c..8f81565 100644 (file)
@@ -19,7 +19,7 @@ TDI_STATUS InfoTdiQueryGetAddrTable( PNDIS_BUFFER Buffer,
     IF_LIST_ITER(CurrentIF);
     TDI_STATUS Status = TDI_INVALID_REQUEST;
     KIRQL OldIrql;
     IF_LIST_ITER(CurrentIF);
     TDI_STATUS Status = TDI_INVALID_REQUEST;
     KIRQL OldIrql;
-    UINT Count = 1; /* Start adapter indices at 1 */
+    UINT Count = 0;
     UINT IfCount = CountInterfaces();
     PIPADDR_ENTRY IpAddress =
        ExAllocatePool( NonPagedPool, sizeof( IPADDR_ENTRY ) * IfCount );
     UINT IfCount = CountInterfaces();
     PIPADDR_ENTRY IpAddress =
        ExAllocatePool( NonPagedPool, sizeof( IPADDR_ENTRY ) * IfCount );
@@ -38,20 +38,21 @@ TDI_STATUS InfoTdiQueryGetAddrTable( PNDIS_BUFFER Buffer,
        /* Locate the diffrent addresses and put them the right place */
        GetInterfaceIPv4Address( CurrentIF,
                                 ADE_UNICAST,
        /* Locate the diffrent addresses and put them the right place */
        GetInterfaceIPv4Address( CurrentIF,
                                 ADE_UNICAST,
-                                &IpAddress->Addr );
+                                &IpCurrent->Addr );
        GetInterfaceIPv4Address( CurrentIF,
                                 ADE_BROADCAST,
        GetInterfaceIPv4Address( CurrentIF,
                                 ADE_BROADCAST,
-                                &IpAddress->BcastAddr );
+                                &IpCurrent->BcastAddr );
        GetInterfaceIPv4Address( CurrentIF,
                                 ADE_ADDRMASK,
        GetInterfaceIPv4Address( CurrentIF,
                                 ADE_ADDRMASK,
-                                &IpAddress->Mask );
+                                &IpCurrent->Mask );
        IpCurrent++;
        Count++;
     } EndFor(CurrentIF);
        IpCurrent++;
        Count++;
     } EndFor(CurrentIF);
+    ASSERT( Count == IfCount );
 
     TcpipReleaseSpinLock(&InterfaceListLock, OldIrql);
 
 
     TcpipReleaseSpinLock(&InterfaceListLock, OldIrql);
 
-    Status = InfoCopyOut( (PCHAR)IpAddress, sizeof(*IpAddress) * Count,
+    Status = InfoCopyOut( (PCHAR)IpAddress, sizeof(*IpAddress) * IfCount,
                          Buffer, BufferSize );
 
     ExFreePool( IpAddress );
                          Buffer, BufferSize );
 
     ExFreePool( IpAddress );