1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _IPXRTDEF_ 7 #define _IPXRTDEF_ 8 9 #include <ipxconst.h> 10 #include <ipxsap.h> 11 #include <ipxrip.h> 12 #include <stm.h> 13 #include <ipxtfflt.h> 14 15 #define IPX_ROUTER_VERSION_1 RTR_INFO_BLOCK_VERSION 16 17 #define IPX_PROTOCOL_LOCAL 1 18 #define IPX_PROTOCOL_STATIC 2 19 20 #define IF_TYPE_OTHER 1 21 #define IF_TYPE_LAN 2 22 #define IF_TYPE_WAN_ROUTER 3 23 #define IF_TYPE_WAN_WORKSTATION 4 24 #define IF_TYPE_INTERNAL 5 25 #define IF_TYPE_PERSONAL_WAN_ROUTER 6 26 #define IF_TYPE_ROUTER_WORKSTATION_DIALOUT 7 27 #define IF_TYPE_STANDALONE_WORKSTATION_DIALOUT 8 28 29 #define IPX_INTERFACE_INFO_TYPE 1 30 #define IPX_STATIC_ROUTE_INFO_TYPE 2 31 #define IPX_STATIC_SERVICE_INFO_TYPE 3 32 #define IPX_SERVICE_FILTER_INFO_TYPE 4 33 #define IPX_ROUTE_FILTER_INFO_TYPE 5 34 #define IPX_IN_TRAFFIC_FILTER_INFO_TYPE 6 35 #define IPX_ADAPTER_INFO_TYPE 7 36 #define IPXWAN_INTERFACE_INFO_TYPE 8 37 #define IPX_GLOBAL_INFO_TYPE 9 38 #define IPX_STATIC_NETBIOS_NAME_INFO_TYPE 10 39 #define IPX_IN_TRAFFIC_FILTER_GLOBAL_INFO_TYPE 11 40 #define IPX_OUT_TRAFFIC_FILTER_INFO_TYPE 12 41 #define IPX_OUT_TRAFFIC_FILTER_GLOBAL_INFO_TYPE 13 42 43 #define IPX_SMALL_ROUTING_TABLE_HASH_SIZE 31 44 #define IPX_MEDIUM_ROUTING_TABLE_HASH_SIZE 257 45 #define IPX_LARGE_ROUTING_TABLE_HASH_SIZE 2047 46 47 typedef struct _IPX_GLOBAL_INFO { 48 ULONG RoutingTableHashSize; 49 ULONG EventLogMask; 50 } IPX_GLOBAL_INFO,*PIPX_GLOBAL_INFO; 51 52 typedef struct _IPX_IF_INFO { 53 ULONG AdminState; 54 ULONG NetbiosAccept; 55 ULONG NetbiosDeliver; 56 } IPX_IF_INFO,*PIPX_IF_INFO; 57 58 #define IPX_DEDICATED_LINK 1 59 #define IPX_DIALED_LINK 2 60 61 typedef struct _IPXWAN_IF_INFO { 62 ULONG AdminState; 63 } IPXWAN_IF_INFO,*PIPXWAN_IF_INFO; 64 65 typedef struct _IPX_STATIC_ROUTE_INFO { 66 __C89_NAMELESS union { 67 ULONG DwordAlign; 68 UCHAR Network[4]; 69 }; 70 USHORT TickCount; 71 USHORT HopCount; 72 UCHAR NextHopMacAddress[6]; 73 } IPX_STATIC_ROUTE_INFO,*PIPX_STATIC_ROUTE_INFO; 74 75 typedef IPX_SERVER_ENTRY IPX_STATIC_SERVICE_INFO,*PIPX_STATIC_SERVICE_INFO; 76 77 typedef struct _IPX_STATIC_NETBIOS_NAME_INFO { 78 __C89_NAMELESS union { 79 ULONG DwordAlign; 80 UCHAR Name[16]; 81 }; 82 } IPX_STATIC_NETBIOS_NAME_INFO,*PIPX_STATIC_NETBIOS_NAME_INFO; 83 84 #define MAX_ADAPTER_NAME_LEN 48 85 86 typedef struct _IPX_ADAPTER_INFO { 87 ULONG PacketType; 88 WCHAR AdapterName[MAX_ADAPTER_NAME_LEN]; 89 } IPX_ADAPTER_INFO,*PIPX_ADAPTER_INFO; 90 91 #define AUTO_DETECT_PACKET_TYPE 0xFFFFFFFF 92 93 #define IPX_BASE_ENTRY 0 94 #define IPX_INTERFACE_TABLE 1 95 #define IPX_DEST_TABLE 2 96 #define IPX_STATIC_ROUTE_TABLE 3 97 #define IPX_SERV_TABLE 4 98 #define IPX_STATIC_SERV_TABLE 5 99 100 #define MAX_IPX_MIB_TABLES 6 101 102 #define IPX_INTERFACE_ANSI_NAME_LEN 48 103 104 typedef struct _IF_TABLE_INDEX { 105 ULONG InterfaceIndex; 106 } IF_TABLE_INDEX,*PIF_TABLE_INDEX; 107 108 typedef struct _ROUTING_TABLE_INDEX { 109 UCHAR Network[4]; 110 } ROUTING_TABLE_INDEX,*PROUTING_TABLE_INDEX; 111 112 typedef struct _STATIC_ROUTES_TABLE_INDEX { 113 ULONG InterfaceIndex; 114 UCHAR Network[4]; 115 } STATIC_ROUTES_TABLE_INDEX,*PSTATIC_ROUTES_TABLE_INDEX; 116 117 typedef struct _SERVICES_TABLE_INDEX { 118 USHORT ServiceType; 119 UCHAR ServiceName[48]; 120 } SERVICES_TABLE_INDEX,*PSERVICES_TABLE_INDEX; 121 122 typedef struct _STATIC_SERVICES_TABLE_INDEX { 123 ULONG InterfaceIndex; 124 USHORT ServiceType; 125 UCHAR ServiceName[48]; 126 } STATIC_SERVICES_TABLE_INDEX,*PSTATIC_SERVICES_TABLE_INDEX; 127 128 typedef union _IPX_MIB_INDEX { 129 IF_TABLE_INDEX InterfaceTableIndex; 130 ROUTING_TABLE_INDEX RoutingTableIndex; 131 STATIC_ROUTES_TABLE_INDEX StaticRoutesTableIndex; 132 SERVICES_TABLE_INDEX ServicesTableIndex; 133 STATIC_SERVICES_TABLE_INDEX StaticServicesTableIndex; 134 } IPX_MIB_INDEX,*PIPX_MIB_INDEX; 135 136 typedef struct _IPX_MIB_GET_INPUT_DATA { 137 ULONG TableId; 138 IPX_MIB_INDEX MibIndex; 139 } IPX_MIB_GET_INPUT_DATA,*PIPX_MIB_GET_INPUT_DATA; 140 141 typedef struct _IPXMIB_BASE { 142 ULONG OperState; 143 UCHAR PrimaryNetNumber[4]; 144 UCHAR Node[6]; 145 UCHAR SysName[IPX_INTERFACE_ANSI_NAME_LEN]; 146 ULONG MaxPathSplits; 147 ULONG IfCount; 148 ULONG DestCount; 149 ULONG ServCount; 150 } IPXMIB_BASE,*PIPXMIB_BASE; 151 152 typedef struct _IPX_IF_STATS { 153 ULONG IfOperState; 154 ULONG MaxPacketSize; 155 ULONG InHdrErrors; 156 ULONG InFiltered; 157 ULONG InNoRoutes; 158 ULONG InDiscards; 159 ULONG InDelivers; 160 ULONG OutFiltered; 161 ULONG OutDiscards; 162 ULONG OutDelivers; 163 ULONG NetbiosReceived; 164 ULONG NetbiosSent; 165 } IPX_IF_STATS,*PIPX_IF_STATS; 166 167 typedef struct _IPX_INTERFACE { 168 ULONG InterfaceIndex; 169 ULONG AdminState; 170 ULONG AdapterIndex; 171 UCHAR InterfaceName[IPX_INTERFACE_ANSI_NAME_LEN]; 172 ULONG InterfaceType; 173 ULONG MediaType; 174 UCHAR NetNumber[4]; 175 UCHAR MacAddress[6]; 176 ULONG Delay; 177 ULONG Throughput; 178 ULONG NetbiosAccept; 179 ULONG NetbiosDeliver; 180 ULONG EnableIpxWanNegotiation; 181 IPX_IF_STATS IfStats; 182 } IPX_INTERFACE,*PIPX_INTERFACE; 183 184 typedef struct _IPX_ROUTE { 185 ULONG InterfaceIndex; 186 ULONG Protocol; 187 UCHAR Network[4]; 188 USHORT TickCount; 189 USHORT HopCount; 190 UCHAR NextHopMacAddress[6]; 191 ULONG Flags; 192 } IPX_ROUTE,*PIPX_ROUTE; 193 194 typedef union _IPX_MIB_ROW { 195 IPX_INTERFACE Interface; 196 IPX_ROUTE Route; 197 IPX_SERVICE Service; 198 } IPX_MIB_ROW,*PIPX_MIB_ROW; 199 200 typedef struct _IPX_MIB_SET_INPUT_DATA { 201 ULONG TableId; 202 IPX_MIB_ROW MibRow; 203 } IPX_MIB_SET_INPUT_DATA,*PIPX_MIB_SET_INPUT_DATA; 204 #endif 205