source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/routprot.h@ 1170

Last change on this file since 1170 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 11.0 KB
Line 
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 _ROUTPROT_H_
7#define _ROUTPROT_H_
8
9#include "stm.h"
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15#define RF_ROUTING 0x00000001
16#define RF_DEMAND_UPDATE_ROUTES 0x00000004
17#define RF_ADD_ALL_INTERFACES 0x00000010
18#define RF_MULTICAST 0x00000020
19#define RF_POWER 0x00000040
20
21#if MPR50
22#define MS_ROUTER_VERSION 0x00000500
23#else
24#error Router version not defined
25#endif
26
27 typedef enum _ROUTING_PROTOCOL_EVENTS {
28 ROUTER_STOPPED,SAVE_GLOBAL_CONFIG_INFO,SAVE_INTERFACE_CONFIG_INFO,UPDATE_COMPLETE
29 } ROUTING_PROTOCOL_EVENTS;
30
31 typedef enum _NET_INTERFACE_TYPE {
32 PERMANENT,DEMAND_DIAL,LOCAL_WORKSTATION_DIAL,REMOTE_WORKSTATION_DIAL
33 } NET_INTERFACE_TYPE;
34
35#define IR_PROMISCUOUS 0
36#define IR_PROMISCUOUS_MULTICAST 1
37
38 typedef struct _SUPPORT_FUNCTIONS {
39 __C89_NAMELESS union {
40 ULONGLONG _Align8;
41 __C89_NAMELESS struct {
42 DWORD dwVersion;
43 DWORD dwReserved;
44 };
45 };
46 DWORD (WINAPI *DemandDialRequest)(DWORD ProtocolId,DWORD InterfaceIndex);
47 DWORD (WINAPI *SetInterfaceReceiveType)(DWORD ProtocolId,DWORD InterfaceIndex,DWORD InterfaceReceiveType,WINBOOL bActivate);
48 DWORD (WINAPI *ValidateRoute)(DWORD ProtocolId,PVOID RouteInfo,PVOID DestAddress);
49 DWORD (WINAPI *MIBEntryCreate)(DWORD dwRoutingPid,DWORD dwEntrySize,LPVOID lpEntry);
50 DWORD (WINAPI *MIBEntryDelete)(DWORD dwRoutingPid,DWORD dwEntrySize,LPVOID lpEntry);
51 DWORD (WINAPI *MIBEntrySet)(DWORD dwRoutingPid,DWORD dwEntrySize,LPVOID lpEntry);
52 DWORD (WINAPI *MIBEntryGet)(DWORD dwRoutingPid,DWORD dwInEntrySize,LPVOID lpInEntry,LPDWORD lpOutEntrySize,LPVOID lpOutEntry);
53 DWORD (WINAPI *MIBEntryGetFirst)(DWORD dwRoutingPid,DWORD dwInEntrySize,LPVOID lpInEntry,LPDWORD lpOutEntrySize,LPVOID lpOutEntry);
54 DWORD (WINAPI *MIBEntryGetNext)(DWORD dwRoutingPid,DWORD dwInEntrySize,LPVOID lpInEntry,LPDWORD lpOutEntrySize,LPVOID lpOutEntry);
55 DWORD (WINAPI *GetRouterId)(VOID);
56 WINBOOL (WINAPI *HasMulticastBoundary)(DWORD dwIfIndex,DWORD dwGroupAddress);
57 } SUPPORT_FUNCTIONS,*PSUPPORT_FUNCTIONS;
58
59#define PROTO_IP_OTHER 1
60#define PROTO_IP_LOCAL 2
61#define PROTO_IP_NETMGMT 3
62#define PROTO_IP_ICMP 4
63#define PROTO_IP_EGP 5
64#define PROTO_IP_GGP 6
65#define PROTO_IP_HELLO 7
66#define PROTO_IP_RIP 8
67#define PROTO_IP_IS_IS 9
68#define PROTO_IP_ES_IS 10
69#define PROTO_IP_CISCO 11
70#define PROTO_IP_BBN 12
71#define PROTO_IP_OSPF 13
72#define PROTO_IP_BGP 14
73
74#define PROTO_IP_MSDP 9
75#define PROTO_IP_IGMP 10
76#define PROTO_IP_BGMP 11
77
78#define PROTO_IP_VRRP 112
79#define PROTO_IP_BOOTP 9999
80#define PROTO_IP_NT_AUTOSTATIC 10002
81#define PROTO_IP_DNS_PROXY 10003
82#define PROTO_IP_DHCP_ALLOCATOR 10004
83#define PROTO_IP_NAT 10005
84#define PROTO_IP_NT_STATIC 10006
85#define PROTO_IP_NT_STATIC_NON_DOD 10007
86#define PROTO_IP_DIFFSERV 10008
87#define PROTO_IP_MGM 10009
88#define PROTO_IP_ALG 10010
89#define PROTO_IP_H323 10011
90#define PROTO_IP_FTP 10012
91#define PROTO_IP_DTP 10013
92
93#define PROTOCOL_ID(Type,VendorId,ProtocolId) (((Type & 0x03)<<30)|((VendorId & 0x3FFF)<<16)|(ProtocolId & 0xFFFF))
94
95#define TYPE_FROM_PROTO_ID(X) (((X) >> 30) & 0x03)
96#define VENDOR_FROM_PROTO_ID(X) (((X) >> 16) & 0x3FFF)
97#define PROTO_FROM_PROTO_ID(X) ((X) & 0xFFFF)
98
99#define PROTO_TYPE_UCAST 0
100#define PROTO_TYPE_MCAST 1
101#define PROTO_TYPE_MS0 2
102#define PROTO_TYPE_MS1 3
103
104#define PROTO_VENDOR_MS0 0x0000
105#define PROTO_VENDOR_MS1 0x137
106#define PROTO_VENDOR_MS2 0x3FFF
107
108#define MS_IP_BOOTP PROTOCOL_ID(PROTO_TYPE_UCAST,PROTO_VENDOR_MS0,PROTO_IP_BOOTP)
109#define MS_IP_RIP PROTOCOL_ID(PROTO_TYPE_UCAST,PROTO_VENDOR_MS0,PROTO_IP_RIP)
110#define MS_IP_OSPF PROTOCOL_ID(PROTO_TYPE_UCAST,PROTO_VENDOR_MS0,PROTO_IP_OSPF)
111#define MS_IP_BGP PROTOCOL_ID(PROTO_TYPE_UCAST,PROTO_VENDOR_MS1,PROTO_IP_BGP)
112#define MS_IP_IGMP PROTOCOL_ID(PROTO_TYPE_MCAST,PROTO_VENDOR_MS1,PROTO_IP_IGMP)
113#define MS_IP_BGMP PROTOCOL_ID(PROTO_TYPE_MCAST,PROTO_VENDOR_MS1,PROTO_IP_BGMP)
114#define MS_IP_MSDP PROTOCOL_ID(PROTO_TYPE_MCAST,PROTO_VENDOR_MS1,PROTO_IP_MSDP)
115#define MS_IP_DNS_PROXY PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_DNS_PROXY)
116#define MS_IP_DHCP_ALLOCATOR PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_DHCP_ALLOCATOR)
117#define MS_IP_NAT PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_NAT)
118#define MS_IP_DIFFSERV PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_DIFFSERV)
119#define MS_IP_MGM PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_MGM)
120#define MS_IP_VRRP PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_VRRP)
121#define MS_IP_DTP PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_DTP)
122#define MS_IP_H323 PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_H323)
123#define MS_IP_FTP PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_FTP)
124#define MS_IP_ALG PROTOCOL_ID(PROTO_TYPE_MS0,PROTO_VENDOR_MS1,PROTO_IP_ALG)
125
126#define IPX_PROTOCOL_BASE 0x0001ffff
127#define IPX_PROTOCOL_RIP IPX_PROTOCOL_BASE + 1
128#define IPX_PROTOCOL_SAP IPX_PROTOCOL_BASE + 2
129#define IPX_PROTOCOL_NLSP IPX_PROTOCOL_BASE + 3
130
131 typedef struct _UPDATE_COMPLETE_MESSAGE {
132 ULONG InterfaceIndex;
133 ULONG UpdateType;
134 ULONG UpdateStatus;
135 } UPDATE_COMPLETE_MESSAGE,*PUPDATE_COMPLETE_MESSAGE;
136
137 typedef union _MESSAGE {
138 UPDATE_COMPLETE_MESSAGE UpdateCompleteMessage;
139 DWORD InterfaceIndex;
140 } MESSAGE,*PMESSAGE;
141
142#define RIS_INTERFACE_ADDRESS_CHANGE 0
143#define RIS_INTERFACE_ENABLED 1
144#define RIS_INTERFACE_DISABLED 2
145#define RIS_INTERFACE_MEDIA_PRESENT 3
146#define RIS_INTERFACE_MEDIA_ABSENT 4
147
148 typedef struct IPX_ADAPTER_BINDING_INFO {
149 ULONG AdapterIndex;
150 UCHAR Network[4];
151 UCHAR LocalNode[6];
152 UCHAR RemoteNode[6];
153 ULONG MaxPacketSize;
154 ULONG LinkSpeed;
155 } IPX_ADAPTER_BINDING_INFO,*PIPX_ADAPTER_BINDING_INFO;
156
157 typedef struct IP_LOCAL_BINDING {
158 DWORD Address;
159 DWORD Mask;
160 } IP_LOCAL_BINDING,*PIP_LOCAL_BINDING;
161
162 typedef struct IP_ADAPTER_BINDING_INFO {
163 ULONG AddressCount;
164 DWORD RemoteAddress;
165 ULONG Mtu;
166 ULONGLONG Speed;
167 IP_LOCAL_BINDING Address[0];
168 } IP_ADAPTER_BINDING_INFO,*PIP_ADAPTER_BINDING_INFO;
169
170#define SIZEOF_IP_BINDING(X) (FIELD_OFFSET(IP_ADAPTER_BINDING_INFO,Address[0]) + ((X) *sizeof(IP_LOCAL_BINDING)))
171
172 typedef DWORD (WINAPI *PSTART_PROTOCOL)(HANDLE NotificationEvent,PSUPPORT_FUNCTIONS SupportFunctions,LPVOID GlobalInfo,ULONG StructureVersion,ULONG StructureSize,ULONG StructureCount);
173 typedef DWORD (WINAPI *PSTART_COMPLETE)(VOID);
174 typedef DWORD (WINAPI *PSTOP_PROTOCOL)(VOID);
175 typedef DWORD (WINAPI *PADD_INTERFACE)(LPWSTR InterfaceName,ULONG InterfaceIndex,NET_INTERFACE_TYPE InterfaceType,DWORD MediaType,WORD AccessType,WORD ConnectionType,PVOID InterfaceInfo,ULONG StructureVersion,ULONG StructureSize,ULONG StructureCount);
176 typedef DWORD (WINAPI *PDELETE_INTERFACE)(ULONG InterfaceIndex);
177 typedef DWORD (WINAPI *PGET_EVENT_MESSAGE)(ROUTING_PROTOCOL_EVENTS *Event,MESSAGE *Result);
178 typedef DWORD (WINAPI *PGET_INTERFACE_INFO)(ULONG InterfaceIndex,PVOID InterfaceInfo,PULONG BufferSize,PULONG StructureVersion,PULONG StructureSize,PULONG StructureCount);
179 typedef DWORD (WINAPI *PSET_INTERFACE_INFO)(ULONG InterfaceIndex,PVOID InterfaceInfo,ULONG StructureVersion,ULONG StructureSize,ULONG StructureCount);
180 typedef DWORD (WINAPI *PINTERFACE_STATUS)(ULONG InterfaceIndex,WINBOOL InterfaceActive,DWORD StatusType,PVOID StatusInfo);
181 typedef DWORD (WINAPI *PQUERY_POWER)(DWORD PowerType);
182 typedef DWORD (WINAPI *PSET_POWER)(DWORD PowerType);
183 typedef DWORD (WINAPI *PGET_GLOBAL_INFO)(PVOID GlobalInfo,PULONG BufferSize,PULONG StructureVersion,PULONG StructureSize,PULONG StructureCount);
184 typedef DWORD (WINAPI *PSET_GLOBAL_INFO)(PVOID GlobalInfo,ULONG StructureVersion,ULONG StructureSize,ULONG StructureCount);
185 typedef DWORD (WINAPI *PDO_UPDATE_ROUTES)(ULONG InterfaceIndex);
186 typedef DWORD (WINAPI *PMIB_CREATE)(ULONG InputDataSize,PVOID InputData);
187 typedef DWORD (WINAPI *PMIB_DELETE)(ULONG InputDataSize,PVOID InputData);
188 typedef DWORD (WINAPI *PMIB_GET)(ULONG InputDataSize,PVOID InputData,PULONG OutputDataSize,PVOID OutputData);
189 typedef DWORD (WINAPI *PMIB_SET)(ULONG InputDataSize,PVOID InputData);
190 typedef DWORD (WINAPI *PMIB_GET_FIRST)(ULONG InputDataSize,PVOID InputData,PULONG OutputDataSize,PVOID OutputData);
191 typedef DWORD (WINAPI *PMIB_GET_NEXT)(ULONG InputDataSize,PVOID InputData,PULONG OutputDataSize,PVOID OutputData);
192 typedef DWORD (WINAPI *PMIB_SET_TRAP_INFO)(HANDLE Event,ULONG InputDataSize,PVOID InputData,PULONG OutputDataSize,PVOID OutputData);
193 typedef DWORD (WINAPI *PMIB_GET_TRAP_INFO)(ULONG InputDataSize,PVOID InputData,PULONG OutputDataSize,PVOID OutputData);
194 typedef DWORD (WINAPI *PCONNECT_CLIENT)(ULONG InterfaceIndex,PVOID ClientAddress);
195 typedef DWORD (WINAPI *PDISCONNECT_CLIENT)(ULONG InterfaceIndex,PVOID ClientAddress);
196
197#define MRINFO_TUNNEL_FLAG 0x01
198#define MRINFO_PIM_FLAG 0x04
199#define MRINFO_DOWN_FLAG 0x10
200#define MRINFO_DISABLED_FLAG 0x20
201#define MRINFO_QUERIER_FLAG 0x40
202#define MRINFO_LEAF_FLAG 0x80
203
204 typedef DWORD (WINAPI *PGET_NEIGHBORS)(DWORD InterfaceIndex,PDWORD NeighborList,PDWORD NeighborListSize,PBYTE InterfaceFlags);
205
206#define MFE_NO_ERROR 0
207#define MFE_REACHED_CORE 1
208
209#define MFE_OIF_PRUNED 5
210
211#define MFE_PRUNED_UPSTREAM 4
212#define MFE_OLD_ROUTER 11
213
214#define MFE_NOT_FORWARDING 2
215#define MFE_WRONG_IF 3
216#define MFE_BOUNDARY_REACHED 6
217#define MFE_NO_MULTICAST 7
218#define MFE_IIF 8
219#define MFE_NO_ROUTE 9
220#define MFE_NOT_LAST_HOP 10
221#define MFE_PROHIBITED 12
222#define MFE_NO_SPACE 13
223
224 typedef DWORD (WINAPI *PGET_MFE_STATUS)(DWORD InterfaceIndex,DWORD GroupAddress,DWORD SourceAddress,PBYTE StatusCode);
225
226 typedef struct _MPR50_ROUTING_CHARACTERISTICS {
227 DWORD dwVersion;
228 DWORD dwProtocolId;
229 DWORD fSupportedFunctionality;
230 PSTART_PROTOCOL pfnStartProtocol;
231 PSTART_COMPLETE pfnStartComplete;
232 PSTOP_PROTOCOL pfnStopProtocol;
233 PGET_GLOBAL_INFO pfnGetGlobalInfo;
234 PSET_GLOBAL_INFO pfnSetGlobalInfo;
235 PQUERY_POWER pfnQueryPower;
236 PSET_POWER pfnSetPower;
237 PADD_INTERFACE pfnAddInterface;
238 PDELETE_INTERFACE pfnDeleteInterface;
239 PINTERFACE_STATUS pfnInterfaceStatus;
240 PGET_INTERFACE_INFO pfnGetInterfaceInfo;
241 PSET_INTERFACE_INFO pfnSetInterfaceInfo;
242 PGET_EVENT_MESSAGE pfnGetEventMessage;
243 PDO_UPDATE_ROUTES pfnUpdateRoutes;
244 PCONNECT_CLIENT pfnConnectClient;
245 PDISCONNECT_CLIENT pfnDisconnectClient;
246 PGET_NEIGHBORS pfnGetNeighbors;
247 PGET_MFE_STATUS pfnGetMfeStatus;
248 PMIB_CREATE pfnMibCreateEntry;
249 PMIB_DELETE pfnMibDeleteEntry;
250 PMIB_GET pfnMibGetEntry;
251 PMIB_SET pfnMibSetEntry;
252 PMIB_GET_FIRST pfnMibGetFirstEntry;
253 PMIB_GET_NEXT pfnMibGetNextEntry;
254 PMIB_SET_TRAP_INFO pfnMibSetTrapInfo;
255 PMIB_GET_TRAP_INFO pfnMibGetTrapInfo;
256 } MPR50_ROUTING_CHARACTERISTICS;
257
258#if MPR50
259 typedef MPR50_ROUTING_CHARACTERISTICS MPR_ROUTING_CHARACTERISTICS;
260#endif
261
262 typedef MPR_ROUTING_CHARACTERISTICS *PMPR_ROUTING_CHARACTERISTICS;
263
264#define REGISTER_PROTOCOL_ENTRY_POINT RegisterProtocol
265#define REGISTER_PROTOCOL_ENTRY_POINT_STRING "RegisterProtocol"
266
267 typedef DWORD (WINAPI *PREGISTER_PROTOCOL) (PMPR_ROUTING_CHARACTERISTICS pRoutingChar,PMPR_SERVICE_CHARACTERISTICS pServiceChar);
268
269#ifdef __cplusplus
270}
271#endif
272#endif
Note: See TracBrowser for help on using the repository browser.