I'm working directly with BSD / Winsock sockets. For a time I was using ENet with a handful of modifications, and for a time life was good. Then I realised ENet only supports IPv4. There are forks of ENet that are IPv6, but not that explicitly support both. My overall requirements aren't very stringent, so I'm pretty comfortable with rolling my own instead.
The prevailing wisdom seems to be to use a single socket where dual-stack support exists, and create two separate sockets as a fallback. The problem I'm facing is how to detect the availability of dual-stack sockets in the first place?