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