http://bugs.winehq.org/show_bug.cgi?id=20714
--- Comment #22 from Matt Lewandowsky matt@greenviolet.net 2010-03-14 20:09:18 --- (In reply to comment #21)
Also, what's wrong with using SIOCGARP on Linux?
Don't know, but that's not the point of this bug. If you don't like it, patch away.
Well, it kinda is... After all, if SIOCGARP can be used on Linux, there's no need for SIOCGIFHWADDR there, either, for getting the MAC address. And I am 99.999% positive that BSD still supports getting the MAC address via SIOCGARP too. Being well documented by Stevens, it's probably the best choice of least-common-denominator. Then one could work around its absence on specific systems.
The benefit? Simpler code, consistent behavior cross-platform (as they'd all be using the same interface), and I'm pretty sure lots of people use Stevens's approach, as it's been around at least 20 years. So you get the benefit of consistency with other codebases in other projects.
I have a copy of UNP 3rd Edition lying around here, so I'll be able to compare Wine's SIOCGARP stuff against it. I'll add it to tomorrow's todo list to investigate ifenum.c and see about patching it up to be simpler and more cross-platform with fewer special cases.