Winsock API
Robert Lunnon
bob at yarrabee.net.au
Fri Sep 14 22:38:17 CDT 2001
I have Converted WSAIOCTL to use SIOCGETIFCONF ioctl calls rather than parse
/proc which is to linux-centric but I was asked by Francois Gouget to look
at trying to make WsControl unix independent by implementing it using other
windows APIs rather than by using unix calls directly.
Unfortunately this API is a bit of a mess because WsControl can return the
MAC Adress but WSAIoctl doesn't appear to implement that functionality. To
get The MAC Address we then need to make an appropriate UNIX IOCTL call for
which we need the interface name, which isn't available from WSAIoctl either.
There are other ways in windows to getthe MAC address via an SNMP call but
I'm not sure how that is implemented (Possibly with a call back to WSControl)
I don't see then how WSControl can be implemented without the present hacks
and duplicated code between WSAIoclt and WSControl helper functions.
My proposal then would be...
1.)
Separate out all the unix centric helper functions for WSControl and WSAIoctl
into a common ancestor source file with no windows dependencies. This should
remove the ugly socket hack in WSControl, both libraries still end up with
private copies of the common helper functions but since they are all derived
from the same common source file it will at least be encapsulated and easier
to maintain.
2.)
The doco for WSIoctl indicate the encoding for the Ioctl op-code allows for
a "Standard" unix IOCTL to be passed to WSIoctl ostensibly for
FIONREAD,FIONBIO et al, with predictable results. If I were to implement
SIOCGETIFCONF in WsIoctl then this would allow a pass-through so I could get
what I need from the host OS without disturbing current windows programs.
Because windows doesn't define SIOCGETIFCONF whatever we choose for the value
of the op-code might end up being used by Microsoft later, breaking Wine.
(Possible but not very likely)
Opinions ?
More information about the wine-devel
mailing list