How to Change the IP Address List Order Returned (171320)



The information in this article applies to:

  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional
  • Microsoft Windows NT Workstation 4.0
  • Microsoft Windows NT Server 4.0

This article was previously published under Q171320

SUMMARY

The Windows Sockets gethostbyname() API can be used to retrieve IP addresses assigned to a computer. If the host name sent in the query is NULL, or the local host name of the computer, gethostbyname() will return a list of IP addresses assigned to all network cards installed in the computer.

Some third-party device drivers are sensitive about the IP address order in the list returned by gethostbyname(); the device drivers require that the IP address to which they are bound do not show up at the top of the list.

MORE INFORMATION

Under Windows NT 3.51, the IP address list is in the same order as the TCP/IP network card binding order; therefore, altering the TCP/IP network card binding order will indirectly change the IP address order returned by gethostbyname().

Under Windows NT 4.0, that binding order does not influence the IP address order. Alternatively, a registry value, DependOnService, can be used to indirectly control the IP address order.

NOTE: There is a fix that, when applied, will list the first IP address of each NIC in the system, then the remainder of the IP addresses from all NICs. For additional information, please see the following article in the Microsoft Knowledge base:

164023 Applications Calling GetHostByName() for the Local Host Name May See the List of IP Addresses In an Order that Does Not Match the Binding Order

To influence the order of the IP address list, follow the steps below. These steps assume that you have two network adapter cards installed in a Windows NT 4.0 server computer. The driver names for the network adapters are Netcard1 and Netcard2. The steps below will cause the IP address order to list Netcard2's IP addresses first.

WARNING: Using Registry Editor incorrectly can cause serious, system-wide problems that may require you to reinstall Windows NT to correct them. Microsoft cannot guarantee that any problems resulting from the use of Registry Editor can be solved. Use this tool at your own risk.
  1. Start Registry Editor (Regedt32.exe) and select the following subkey
          HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<Netcard1>
    						
    where <Netcard1> is the name of the first bound network adapter in the computer, as it appears in the registry.
  2. From the Edit menu, click Add Value, and type the following information:
       Value Name: DependOnService
       Value Type: REG_MULTI_SZ
       Data:       Netcard2
    						
NOTE: This workaround only applies to Windows NT 4.0-based or Windows 2000-based computers that have multiple network adapters installed and only when it is querying the local host name. It has no effect when querying other computers on the network.

Modification Type:MajorLast Reviewed:6/3/2003
Keywords:kbinfo kbnetwork KB171320