1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_ipexport.d) 9 */ 10 /// Automatically imported and edited from the druntime module 11 /// core.sys.windows.ipexport for the auto-generated win32 package. 12 module win32.ipexport; 13 //version (Windows): 14 @system: 15 16 import win32.windef; 17 18 enum size_t MAX_ADAPTER_NAME = 128; 19 20 // IP STATUS flags 21 enum : IP_STATUS { 22 IP_SUCCESS = 0, 23 IP_STATUS_BASE = 11000, 24 IP_BUF_TOO_SMALL, 25 IP_DEST_NET_UNREACHABLE, 26 IP_DEST_HOST_UNREACHABLE, 27 IP_DEST_PROT_UNREACHABLE, 28 IP_DEST_PORT_UNREACHABLE, 29 IP_NO_RESOURCES, 30 IP_BAD_OPTION, 31 IP_HW_ERROR, 32 IP_PACKET_TOO_BIG, 33 IP_REQ_TIMED_OUT, 34 IP_BAD_REQ, 35 IP_BAD_ROUTE, 36 IP_TTL_EXPIRED_TRANSIT, 37 IP_TTL_EXPIRED_REASSEM, 38 IP_PARAM_PROBLEM, 39 IP_SOURCE_QUENCH, 40 IP_OPTION_TOO_BIG, 41 IP_BAD_DESTINATION, 42 IP_ADDR_DELETED, 43 IP_SPEC_MTU_CHANGE, 44 IP_MTU_CHANGE, 45 IP_UNLOAD, // = IP_STATUS_BASE + 22 46 IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, 47 MAX_IP_STATUS = IP_GENERAL_FAILURE, 48 IP_PENDING = IP_STATUS_BASE + 255 49 } 50 51 // IP header Flags values 52 enum byte IP_FLAG_DF = 2; 53 54 // IP Option types 55 enum : ubyte { 56 IP_OPT_EOL = 0, 57 IP_OPT_NOP = 0x01, 58 IP_OPT_RR = 0x07, 59 IP_OPT_SECURITY = 0x82, 60 IP_OPT_LSRR = 0x83, 61 IP_OPT_SSRR = 0x89, 62 IP_OPT_TS = 0x44, 63 IP_OPT_SID = 0x88, 64 IP_OPT_ROUTER_ALERT = 0x94 65 } 66 67 enum ubyte MAX_OPT_SIZE = 40; 68 69 alias uint IPAddr, IPMask, IP_STATUS; 70 71 struct IP_OPTION_INFORMATION { 72 ubyte Ttl; 73 ubyte Tos; 74 ubyte Flags; 75 ubyte OptionsSize; 76 ubyte* OptionsData; 77 } 78 alias IP_OPTION_INFORMATION* PIP_OPTION_INFORMATION; 79 80 struct ICMP_ECHO_REPLY { 81 IPAddr Address; 82 uint Status; 83 uint RoundTripTime; 84 ushort DataSize; 85 ushort Reserved; 86 void* Data; 87 IP_OPTION_INFORMATION Options; 88 } 89 alias ICMP_ECHO_REPLY* PICMP_ECHO_REPLY; 90 91 struct IP_ADAPTER_INDEX_MAP { 92 ULONG Index; 93 WCHAR[MAX_ADAPTER_NAME] Name = 0; 94 } 95 alias IP_ADAPTER_INDEX_MAP* PIP_ADAPTER_INDEX_MAP; 96 97 struct IP_INTERFACE_INFO { 98 LONG NumAdapters; 99 IP_ADAPTER_INDEX_MAP[1] _Adapter; 100 101 IP_ADAPTER_INDEX_MAP* Adapter() return { return _Adapter.ptr; } 102 } 103 alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO; 104 105 struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { 106 ULONG NumAdapters; 107 IPAddr[1] _Address; 108 109 IPAddr* Address() return { return _Address.ptr; } 110 } 111 alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;