aboutsummaryrefslogtreecommitdiff
path: root/win32/include/winapi/ws2ipdef.h
diff options
context:
space:
mode:
authorseyko <seyko2@gmail.com>2015-05-14 01:27:46 +0300
committerseyko <seyko2@gmail.com>2015-05-14 01:27:46 +0300
commit101cc8747f767344d38566bd229f1761ad96f744 (patch)
treeef800583f7994bb56c6c32bf4256f44727c5d48d /win32/include/winapi/ws2ipdef.h
parent80322adaa0544eedc7198ed4c529a41856f66f43 (diff)
downloadtinycc-101cc8747f767344d38566bd229f1761ad96f744.tar.gz
tinycc-101cc8747f767344d38566bd229f1761ad96f744.tar.bz2
win32/include/winapi changes from https://github.com/run4flat/tinycc.git
just for testing. Is it needed? I'm not a MSYS citizen. run4flat is a tcc fork by David Mertens that knows how to work with multiple symbol tables. Excelent work. A good descriptions of the tcc internals inside a code comments.
Diffstat (limited to 'win32/include/winapi/ws2ipdef.h')
-rw-r--r--win32/include/winapi/ws2ipdef.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/win32/include/winapi/ws2ipdef.h b/win32/include/winapi/ws2ipdef.h
new file mode 100644
index 0000000..cb503bd
--- /dev/null
+++ b/win32/include/winapi/ws2ipdef.h
@@ -0,0 +1,94 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef _INC_WS2IPDEF
+#define _INC_WS2IPDEF
+
+#include <in6addr.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct ipv6_mreq {
+ struct in6_addr ipv6mr_multiaddr;
+ unsigned int ipv6mr_interface;
+} IPV6_MREQ;
+
+struct sockaddr_in6_old {
+ short sin6_family;
+ u_short sin6_port;
+ u_long sin6_flowinfo;
+ struct in6_addr sin6_addr;
+};
+
+typedef union sockaddr_gen {
+ struct sockaddr Address;
+ struct sockaddr_in AddressIn;
+ struct sockaddr_in6_old AddressIn6;
+} sockaddr_gen;
+
+struct sockaddr_in6 {
+ short sin6_family;
+ u_short sin6_port;
+ u_long sin6_flowinfo;
+ struct in6_addr sin6_addr;
+ __C89_NAMELESS union {
+ u_long sin6_scope_id;
+ SCOPE_ID sin6_scope_struct;
+ };
+};
+
+typedef struct sockaddr_in6 SOCKADDR_IN6;
+typedef struct sockaddr_in6 *PSOCKADDR_IN6;
+typedef struct sockaddr_in6 *LPSOCKADDR_IN6;
+
+typedef struct _INTERFACE_INFO {
+ u_long iiFlags;
+ sockaddr_gen iiAddress;
+ sockaddr_gen iiBroadcastAddress;
+ sockaddr_gen iiNetmask;
+} INTERFACE_INFO,*LPINTERFACE_INFO;
+
+typedef enum _MULTICAST_MODE_TYPE {
+ MCAST_INCLUDE = 0,
+ MCAST_EXCLUDE
+} MULTICAST_MODE_TYPE;
+
+typedef struct _sockaddr_in6_pair {
+ PSOCKADDR_IN6 SourceAddress;
+ PSOCKADDR_IN6 DestinationAddress;
+} SOCKADDR_IN6_PAIR, *PSOCKADDR_IN6_PAIR;
+
+typedef union _SOCKADDR_INET {
+ SOCKADDR_IN Ipv4;
+ SOCKADDR_IN6 Ipv6;
+ ADDRESS_FAMILY si_family;
+} SOCKADDR_INET, *PSOCKADDR_INET;
+
+typedef struct group_filter {
+ ULONG gf_interface;
+ SOCKADDR_STORAGE gf_group;
+ MULTICAST_MODE_TYPE gf_fmode;
+ ULONG gf_numsrc;
+ SOCKADDR_STORAGE gf_slist[1];
+} GROUP_FILTER, *PGROUP_FILTER;
+
+typedef struct group_req {
+ ULONG gr_interface;
+ SOCKADDR_STORAGE gr_group;
+} GROUP_REQ, *PGROUP_REQ;
+
+typedef struct group_source_req {
+ ULONG gsr_interface;
+ SOCKADDR_STORAGE gsr_group;
+ SOCKADDR_STORAGE gsr_source;
+} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*_INC_WS2IPDEF*/