| /** | |
| * Windows API header module | |
| * | |
| * Translated from MinGW Windows headers | |
| * | |
| * Authors: Stewart Gordon | |
| * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) | |
| * Source: $(DRUNTIMESRC core/sys/windows/_ipexport.d) | |
| */ | |
| module core.sys.windows.ipexport; | |
| version (Windows): | |
| import core.sys.windows.windef; | |
| enum size_t MAX_ADAPTER_NAME = 128; | |
| // IP STATUS flags | |
| enum : IP_STATUS { | |
| IP_SUCCESS = 0, | |
| IP_STATUS_BASE = 11000, | |
| IP_BUF_TOO_SMALL, | |
| IP_DEST_NET_UNREACHABLE, | |
| IP_DEST_HOST_UNREACHABLE, | |
| IP_DEST_PROT_UNREACHABLE, | |
| IP_DEST_PORT_UNREACHABLE, | |
| IP_NO_RESOURCES, | |
| IP_BAD_OPTION, | |
| IP_HW_ERROR, | |
| IP_PACKET_TOO_BIG, | |
| IP_REQ_TIMED_OUT, | |
| IP_BAD_REQ, | |
| IP_BAD_ROUTE, | |
| IP_TTL_EXPIRED_TRANSIT, | |
| IP_TTL_EXPIRED_REASSEM, | |
| IP_PARAM_PROBLEM, | |
| IP_SOURCE_QUENCH, | |
| IP_OPTION_TOO_BIG, | |
| IP_BAD_DESTINATION, | |
| IP_ADDR_DELETED, | |
| IP_SPEC_MTU_CHANGE, | |
| IP_MTU_CHANGE, | |
| IP_UNLOAD, // = IP_STATUS_BASE + 22 | |
| IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, | |
| MAX_IP_STATUS = IP_GENERAL_FAILURE, | |
| IP_PENDING = IP_STATUS_BASE + 255 | |
| } | |
| // IP header Flags values | |
| enum byte IP_FLAG_DF = 2; | |
| // IP Option types | |
| enum : ubyte { | |
| IP_OPT_EOL = 0, | |
| IP_OPT_NOP = 0x01, | |
| IP_OPT_RR = 0x07, | |
| IP_OPT_SECURITY = 0x82, | |
| IP_OPT_LSRR = 0x83, | |
| IP_OPT_SSRR = 0x89, | |
| IP_OPT_TS = 0x44, | |
| IP_OPT_SID = 0x88, | |
| IP_OPT_ROUTER_ALERT = 0x94 | |
| } | |
| enum ubyte MAX_OPT_SIZE = 40; | |
| alias IPAddr = uint, IPMask = uint, IP_STATUS = uint; | |
| struct IP_OPTION_INFORMATION { | |
| ubyte Ttl; | |
| ubyte Tos; | |
| ubyte Flags; | |
| ubyte OptionsSize; | |
| ubyte* OptionsData; | |
| } | |
| alias PIP_OPTION_INFORMATION = IP_OPTION_INFORMATION*; | |
| struct ICMP_ECHO_REPLY { | |
| IPAddr Address; | |
| uint Status; | |
| uint RoundTripTime; | |
| ushort DataSize; | |
| ushort Reserved; | |
| void* Data; | |
| IP_OPTION_INFORMATION Options; | |
| } | |
| alias PICMP_ECHO_REPLY = ICMP_ECHO_REPLY*; | |
| struct IP_ADAPTER_INDEX_MAP { | |
| ULONG Index; | |
| WCHAR[MAX_ADAPTER_NAME] Name = 0; | |
| } | |
| alias PIP_ADAPTER_INDEX_MAP = IP_ADAPTER_INDEX_MAP*; | |
| struct IP_INTERFACE_INFO { | |
| LONG NumAdapters; | |
| IP_ADAPTER_INDEX_MAP[1] _Adapter; | |
| IP_ADAPTER_INDEX_MAP* Adapter() return { return _Adapter.ptr; } | |
| } | |
| alias PIP_INTERFACE_INFO = IP_INTERFACE_INFO*; | |
| struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { | |
| ULONG NumAdapters; | |
| IPAddr[1] _Address; | |
| IPAddr* Address() return { return _Address.ptr; } | |
| } | |
| alias PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS = IP_UNIDIRECTIONAL_ADAPTER_ADDRESS*; |