typedef struct _TRANSPORT_INFO { PRTR_INFO_BLOCK_HEADER pibhInfo; BOOL bValid; }TRANSPORT_INFO,*PTRANSPORT_INFO; typedef struct _INTERFACE_STORE { LIST_ENTRY le; PWCHAR pwszIfName; PRTR_INFO_BLOCK_HEADER pibhInfo; DWORD dwIfType; BOOL bValid; }INTERFACE_STORE,*PINTERFACE_STORE; extern LIST_ENTRY g_leIfListHead; extern TRANSPORT_INFO g_tiTransport; #define FREE_BUFFER(pibh) \ { \ HeapFree(GetProcessHeap(), \ 0, \ pibh); \ pibh = NULL; \ } DWORD ValidateInterfaceInfo( IN LPCWSTR pwszIfName, OUT RTR_INFO_BLOCK_HEADER **ppInfo, OPTIONAL OUT PDWORD pdwIfType, OPTIONAL OUT INTERFACE_STORE **ppIfStore OPTIONAL ); DWORD ValidateGlobalInfo( OUT RTR_INFO_BLOCK_HEADER **ppInfo ); DWORD GetGlobalInfo( OUT RTR_INFO_BLOCK_HEADER **ppibhInfo ); DWORD SetGlobalInfo( IN PRTR_INFO_BLOCK_HEADER pibhInfo ); DWORD GetInterfaceInfo( IN LPCWSTR pwszIfName, OUT PRTR_INFO_BLOCK_HEADER *ppibhInfo, IN PMPR_INTERFACE_0 pMprIf0, OUT PDWORD pdwIfType ); DWORD SetInterfaceInfo( IN PRTR_INFO_BLOCK_HEADER pibhInfo, IN LPCWSTR pwszIfName ); DWORD AddInterfaceInfo( IN LPCWSTR pwszIfName ); DWORD DeleteInterfaceInfo( IN LPCWSTR pwszIfName ); DWORD WINAPI IpCommit( IN DWORD dwAction ); #ifdef KSL_IPINIP DWORD CreateInterface( IN LPCWSTR pwszFriendlyName, IN LPCWSTR pwszGuidName, IN DWORD dwIfType, IN BOOL bCreateRouterIf ); #endif //KSL_IPINIP #define IFCLASS_LOOPBACK 1 #define IFCLASS_P2P 2 #define IFCLASS_BROADCAST 3 #define IFCLASS_NBMA 4 DWORD GetInterfaceClass( IN LPCWSTR pwszIfName, OUT PDWORD pdwIfClass );