This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/routprot.h

328 lines
12 KiB
C

/*
* routprot.h Routing protocol definitions
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef _ROUTPROT_H_
#define _ROUTPROT_H_
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#include <stm.h>
#include <nldef.h>
#include <in6addr.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Supported functionality flags */
#define RF_ROUTING 0x00000001L
#define RF_DEMAND_UPDATE_ROUTES 0x00000004L
#define RF_ADD_ALL_INTERFACES 0x00000010L
#define RF_MULTICAST 0x00000020L
#define RF_POWER 0x00000040L
/* Router version number */
#ifdef MPR50
#define MS_ROUTER_VERSION 0x00000500L
#else
#error Define MPR50 before including routprot.h.
#endif
/* Interface receive types */
#define IR_PROMISCUOUS 0
#define IR_PROMISCUOUS_MULTICAST 1
/* IP protocols */
#define PROTO_IP_MSDP 9
#define PROTO_IP_IGMP 10
#define PROTO_IP_BGMP 11
#define PROTO_IP_VRRP 112
#define PROTO_IP_BOOTP 9999
#define PROTO_IP_NT_AUTOSTATIC 10002
#define PROTO_IP_DNS_PROXY 10003
#define PROTO_IP_DHCP_ALLOCATOR 10004
#define PROTO_IP_NAT 10005
#define PROTO_IP_NT_STATIC 10006
#define PROTO_IP_NT_STATIC_NON_DOD 10007
#define PROTO_IP_DIFFSERV 10008
#define PROTO_IP_MGM 10009
#define PROTO_IP_ALG 10010
#define PROTO_IP_H323 10011
#define PROTO_IP_FTP 10012
#define PROTO_IP_DTP 10013
/* IPv6 protocols */
#define PROTO_IPV6_DHCP 999
/* Macro to manipulate protocol identifiers */
#define PROTOCOL_ID( p1, p2, p3 ) \
((((p1) & 0x03) << 30) | (((p2) & 0x3FFF) << 16) | ((p3) & 0xFFFF))
#define TYPE_FROM_PROTO_ID( x ) (((x) >> 30) & 0x03)
#define VENDOR_FROM_PROTO_ID( x ) (((x) >> 16) & 0x3FFF)
#define PROTO_FROM_PROTO_ID( x ) ((x) & 0xFFFF)
/* Protocol types */
#define PROTO_TYPE_UCAST 0
#define PROTO_TYPE_MCAST 1
#define PROTO_TYPE_MS0 2
#define PROTO_TYPE_MS1 3
/* Protocol vendors */
#define PROTO_VENDOR_MS0 0x0000
#define PROTO_VENDOR_MS1 0x0137
#define PROTO_VENDOR_MS2 0x3FFF
/* Microsoft protocol identifiers */
#define MS_IPV6_DHCP \
PROTOCOL_ID( PROTO_TYPE_UCAST, PROTO_VENDOR_MS0, PROTO_IPV6_DHCP )
#define MS_IP_BOOTP \
PROTOCOL_ID( PROTO_TYPE_UCAST, PROTO_VENDOR_MS0, PROTO_IP_BOOTP )
#define MS_IP_RIP \
PROTOCOL_ID( PROTO_TYPE_UCAST, PROTO_VENDOR_MS0, PROTO_IP_RIP )
#define MS_IP_OSPF \
PROTOCOL_ID( PROTO_TYPE_UCAST, PROTO_VENDOR_MS0, PROTO_IP_OSPF )
#define MS_IP_BGP \
PROTOCOL_ID( PROTO_TYPE_UCAST, PROTO_VENDOR_MS1, PROTO_IP_BGP )
#define MS_IP_IGMP \
PROTOCOL_ID( PROTO_TYPE_MCAST, PROTO_VENDOR_MS1, PROTO_IP_IGMP )
#define MS_IP_BGMP \
PROTOCOL_ID( PROTO_TYPE_MCAST, PROTO_VENDOR_MS1, PROTO_IP_BGMP )
#define MS_IP_MSDP \
PROTOCOL_ID( PROTO_TYPE_MCAST, PROTO_VENDOR_MS1, PROTO_IP_MSDP )
#define MS_IP_DNS_PROXY \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_DNS_PROXY )
#define MS_IP_DHCP_ALLOCATOR \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_DHCP_ALLOCATOR )
#define MS_IP_NAT \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_NAT )
#define MS_IP_DIFFSERV \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_DIFFSERV )
#define MS_IP_MGM \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_MGM )
#define MS_IP_VRRP \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_VRRP )
#define MS_IP_DTP \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_DTP )
#define MS_IP_H323 \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_H323 )
#define MS_IP_FTP \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_FTP )
#define MS_IP_ALG \
PROTOCOL_ID( PROTO_TYPE_MS0, PROTO_VENDOR_MS1, PROTO_IP_ALG )
/* IPX protocols */
#define IPX_PROTOCOL_BASE 0x0001FFFFL
#define IPX_PROTOCOL_RIP (IPX_PROTOCOL_BASE + 1)
/* Routing interface status types */
#define RIS_INTERFACE_ADDRESS_CHANGE 0
#define RIS_INTERFACE_ENABLED 1
#define RIS_INTERFACE_DISABLED 2
#define RIS_INTERFACE_MEDIA_PRESENT 3
#define RIS_INTERFACE_MEDIA_ABSENT 4
/* Interface flags */
#define MRINFO_TUNNEL_FLAG 0x01
#define MRINFO_PIM_FLAG 0x04
#define MRINFO_DOWN_FLAG 0x10
#define MRINFO_DISABLED_FLAG 0x20
#define MRINFO_QUERIER_FLAG 0x40
#define MRINFO_LEAF_FLAG 0x80
/* MFE status codes */
#define MFE_NO_ERROR 0
#define MFE_REACHED_CORE 1
#define MFE_NOT_FORWARDING 2
#define MFE_WRONG_IF 3
#define MFE_PRUNED_UPSTREAM 4
#define MFE_OIF_PRUNED 5
#define MFE_BOUNDARY_REACHED 6
#define MFE_NO_MULTICAST 7
#define MFE_IIF 8
#define MFE_NO_ROUTE 9
#define MFE_NOT_LAST_HOP 10
#define MFE_OLD_ROUTER 11
#define MFE_PROHIBITED 12
#define MFE_NO_SPACE 13
/* Routing protocl entry point name */
#define REGISTER_PROTOCOL_ENTRY_POINT RegisterProtocol
#define REGISTER_PROTOCOL_ENTRY_POINT_STRING "RegisterProtocol"
/* Routing protocol events */
typedef enum _ROUTING_PROTOCOL_EVENTS {
ROUTER_STOPPED = 0,
SAVE_GLOBAL_CONFIG_INFO = 1,
SAVE_INTERFACE_CONFIG_INFO = 2,
UPDATE_COMPLETE = 3
} ROUTING_PROTOCOL_EVENTS;
/* Network interface types */
typedef enum _NET_INTERFACE_TYPE {
PERMANENT = 0,
DEMAND_DIAL = 1,
LOCAL_WORKSTATION_DIAL = 2,
REMOTE_WORKSTATION_DIAL = 3
} NET_INTERFACE_TYPE;
/* Support functions */
typedef struct _SUPPORT_FUNCTIONS {
union {
ULONGLONG _Align8;
struct {
DWORD dwVersion;
DWORD dwReserved;
};
};
DWORD (WINAPI *DemandDialRequest)( DWORD, DWORD );
DWORD (WINAPI *SetInterfaceReceiveType)( DWORD, DWORD, DWORD, BOOL );
DWORD (WINAPI *ValidateRoute)( DWORD, PVOID, PVOID );
DWORD (WINAPI *MIBEntryCreate)( DWORD, DWORD, LPVOID );
DWORD (WINAPI *MIBEntryDelete)( DWORD, DWORD, LPVOID );
DWORD (WINAPI *MIBEntrySet)( DWORD, DWORD, LPVOID );
DWORD (WINAPI *MIBEntryGet)( DWORD, DWORD, LPVOID, LPDWORD, LPVOID );
DWORD (WINAPI *MIBEntryGetFirst)( DWORD, DWORD, LPVOID, LPDWORD, LPVOID );
DWORD (WINAPI *MIBEntryGetNext)( DWORD, DWORD, LPVOID, LPDWORD, LPVOID );
DWORD (WINAPI *GetRouterId)( VOID );
BOOL (WINAPI *HasMulticastBoundary)( DWORD, DWORD );
} SUPPORT_FUNCTIONS;
typedef SUPPORT_FUNCTIONS *PSUPPORT_FUNCTIONS;
/* Update complete message */
typedef struct _UPDATE_COMPLETE_MESSAGE {
ULONG InterfaceIndex;
ULONG UpdateType;
ULONG UpdateStatus;
} UPDATE_COMPLETE_MESSAGE;
typedef UPDATE_COMPLETE_MESSAGE *PUPDATE_COMPLETE_MESSAGE;
/* Message */
typedef union _MESSAGE {
UPDATE_COMPLETE_MESSAGE UpdateCompleteMessage;
DWORD InterfaceIndex;
} MESSAGE;
typedef MESSAGE *PMESSAGE;
/* IP local binding */
typedef struct IP_LOCAL_BINDING {
DWORD Address;
DWORD Mask;
} IP_LOCAL_BINDING;
typedef IP_LOCAL_BINDING *PIP_LOCAL_BINDING;
/* IPv6 local binding */
typedef struct IPV6_LOCAL_BINDING {
IN6_ADDR Address;
DWORD PrefixLength;
} IPV6_LOCAL_BINDING;
typedef IPV6_LOCAL_BINDING *PIPV6_LOCAL_BINDING;
/* IP adapter binding information */
typedef struct IP_ADAPTER_BINDING_INFO {
ULONG AddressCount;
DWORD RemoteAddress;
ULONG Mtu;
ULONGLONG Speed;
IP_LOCAL_BINDING Address[1];
} IP_ADAPTER_BINDING_INFO;
typedef IP_ADAPTER_BINDING_INFO *PIP_ADAPTER_BINDING_INFO;
/* IPv6 adapter binding information */
typedef struct IPV6_ADAPTER_BINDING_INFO {
ULONG AddressCount;
IN6_ADDR RemoteAddress;
ULONG Mtu;
ULONGLONG Speed;
IPV6_LOCAL_BINDING Address[1];
} IPV6_ADAPTER_BINDING_INFO;
typedef IPV6_ADAPTER_BINDING_INFO *PIPV6_ADAPTER_BINDING_INFO;
/* Callbacks */
typedef DWORD (WINAPI *PSTART_PROTOCOL)( HANDLE, PSUPPORT_FUNCTIONS, LPVOID, ULONG, ULONG, ULONG );
typedef DWORD (WINAPI *PSTART_COMPLETE)( VOID );
typedef DWORD (WINAPI *PSTOP_PROTOCOL)( VOID );
typedef DWORD (WINAPI *PADD_INTERFACE)( LPWSTR, ULONG, NET_INTERFACE_TYPE, DWORD, WORD, WORD, PVOID, ULONG, ULONG, ULONG );
typedef DWORD (WINAPI *PDELETE_INTERFACE)( ULONG );
typedef DWORD (WINAPI *PGET_EVENT_MESSAGE)( ROUTING_PROTOCOL_EVENTS *, MESSAGE * );
typedef DWORD (WINAPI *PGET_INTERFACE_INFO)( ULONG, PVOID, PULONG, PULONG, PULONG, PULONG );
typedef DWORD (WINAPI *PSET_INTERFACE_INFO)( ULONG, PVOID, ULONG, ULONG, ULONG );
typedef DWORD (WINAPI *PINTERFACE_STATUS)( ULONG, BOOL, DWORD, PVOID );
typedef DWORD (WINAPI *PQUERY_POWER)( DWORD );
typedef DWORD (WINAPI *PSET_POWER)( DWORD );
typedef DWORD (WINAPI *PGET_GLOBAL_INFO)( PVOID, PULONG, PULONG, PULONG, PULONG );
typedef DWORD (WINAPI *PSET_GLOBAL_INFO)( PVOID, ULONG, ULONG, ULONG );
typedef DWORD (WINAPI *PDO_UPDATE_ROUTES)( ULONG );
typedef DWORD (WINAPI *PMIB_CREATE)( ULONG, PVOID );
typedef DWORD (WINAPI *PMIB_DELETE)( ULONG, PVOID );
typedef DWORD (WINAPI *PMIB_GET)( ULONG, PVOID, PULONG, PVOID );
typedef DWORD (WINAPI *PMIB_SET)( ULONG, PVOID );
typedef DWORD (WINAPI *PMIB_GET_FIRST)( ULONG, PVOID, PULONG, PVOID );
typedef DWORD (WINAPI *PMIB_GET_NEXT)( ULONG, PVOID, PULONG, PVOID );
typedef DWORD (WINAPI *PMIB_SET_TRAP_INFO)( HANDLE, ULONG, PVOID, PULONG, PVOID );
typedef DWORD (WINAPI *PMIB_GET_TRAP_INFO)( ULONG, PVOID, PULONG, PVOID );
typedef DWORD (WINAPI *PCONNECT_CLIENT)( ULONG, PVOID );
typedef DWORD (WINAPI *PDISCONNECT_CLIENT)( ULONG, PVOID );
typedef DWORD (WINAPI *PGET_NEIGHBORS)( DWORD, PDWORD, PDWORD, PBYTE );
typedef DWORD (WINAPI *PGET_MFE_STATUS)( DWORD, DWORD, DWORD, PBYTE );
/* MPR 5.0 routing characteristics */
typedef struct _MPR50_ROUTING_CHARACTERISTICS {
DWORD dwVersion;
DWORD dwProtocolId;
DWORD fSupportedFunctionality;
PSTART_PROTOCOL pfnStartProtocol;
PSTART_COMPLETE pfnStartComplete;
PSTOP_PROTOCOL pfnStopProtocol;
PGET_GLOBAL_INFO pfnGetGlobalInfo;
PSET_GLOBAL_INFO pfnSetGlobalInfo;
PQUERY_POWER pfnQueryPower;
PSET_POWER pfnSetPower;
PADD_INTERFACE pfnAddInterface;
PDELETE_INTERFACE pfnDeleteInterface;
PINTERFACE_STATUS pfnInterfaceStatus;
PGET_INTERFACE_INFO pfnGetInterfaceInfo;
PSET_INTERFACE_INFO pfnSetInterfaceInfo;
PGET_EVENT_MESSAGE pfnGetEventMessage;
PDO_UPDATE_ROUTES pfnUpdateRoutes;
PCONNECT_CLIENT pfnConnectClient;
PDISCONNECT_CLIENT pfnDisconnectClient;
PGET_NEIGHBORS pfnGetNeighbors;
PGET_MFE_STATUS pfnGetMfeStatus;
PMIB_CREATE pfnMibCreateEntry;
PMIB_DELETE pfnMibDeleteEntry;
PMIB_GET pfnMibGetEntry;
PMIB_SET pfnMibSetEntry;
PMIB_GET_FIRST pfnMibGetFirstEntry;
PMIB_GET_NEXT pfnMibGetNextEntry;
PMIB_SET_TRAP_INFO pfnMibSetTrapInfo;
PMIB_GET_TRAP_INFO pfnMibGetTrapInfo;
} MPR50_ROUTING_CHARACTERISTICS;
/* MPR routing characteristics */
#ifdef MPR50
typedef MPR50_ROUTING_CHARACTERISTICS MPR_ROUTING_CHARACTERISTICS;
#endif
typedef MPR_ROUTING_CHARACTERISTICS *PMPR_ROUTING_CHARACTERISTICS;
/* Protocol entry point */
typedef DWORD (WINAPI *PREGISTER_PROTOCOL)( PMPR_ROUTING_CHARACTERISTICS, PMPR_SERVICE_CHARACTERISTICS );
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* _ROUTPROT_H_ */