diff options
| author | seyko <seyko2@gmail.com> | 2015-05-14 01:27:46 +0300 |
|---|---|---|
| committer | seyko <seyko2@gmail.com> | 2015-05-14 01:27:46 +0300 |
| commit | 101cc8747f767344d38566bd229f1761ad96f744 (patch) | |
| tree | ef800583f7994bb56c6c32bf4256f44727c5d48d /win32/include/winapi/ws2ipdef.h | |
| parent | 80322adaa0544eedc7198ed4c529a41856f66f43 (diff) | |
| download | tinycc-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.h | 94 |
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*/ |
