We ran into an obscure problem with iphlpapi that I'd like to get help with. When you boot a linux box without an ethernet connection, and eth0 configuration fails, GetAdaptersInfo does not return MAC address info for eth0.
The problem seems to be that enumerateInterfaces (in dlls/iphlpapi/ifenum.c) doesn't create a record for eth0, because SIOCGIFCONF doesn't return one. Then when GetAdaptersInfo (in dlls/iphlpapi/iphlpapi_main.c) is looping through the interfaces, eth0 isn't there so it doesn't call getInterfacePhysicalByIndex to get the MAC address.
I verified that if I hack an eth0 entry into the table built by enumerateInterfaces, the call to getInterfacePhysicalByIndex works just fine. So the problem is simply a disconnect between what enumerateInterfaces is scanning and what GetAdaptersInfo is trying to scan.
Near as I can tell (and I am no networking guru by any stretch) GetAdaptersInfo is supposed to return MAC info for eth0, even if eth0 has no IP address. Near as I can tell too Windows does return MAC info in this situation. So this looks, again near as I can tell %), like a Wine bug.
Is it a wine bug? Any suggestions for a fix? ... mo
PS: I cc'd Juan Lang who is noted as the author of the code. I hope that isn't bad etiquette...?