File Annotation

Not logged in
4e2933c620 2015-04-21        kinaba: /***********************************************************************\
4e2933c620 2015-04-21        kinaba: *                               ipexport.d                              *
4e2933c620 2015-04-21        kinaba: *                                                                       *
4e2933c620 2015-04-21        kinaba: *                       Windows API header module                       *
4e2933c620 2015-04-21        kinaba: *                                                                       *
4e2933c620 2015-04-21        kinaba: *                 Translated from MinGW Windows headers                 *
4e2933c620 2015-04-21        kinaba: *                           by Stewart Gordon                           *
4e2933c620 2015-04-21        kinaba: *                                                                       *
4e2933c620 2015-04-21        kinaba: *                       Placed into public domain                       *
4e2933c620 2015-04-21        kinaba: \***********************************************************************/
4e2933c620 2015-04-21        kinaba: module win32.ipexport;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: private import win32.windef;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const size_t MAX_ADAPTER_NAME = 128;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // IP STATUS flags
4e2933c620 2015-04-21        kinaba: enum : IP_STATUS {
4e2933c620 2015-04-21        kinaba: 	IP_SUCCESS         =     0,
4e2933c620 2015-04-21        kinaba: 	IP_STATUS_BASE     = 11000,
4e2933c620 2015-04-21        kinaba: 	IP_BUF_TOO_SMALL,
4e2933c620 2015-04-21        kinaba: 	IP_DEST_NET_UNREACHABLE,
4e2933c620 2015-04-21        kinaba: 	IP_DEST_HOST_UNREACHABLE,
4e2933c620 2015-04-21        kinaba: 	IP_DEST_PROT_UNREACHABLE,
4e2933c620 2015-04-21        kinaba: 	IP_DEST_PORT_UNREACHABLE,
4e2933c620 2015-04-21        kinaba: 	IP_NO_RESOURCES,
4e2933c620 2015-04-21        kinaba: 	IP_BAD_OPTION,
4e2933c620 2015-04-21        kinaba: 	IP_HW_ERROR,
4e2933c620 2015-04-21        kinaba: 	IP_PACKET_TOO_BIG,
4e2933c620 2015-04-21        kinaba: 	IP_REQ_TIMED_OUT,
4e2933c620 2015-04-21        kinaba: 	IP_BAD_REQ,
4e2933c620 2015-04-21        kinaba: 	IP_BAD_ROUTE,
4e2933c620 2015-04-21        kinaba: 	IP_TTL_EXPIRED_TRANSIT,
4e2933c620 2015-04-21        kinaba: 	IP_TTL_EXPIRED_REASSEM,
4e2933c620 2015-04-21        kinaba: 	IP_PARAM_PROBLEM,
4e2933c620 2015-04-21        kinaba: 	IP_SOURCE_QUENCH,
4e2933c620 2015-04-21        kinaba: 	IP_OPTION_TOO_BIG,
4e2933c620 2015-04-21        kinaba: 	IP_BAD_DESTINATION,
4e2933c620 2015-04-21        kinaba: 	IP_ADDR_DELETED,
4e2933c620 2015-04-21        kinaba: 	IP_SPEC_MTU_CHANGE,
4e2933c620 2015-04-21        kinaba: 	IP_MTU_CHANGE,
4e2933c620 2015-04-21        kinaba: 	IP_UNLOAD,      // = IP_STATUS_BASE + 22
4e2933c620 2015-04-21        kinaba: 	IP_GENERAL_FAILURE = IP_STATUS_BASE + 50,
4e2933c620 2015-04-21        kinaba: 	MAX_IP_STATUS      = IP_GENERAL_FAILURE,
4e2933c620 2015-04-21        kinaba: 	IP_PENDING         = IP_STATUS_BASE + 255
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // IP header Flags values
4e2933c620 2015-04-21        kinaba: const byte IP_FLAG_DF = 2;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // IP Option types
4e2933c620 2015-04-21        kinaba: enum : ubyte {
4e2933c620 2015-04-21        kinaba: 	IP_OPT_EOL          = 0,
4e2933c620 2015-04-21        kinaba: 	IP_OPT_NOP          = 0x01,
4e2933c620 2015-04-21        kinaba: 	IP_OPT_RR           = 0x07,
4e2933c620 2015-04-21        kinaba: 	IP_OPT_SECURITY     = 0x82,
4e2933c620 2015-04-21        kinaba: 	IP_OPT_LSRR         = 0x83,
4e2933c620 2015-04-21        kinaba: 	IP_OPT_SSRR         = 0x89,
4e2933c620 2015-04-21        kinaba: 	IP_OPT_TS           = 0x44,
4e2933c620 2015-04-21        kinaba: 	IP_OPT_SID          = 0x88,
4e2933c620 2015-04-21        kinaba: 	IP_OPT_ROUTER_ALERT = 0x94
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const ubyte MAX_OPT_SIZE = 40;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias uint IPAddr, IPMask, IP_STATUS;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct IP_OPTION_INFORMATION {
4e2933c620 2015-04-21        kinaba: 	ubyte  Ttl;
4e2933c620 2015-04-21        kinaba: 	ubyte  Tos;
4e2933c620 2015-04-21        kinaba: 	ubyte  Flags;
4e2933c620 2015-04-21        kinaba: 	ubyte  OptionsSize;
4e2933c620 2015-04-21        kinaba: 	ubyte* OptionsData;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias IP_OPTION_INFORMATION* PIP_OPTION_INFORMATION;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct ICMP_ECHO_REPLY {
4e2933c620 2015-04-21        kinaba:   IPAddr Address;
4e2933c620 2015-04-21        kinaba:   uint   Status;
4e2933c620 2015-04-21        kinaba:   uint   RoundTripTime;
4e2933c620 2015-04-21        kinaba:   ushort DataSize;
4e2933c620 2015-04-21        kinaba:   ushort Reserved;
4e2933c620 2015-04-21        kinaba:   void*  Data;
4e2933c620 2015-04-21        kinaba:   IP_OPTION_INFORMATION Options;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias ICMP_ECHO_REPLY* PICMP_ECHO_REPLY;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct IP_ADAPTER_INDEX_MAP {
4e2933c620 2015-04-21        kinaba: 	ULONG                   Index;
4e2933c620 2015-04-21        kinaba: 	WCHAR[MAX_ADAPTER_NAME] Name;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias IP_ADAPTER_INDEX_MAP* PIP_ADAPTER_INDEX_MAP;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct IP_INTERFACE_INFO {
4e2933c620 2015-04-21        kinaba: 	LONG                    NumAdapters;
4e2933c620 2015-04-21        kinaba: 	IP_ADAPTER_INDEX_MAP[1] _Adapter;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; }
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS {
4e2933c620 2015-04-21        kinaba: 	ULONG     NumAdapters;
4e2933c620 2015-04-21        kinaba: 	IPAddr[1] _Address;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	IPAddr* Address() { return _Address.ptr; }
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;