| 1 | #ifndef _IPEXPORT_H | 
 
 
 
 
 | 2 | #define _IPEXPORT_H | 
 
 
 
 
 | 3 | #if __GNUC__ >=3 | 
 
 
 
 
 | 4 | #pragma GCC system_header | 
 
 
 
 
 | 5 | #endif | 
 
 
 
 
 | 6 |  | 
 
 
 
 
 | 7 | #ifdef __cplusplus | 
 
 
 
 
 | 8 | extern "C" { | 
 
 
 
 
 | 9 | #endif | 
 
 
 
 
 | 10 | #ifndef ANY_SIZE | 
 
 
 
 
 | 11 | #define ANY_SIZE 1 | 
 
 
 
 
 | 12 | #endif | 
 
 
 
 
 | 13 | #define MAX_ADAPTER_NAME 128 | 
 
 
 
 
 | 14 | /* IP STATUS flags */ | 
 
 
 
 
 | 15 | #define IP_STATUS_BASE 11000 | 
 
 
 
 
 | 16 | #define IP_SUCCESS  0 | 
 
 
 
 
 | 17 | #define IP_BUF_TOO_SMALL    (IP_STATUS_BASE + 1) | 
 
 
 
 
 | 18 | #define IP_DEST_NET_UNREACHABLE (IP_STATUS_BASE + 2) | 
 
 
 
 
 | 19 | #define IP_DEST_HOST_UNREACHABLE    (IP_STATUS_BASE + 3) | 
 
 
 
 
 | 20 | #define IP_DEST_PROT_UNREACHABLE    (IP_STATUS_BASE + 4) | 
 
 
 
 
 | 21 | #define IP_DEST_PORT_UNREACHABLE    (IP_STATUS_BASE + 5) | 
 
 
 
 
 | 22 | #define IP_NO_RESOURCES (IP_STATUS_BASE + 6) | 
 
 
 
 
 | 23 | #define IP_BAD_OPTION   (IP_STATUS_BASE + 7) | 
 
 
 
 
 | 24 | #define IP_HW_ERROR (IP_STATUS_BASE + 8) | 
 
 
 
 
 | 25 | #define IP_PACKET_TOO_BIG   (IP_STATUS_BASE + 9) | 
 
 
 
 
 | 26 | #define IP_REQ_TIMED_OUT    (IP_STATUS_BASE + 10) | 
 
 
 
 
 | 27 | #define IP_BAD_REQ  (IP_STATUS_BASE + 11) | 
 
 
 
 
 | 28 | #define IP_BAD_ROUTE    (IP_STATUS_BASE + 12) | 
 
 
 
 
 | 29 | #define IP_TTL_EXPIRED_TRANSIT  (IP_STATUS_BASE + 13) | 
 
 
 
 
 | 30 | #define IP_TTL_EXPIRED_REASSEM  (IP_STATUS_BASE + 14) | 
 
 
 
 
 | 31 | #define IP_PARAM_PROBLEM    (IP_STATUS_BASE + 15) | 
 
 
 
 
 | 32 | #define IP_SOURCE_QUENCH    (IP_STATUS_BASE + 16) | 
 
 
 
 
 | 33 | #define IP_OPTION_TOO_BIG   (IP_STATUS_BASE + 17) | 
 
 
 
 
 | 34 | #define IP_BAD_DESTINATION  (IP_STATUS_BASE + 18) | 
 
 
 
 
 | 35 | #define IP_ADDR_DELETED (IP_STATUS_BASE + 19) | 
 
 
 
 
 | 36 | #define IP_SPEC_MTU_CHANGE  (IP_STATUS_BASE + 20) | 
 
 
 
 
 | 37 | #define IP_MTU_CHANGE   (IP_STATUS_BASE + 21) | 
 
 
 
 
 | 38 | #define IP_UNLOAD   (IP_STATUS_BASE + 22) | 
 
 
 
 
 | 39 | #define IP_GENERAL_FAILURE  (IP_STATUS_BASE + 50) | 
 
 
 
 
 | 40 | #define MAX_IP_STATUS   IP_GENERAL_FAILURE | 
 
 
 
 
 | 41 | #define IP_PENDING  (IP_STATUS_BASE + 255) | 
 
 
 
 
 | 42 | /* IP header Flags values */ | 
 
 
 
 
 | 43 | #define IP_FLAG_DF  0x2 | 
 
 
 
 
 | 44 | /*  IP Option types */ | 
 
 
 
 
 | 45 | #define IP_OPT_EOL  0 | 
 
 
 
 
 | 46 | #define IP_OPT_NOP  1 | 
 
 
 
 
 | 47 | #define IP_OPT_SECURITY 0x82 | 
 
 
 
 
 | 48 | #define IP_OPT_LSRR 0x83 | 
 
 
 
 
 | 49 | #define IP_OPT_SSRR 0x89 | 
 
 
 
 
 | 50 | #define IP_OPT_RR   0x7 | 
 
 
 
 
 | 51 | #define IP_OPT_TS   0x44 | 
 
 
 
 
 | 52 | #define IP_OPT_SID  0x88 | 
 
 
 
 
 | 53 | #define IP_OPT_ROUTER_ALERT 0x94 | 
 
 
 
 
 | 54 | #define MAX_OPT_SIZE    40 | 
 
 
 
 
 | 55 |  | 
 
 
 
 
 | 56 | typedef unsigned long IPAddr, IPMask, IP_STATUS; | 
 
 
 
 
 | 57 | typedef struct ip_option_information { | 
 
 
 
 
 | 58 | unsigned char Ttl; | 
 
 
 
 
 | 59 | unsigned char Tos; | 
 
 
 
 
 | 60 | unsigned char Flags; | 
 
 
 
 
 | 61 | unsigned char OptionsSize; | 
 
 
 
 
 | 62 | unsigned char* OptionsData; | 
 
 
 
 
 | 63 | }IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION; | 
 
 
 
 
 | 64 | typedef struct icmp_echo_reply { | 
 
 
 
 
 | 65 | IPAddr        Address; | 
 
 
 
 
 | 66 | unsigned long Status; | 
 
 
 
 
 | 67 | unsigned long RoundTripTime; | 
 
 
 
 
 | 68 | unsigned short    DataSize; | 
 
 
 
 
 | 69 | unsigned short    Reserved; | 
 
 
 
 
 | 70 | void* Data; | 
 
 
 
 
 | 71 | struct ip_option_information   Options; | 
 
 
 
 
 | 72 | } ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY; | 
 
 
 
 
 | 73 | typedef struct { | 
 
 
 
 
 | 74 | ULONG Index; | 
 
 
 
 
 | 75 | WCHAR  Name[MAX_ADAPTER_NAME]; | 
 
 
 
 
 | 76 | } IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP; | 
 
 
 
 
 | 77 | typedef struct { | 
 
 
 
 
 | 78 | LONG NumAdapters; | 
 
 
 
 
 | 79 | IP_ADAPTER_INDEX_MAP Adapter[ANY_SIZE]; | 
 
 
 
 
 | 80 | } IP_INTERFACE_INFO, *PIP_INTERFACE_INFO; | 
 
 
 
 
 | 81 | typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { | 
 
 
 
 
 | 82 | ULONG NumAdapters; | 
 
 
 
 
 | 83 | IPAddr Address[1]; | 
 
 
 
 
 | 84 | } IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; | 
 
 
 
 
 | 85 | #ifdef __cplusplus | 
 
 
 
 
 | 86 | } | 
 
 
 
 
 | 87 | #endif | 
 
 
 
 
 | 88 | #endif /* _IPEXPORT_H */ |