This patch loses the tests for IP_ADD_MEMBERSHIP et al.
Also:
- for (opt = 0; opt < 100; opt++)
I'm not a huge fan of this. It kind of works for IP options, but it wouldn't work if we extended these tests to e.g. SOL_SOCKET. I'm also not sure I see the value in exhaustively testing undocumented or invalid sockopts. Maybe check one or two obviously invalid numbers just to show what the invalid behaviour is (and of course put that in the table proper).
{ IPV6_GET_IFLIST, WSAEINVAL, BROKEN /* win8 */ | TODO },
This still isn't clear enough to me; it looks like it means "broken on windows 8", not "broken on anything before windows 8".
Also, what's the broken case anyway? If it's just a matter of some versions not supporting the option yet and returning WSAENOPROTOOPT, is it even worth putting it in the table? Can we just have a blanket "|| broken(ret == -1 && WSAGetLastError() == WSAENOPROTOOPT)"?
{ 2, WSAEINVAL, TODO },
This is IPV6_HDRINCL.
{ 47, WSAEINVAL, BROKEN /* vista */ | TODO },
IP_ORIGINAL_ARRIVAL_IF (yes, used with IPPROTO_IPV6; see [1].)
[1] https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-o...