summaryrefslogtreecommitdiffstats
path: root/3rdparty/openpgm-svn-r1135/pgm/win/mingw32-runtime_3.13-1openpgm3.diff
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/openpgm-svn-r1135/pgm/win/mingw32-runtime_3.13-1openpgm3.diff')
-rw-r--r--3rdparty/openpgm-svn-r1135/pgm/win/mingw32-runtime_3.13-1openpgm3.diff136
1 files changed, 136 insertions, 0 deletions
diff --git a/3rdparty/openpgm-svn-r1135/pgm/win/mingw32-runtime_3.13-1openpgm3.diff b/3rdparty/openpgm-svn-r1135/pgm/win/mingw32-runtime_3.13-1openpgm3.diff
new file mode 100644
index 0000000..189c32d
--- /dev/null
+++ b/3rdparty/openpgm-svn-r1135/pgm/win/mingw32-runtime_3.13-1openpgm3.diff
@@ -0,0 +1,136 @@
+diff -urN include-original/mswsock.h include/mswsock.h
+--- include-original/mswsock.h 2009-08-21 22:41:22.000000000 +0800
++++ include/mswsock.h 2010-01-21 17:31:14.662159471 +0800
+@@ -83,23 +83,19 @@
+ } WSAMSG, *PWSAMSG, *LPWSAMSG;
+
+
+-/* According to MSDN docs, the WSAMSG.Control buffer starts with a
+- cmsghdr header of the following form. See also RFC 2292. */
+-
+-typedef struct wsacmsghdr {
+- UINT cmsg_len;
+- INT cmsg_level;
+- INT cmsg_type;
+- /* followed by UCHAR cmsg_data[]; */
+-} WSACMSGHDR;
+-
+-/* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */
+-#if 0
+-#define WSA_CMSG_FIRSTHDR(mhdr)
+-#define WSA_CMSG_NXTHDR(mhdr, cmsg)
+-#define WSA_CMSG_SPACE(length)
+-#define WSA_CMSG_LEN(length)
+-#endif
++ typedef struct _WSACMSGHDR {
++ SIZE_T cmsg_len;
++ INT cmsg_level;
++ INT cmsg_type;
++ } WSACMSGHDR,*PWSACMSGHDR,*LPWSACMSGHDR;
++
++#define WSA_CMSGHDR_ALIGN(length) (((length) + TYPE_ALIGNMENT(WSACMSGHDR)-1) & (~(TYPE_ALIGNMENT(WSACMSGHDR)-1)))
++#define WSA_CMSGDATA_ALIGN(length) (((length) + MAX_NATURAL_ALIGNMENT-1) & (~(MAX_NATURAL_ALIGNMENT-1)))
++#define WSA_CMSG_FIRSTHDR(msg) (((msg)->Control.len >= sizeof(WSACMSGHDR)) ? (LPWSACMSGHDR)(msg)->Control.buf : (LPWSACMSGHDR)NULL)
++#define WSA_CMSG_NXTHDR(msg,cmsg) ((!(cmsg)) ? WSA_CMSG_FIRSTHDR(msg) : ((((u_char *)(cmsg) + WSA_CMSGHDR_ALIGN((cmsg)->cmsg_len) + sizeof(WSACMSGHDR)) > (u_char *)((msg)->Control.buf) + (msg)->Control.len) ? (LPWSACMSGHDR)NULL : (LPWSACMSGHDR)((u_char *)(cmsg) + WSA_CMSGHDR_ALIGN((cmsg)->cmsg_len))))
++#define WSA_CMSG_DATA(cmsg) ((u_char *)(cmsg) + WSA_CMSGDATA_ALIGN(sizeof(WSACMSGHDR)))
++#define WSA_CMSG_SPACE(length) (WSA_CMSGDATA_ALIGN(sizeof(WSACMSGHDR) + WSA_CMSGHDR_ALIGN(length)))
++#define WSA_CMSG_LEN(length) (WSA_CMSGDATA_ALIGN(sizeof(WSACMSGHDR)) + length)
++
++typedef INT (WINAPI * LPFN_WSARECVMSG)(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
++
+ BOOL PASCAL DisconnectEx(SOCKET,LPOVERLAPPED,DWORD,DWORD);
+ int PASCAL WSARecvMsg(SOCKET,LPWSAMSG,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+
+diff -urN include-original/ws2tcpip.h include/ws2tcpip.h
+--- include-original/ws2tcpip.h 2009-08-21 22:41:42.000000000 +0800
++++ include/ws2tcpip.h 2009-08-21 22:42:15.000000000 +0800
+@@ -78,6 +78,18 @@
+
+ #define UDP_NOCHECKSUM 1
+
++/* RFC 3768 */
++#define MCAST_JOIN_GROUP 41
++#define MCAST_LEAVE_GROUP 42
++#define MCAST_BLOCK_SOURCE 43
++#define MCAST_UNBLOCK_SOURCE 44
++#define MCAST_JOIN_SOURCE_GROUP 45
++#define MCAST_LEAVE_SOURCE_GROUP 46
++#define MCAST_MSFILTER 47
++
++#define MCAST_EXCLUDE 0
++#define MCAST_INCLUDE 1
++
+ /* INTERFACE_INFO iiFlags */
+ #define IFF_UP 1
+ #define IFF_BROADCAST 2
+@@ -104,6 +116,7 @@
+ #define AI_PASSIVE 1
+ #define AI_CANONNAME 2
+ #define AI_NUMERICHOST 4
++#define AI_ADDRCONFIG 0x20
+
+ /* getaddrinfo error codes */
+ #define EAI_AGAIN WSATRY_AGAIN
+@@ -132,6 +145,25 @@
+ struct in_addr imr_interface;
+ };
+
++struct group_req {
++ u_long gr_interface;
++ struct sockaddr_storage gr_group;
++};
++
++struct group_source_req {
++ u_long gsr_interface;
++ struct sockaddr_storage gsr_group;
++ struct sockaddr_storage gsr_source;
++};
++
++struct group_filter {
++ u_long gf_interface;
++ struct sockaddr_storage gf_group;
++ u_long gf_fmode;
++ u_long gf_numsrc;
++ struct sockaddr_storage gf_slist[1];
++};
++
+ struct ip_msfilter {
+ struct in_addr imsf_multiaddr;
+ struct in_addr imsf_interface;
+@@ -356,6 +388,13 @@
+ sockaddr_gen iiNetmask;
+ } INTERFACE_INFO, *LPINTERFACE_INFO;
+
++typedef struct _INTERFACE_INFO_EX {
++ u_long iiFlags;
++ SOCKET_ADDRESS iiAddress;
++ SOCKET_ADDRESS iiBroadcastAddress;
++ SOCKET_ADDRESS iiNetmask;
++} INTERFACE_INFO_EX, *_LPINTERFACE_INFO_EX;
++
+ /*
+ The definition above can cause problems on NT4,prior to sp4.
+ To workaround, include the following struct and typedef and
+--- include-original/winnt.h 2009-08-21 22:41:42.000000000 +0800
++++ include/winnt.h 2010-01-21 17:33:56.366162880 +0800
+@@ -43,6 +43,20 @@
+ #define UNALIGNED
+ #endif
+
++#ifdef _WIN64
++#define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG)
++#define MEMORY_ALLOCATION_ALIGNMENT 16
++#else
++#define MAX_NATURAL_ALIGNMENT sizeof(DWORD)
++#define MEMORY_ALLOCATION_ALIGNMENT 8
++#endif
++
++#ifdef __cplusplus
++#define TYPE_ALIGNMENT(t) __alignof__ (t)
++#else
++#define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; },test)
++#endif
++
+ #ifndef DECLSPEC_ALIGN
+ #ifdef __GNUC__
+ #define DECLSPEC_ALIGN(x) __attribute__((aligned(x)))