📄 routprot.h
字号:
{
DWORD Address;
DWORD Mask;
}IP_LOCAL_BINDING, *PIP_LOCAL_BINDING;
typedef struct IP_ADAPTER_BINDING_INFO
{
ULONG AddressCount;
DWORD RemoteAddress;
ULONG Mtu;
ULONGLONG Speed;
IP_LOCAL_BINDING Address[0];
}IP_ADAPTER_BINDING_INFO, *PIP_ADAPTER_BINDING_INFO;
#define SIZEOF_IP_BINDING(X) \
(FIELD_OFFSET(IP_ADAPTER_BINDING_INFO,Address[0]) + \
((X) * sizeof(IP_LOCAL_BINDING)))
typedef
DWORD
(WINAPI * PSTART_PROTOCOL) (
IN HANDLE NotificationEvent,
IN PSUPPORT_FUNCTIONS SupportFunctions,
IN LPVOID GlobalInfo,
IN ULONG StructureVersion,
IN ULONG StructureSize,
IN ULONG StructureCount
);
typedef
DWORD
(WINAPI * PSTART_COMPLETE) (
VOID
);
typedef
DWORD
(WINAPI * PSTOP_PROTOCOL) (
VOID
);
typedef
DWORD
(WINAPI * PADD_INTERFACE) (
IN LPWSTR InterfaceName,
IN ULONG InterfaceIndex,
IN NET_INTERFACE_TYPE InterfaceType,
IN DWORD MediaType,
IN WORD AccessType,
IN WORD ConnectionType,
IN PVOID InterfaceInfo,
IN ULONG StructureVersion,
IN ULONG StructureSize,
IN ULONG StructureCount
);
typedef
DWORD
(WINAPI * PDELETE_INTERFACE) (
IN ULONG InterfaceIndex
);
typedef
DWORD
(WINAPI * PGET_EVENT_MESSAGE) (
OUT ROUTING_PROTOCOL_EVENTS *Event,
OUT MESSAGE *Result
);
typedef
DWORD
(WINAPI * PGET_INTERFACE_INFO) (
IN ULONG InterfaceIndex,
IN PVOID InterfaceInfo,
IN OUT PULONG BufferSize,
OUT PULONG StructureVersion,
IN PULONG StructureSize,
OUT PULONG StructureCount
);
typedef
DWORD
(WINAPI * PSET_INTERFACE_INFO) (
IN ULONG InterfaceIndex,
IN PVOID InterfaceInfo,
IN ULONG StructureVersion,
IN ULONG StructureSize,
IN ULONG StructureCount
);
typedef
DWORD
(WINAPI * PINTERFACE_STATUS) (
IN ULONG InterfaceIndex,
IN BOOL InterfaceActive,
IN DWORD StatusType,
IN PVOID StatusInfo
);
typedef
DWORD
(WINAPI * PQUERY_POWER) (
IN DWORD PowerType
);
typedef
DWORD
(WINAPI * PSET_POWER) (
IN DWORD PowerType
);
typedef
DWORD
(WINAPI * PGET_GLOBAL_INFO) (
IN PVOID GlobalInfo,
IN OUT PULONG BufferSize,
OUT PULONG StructureVersion,
OUT PULONG StructureSize,
OUT PULONG StructureCount
);
typedef
DWORD
(WINAPI * PSET_GLOBAL_INFO) (
IN PVOID GlobalInfo,
IN ULONG StructureVersion,
IN ULONG StructureSize,
IN ULONG StructureCount
);
typedef
DWORD
(WINAPI * PDO_UPDATE_ROUTES) (
IN ULONG InterfaceIndex
);
typedef
DWORD
(WINAPI * PMIB_CREATE) (
IN ULONG InputDataSize,
IN PVOID InputData
);
typedef
DWORD
(WINAPI * PMIB_DELETE) (
IN ULONG InputDataSize,
IN PVOID InputData
);
typedef
DWORD
(WINAPI * PMIB_GET) (
IN ULONG InputDataSize,
IN PVOID InputData,
OUT PULONG OutputDataSize,
OUT PVOID OutputData
);
typedef
DWORD
(WINAPI * PMIB_SET) (
IN ULONG InputDataSize,
IN PVOID InputData
);
typedef
DWORD
(WINAPI * PMIB_GET_FIRST) (
IN ULONG InputDataSize,
IN PVOID InputData,
OUT PULONG OutputDataSize,
OUT PVOID OutputData
);
typedef
DWORD
(WINAPI * PMIB_GET_NEXT) (
IN ULONG InputDataSize,
IN PVOID InputData,
OUT PULONG OutputDataSize,
OUT PVOID OutputData
);
typedef
DWORD
(WINAPI * PMIB_SET_TRAP_INFO) (
IN HANDLE Event,
IN ULONG InputDataSize,
IN PVOID InputData,
OUT PULONG OutputDataSize,
OUT PVOID OutputData
);
typedef
DWORD
(WINAPI * PMIB_GET_TRAP_INFO) (
IN ULONG InputDataSize,
IN PVOID InputData,
OUT PULONG OutputDataSize,
OUT PVOID OutputData
);
typedef
DWORD
(WINAPI *PCONNECT_CLIENT) (
IN ULONG InterfaceIndex,
IN PVOID ClientAddress
);
typedef
DWORD
(WINAPI *PDISCONNECT_CLIENT) (
IN ULONG InterfaceIndex,
IN PVOID ClientAddress
);
//
// InterfaceFlags used with the GetNeighbors() call below
//
#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
typedef
DWORD
(WINAPI *PGET_NEIGHBORS) (
IN DWORD InterfaceIndex,
IN PDWORD NeighborList,
IN OUT PDWORD NeighborListSize,
OUT PBYTE InterfaceFlags
);
//
// StatusCode values used with the GetMfeStatus() call below.
// The protocol should return the highest-valued one that applies.
//
#define MFE_NO_ERROR 0 // none of the below events
#define MFE_REACHED_CORE 1 // this router is an RP/core for the group
//
// StatusCode values set by oif owner only
//
#define MFE_OIF_PRUNED 5 // no downstream receivers exist on oif
//
// StatusCode values set by iif owner only
//
#define MFE_PRUNED_UPSTREAM 4 // a prune was send upstream
#define MFE_OLD_ROUTER 11 // upstream nbr doesn't support mtrace
//
// StatusCode values which are used only by the Router Manager itself:
//
#define MFE_NOT_FORWARDING 2 // not fwding for an unspecified reason
#define MFE_WRONG_IF 3 // mtrace received on iif
#define MFE_BOUNDARY_REACHED 6 // iif or oif is admin scope boundary
#define MFE_NO_MULTICAST 7 // oif is not multicast-enabled
#define MFE_IIF 8 // mtrace arrived on iif
#define MFE_NO_ROUTE 9 // router has no route that matches
#define MFE_NOT_LAST_HOP 10 // router is not the proper last-hop router
#define MFE_PROHIBITED 12 // mtrace is administratively prohibited
#define MFE_NO_SPACE 13 // not enough room in packet
typedef
DWORD
(WINAPI *PGET_MFE_STATUS) (
IN DWORD InterfaceIndex,
IN DWORD GroupAddress,
IN DWORD SourceAddress,
OUT PBYTE StatusCode
);
//////////////////////////////////////////////////////////////////////////////
// //
// This is the structure passed between the router manager and a protocol //
// upon registration. //
// //
// IN OUT DWORD dwVersion //
// This is filled by the router manager to indicate the version it supports.//
// The DLL MUST set this to the version that the protocol will support. //
// //
// IN DWORD dwProtocolId //
// This the protocol the router manager is expecting the DLL to register. //
// If the DLL does not support this protocol, it MUST return //
// ERROR_NOT_SUPPORTED //
// A DLL will be called once for every protocol it supports //
// //
// IN OUT DWORD fSupportedFunctionality //
// These are the flags denoting the functionality the router manager //
// supports. The DLL MUST reset this to the functionality that it supports. //
// //
//////////////////////////////////////////////////////////////////////////////
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;
#if MPR50
typedef MPR50_ROUTING_CHARACTERISTICS MPR_ROUTING_CHARACTERISTICS;
#endif
typedef MPR_ROUTING_CHARACTERISTICS *PMPR_ROUTING_CHARACTERISTICS;
//
// All routing protocols must export the following entry point.
// The router manager calls this function to allow the routing
// protocol to register
//
#define REGISTER_PROTOCOL_ENTRY_POINT RegisterProtocol
#define REGISTER_PROTOCOL_ENTRY_POINT_STRING "RegisterProtocol"
typedef
DWORD
(WINAPI * PREGISTER_PROTOCOL) (
IN OUT PMPR_ROUTING_CHARACTERISTICS pRoutingChar,
IN OUT PMPR_SERVICE_CHARACTERISTICS pServiceChar
);
#ifdef __cplusplus
}
#endif
#if _MSC_VER >= 1200
#pragma warning(pop)
#else
#pragma warning(default:4200)
#pragma warning(default:4201)
#endif
#pragma option pop /*P_O_Pop*/
#endif // _ROUTPROT_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -