Skip to content

Instantly share code, notes, and snippets.

@LukasRuppert
Last active July 29, 2020 16:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LukasRuppert/de9f14197e111b854f90505f90fc1f42 to your computer and use it in GitHub Desktop.
Save LukasRuppert/de9f14197e111b854f90505f90fc1f42 to your computer and use it in GitHub Desktop.
changes made to wine within proton-5.0-9
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index e4e9bb8095..d10d6e0462 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -377,6 +377,7 @@ static inline const char *debugstr_sockopt(int level, int optname)
DEBUG_SOCKOPT(WS_SO_SNDTIMEO);
DEBUG_SOCKOPT(WS_SO_TYPE);
DEBUG_SOCKOPT(WS_SO_UPDATE_CONNECT_CONTEXT);
+ DEBUG_SOCKOPT(WS_SO_RANDOMIZE_PORT);
}
break;
@@ -433,6 +434,8 @@ static inline const char *debugstr_sockopt(int level, int optname)
{
DEBUG_SOCKOPT(WS_IPV6_ADD_MEMBERSHIP);
DEBUG_SOCKOPT(WS_IPV6_DROP_MEMBERSHIP);
+ DEBUG_SOCKOPT(WS_IPV6_PKTINFO);
+ DEBUG_SOCKOPT(WS_IPV6_PROTECTION_LEVEL);
DEBUG_SOCKOPT(WS_IPV6_MULTICAST_IF);
DEBUG_SOCKOPT(WS_IPV6_MULTICAST_HOPS);
DEBUG_SOCKOPT(WS_IPV6_MULTICAST_LOOP);
@@ -719,6 +722,9 @@ static const int ws_ipv6_map[][2] =
#endif
#ifdef IPV6_DROP_MEMBERSHIP
MAP_OPTION( IPV6_DROP_MEMBERSHIP ),
+#endif
+#ifdef IPV6_RECVPKTINFO
+ { WS_IPV6_PKTINFO, IPV6_RECVPKTINFO },
#endif
MAP_OPTION( IPV6_MULTICAST_IF ),
MAP_OPTION( IPV6_MULTICAST_HOPS ),
@@ -760,6 +766,7 @@ static const int ws_proto_map[][2] =
MAP_OPTION( IPPROTO_IPV6 ),
MAP_OPTION( IPPROTO_ICMP ),
MAP_OPTION( IPPROTO_IGMP ),
+ MAP_OPTION( IPPROTO_SCTP ),
MAP_OPTION( IPPROTO_RAW ),
{FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO},
};
@@ -772,10 +779,14 @@ static const int ws_aiflag_map[][2] =
#ifdef AI_NUMERICSERV
MAP_OPTION( AI_NUMERICSERV ),
#endif
+#ifdef AI_ALL
+ MAP_OPTION( AI_ALL ),
+#endif
#ifdef AI_V4MAPPED
MAP_OPTION( AI_V4MAPPED ),
#endif
MAP_OPTION( AI_ADDRCONFIG ),
+ { WS_AI_FQDN, AI_CANONNAME },
};
static const int ws_niflag_map[][2] =
@@ -892,6 +903,17 @@ static inline int convert_control_headers(struct msghdr *hdr, WSABUF *control)
break;
}
break;
+ case IPPROTO_IPV6:
+ switch(cmsg_unix->cmsg_type)
+ {
+#if defined(IPV6_PKTINFO)
+ case IPV6_PKTINFO:
+ //TODO: handle IPV6_PKTINFO
+#endif
+ default:
+ FIXME("Unhandled IPPROTO_IPV6 message header type %d\n", cmsg_unix->cmsg_type);
+ }
+ break;
default:
FIXME("Unhandled message header level %d\n", cmsg_unix->cmsg_level);
break;
@@ -4375,6 +4397,9 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
#endif
#ifdef IPV6_DROP_MEMBERSHIP
case WS_IPV6_DROP_MEMBERSHIP:
+#endif
+#ifdef IPV6_RECVPKTINFO
+ case WS_IPV6_PKTINFO:
#endif
case WS_IPV6_MULTICAST_IF:
case WS_IPV6_MULTICAST_HOPS:
@@ -6074,6 +6099,9 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname,
#endif
#ifdef IPV6_DROP_MEMBERSHIP
case WS_IPV6_DROP_MEMBERSHIP:
+#endif
+#ifdef IPV6_RECVPKTINFO
+ case WS_IPV6_PKTINFO:
#endif
case WS_IPV6_MULTICAST_IF:
case WS_IPV6_MULTICAST_HOPS:
diff --git a/include/winsock.h b/include/winsock.h
index 891fa9de23..d0ff807b2d 100644
--- a/include/winsock.h
+++ b/include/winsock.h
@@ -263,6 +263,7 @@ extern "C" {
#define IPPROTO_IPV6 41
#define IPPROTO_ICMPV6 58
#define IPPROTO_ND 77
+#define IPPROTO_SCTP 132
#define IPPROTO_RAW 255
#define IPPROTO_MAX 256
#else /* USE_WS_PREFIX */
@@ -276,6 +277,7 @@ extern "C" {
#define WS_IPPROTO_IPV6 41
#define WS_IPPROTO_ICMPV6 58
#define WS_IPPROTO_ND 77
+#define WS_IPPROTO_SCTP 132
#define WS_IPPROTO_RAW 255
#define WS_IPPROTO_MAX 256
#endif /* USE_WS_PREFIX */
diff --git a/include/ws2ipdef.h b/include/ws2ipdef.h
index 4cae361e5f..2fcca666a4 100644
--- a/include/ws2ipdef.h
+++ b/include/ws2ipdef.h
@@ -177,6 +177,11 @@ typedef struct WS(in_pktinfo) {
UINT ipi_ifindex;
} IN_PKTINFO, *PIN_PKTINFO;
+typedef struct WS(in6_pktinfo) {
+ IN6_ADDR ipi6_addr;
+ UINT ipi6_ifindex;
+} IN6_PKTINFO, *PIN6_PKTINFO;
+
#ifndef USE_WS_PREFIX
#define IPV6_OPTIONS 1
#define IPV6_HDRINCL 2
diff --git a/include/ws2tcpip.h b/include/ws2tcpip.h
index 43c277fa0c..8a038def25 100644
--- a/include/ws2tcpip.h
+++ b/include/ws2tcpip.h
@@ -72,11 +72,13 @@ typedef ADDRINFOA ADDRINFO, *LPADDRINFO;
# define AI_CANONNAME 0x00000002
# define AI_NUMERICHOST 0x00000004
# define AI_NUMERICSERV 0x00000008
+# define AI_ALL 0x00000100
# define AI_ADDRCONFIG 0x00000400
# define AI_V4MAPPED 0x00000800
# define AI_NON_AUTHORITATIVE 0x00004000
# define AI_SECURE 0x00008000
# define AI_RETURN_PREFERRED_NAMES 0x00010000
+# define AI_FQDN 0x00020000
# define AI_DISABLE_IDN_ENCODING 0x00080000
/* getaddrinfo error codes */
# define EAI_AGAIN WSATRY_AGAIN
@@ -93,11 +95,13 @@ typedef ADDRINFOA ADDRINFO, *LPADDRINFO;
# define WS_AI_CANONNAME 0x00000002
# define WS_AI_NUMERICHOST 0x00000004
# define WS_AI_NUMERICSERV 0x00000008
+# define WS_AI_ALL 0x00000100
# define WS_AI_ADDRCONFIG 0x00000400
# define WS_AI_V4MAPPED 0x00000800
# define WS_AI_NON_AUTHORITATIVE 0x00004000
# define WS_AI_SECURE 0x00008000
# define WS_AI_RETURN_PREFERRED_NAMES 0x00010000
+# define WS_AI_FQDN 0x00020000
# define WS_AI_DISABLE_IDN_ENCODING 0x00080000
/* getaddrinfo error codes */
# define WS_EAI_AGAIN WSATRY_AGAIN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment