Actually, the way MS setup the SDK for the IPv6 implementation on the 2000 tech demo at least, you can build an executable in hybrid support mode. You use the IPv6-aware name resolution funcs (getaddrinfo, getnameinfo), and a link lib will pass it down to the native function if you're IPv6 (or update resolver) capable, and kick down to the older gethostby* funcs if you aren't. Now, presuming MS didn't NT-tree specific this link lib, it should work with anything running Winsock2+, and maybe lower (they talk about asking for ws1 in the ws init routines). The rest of the changes should be just updates to use the step-up API. Either drop a checkbox to enable v6, or auto-use if the connect is intended for a v6 host.