|
|
#define ADDR_LENGTH 24
//
// Misc macros
//
#define IfutlDispTokenErrMsg(hModule, dwMsgId, pwszTag, pwszValue) \
DisplayMessage( hModule, dwMsgId, pwszValue, pwszTag)
#define BREAK_ON_DWERR(x) if ((x) != NO_ERROR) break;
//
// Macros for dealing with IFMON_CMD_ARGS
//
#define IFMON_CMD_ARG_GetPsz(pArg) \
(((pArg)->rgTag.bPresent) ? (pArg)->Val.pszValue : NULL)
#define IFMON_CMD_ARG_GetDword(pArg) \
(((pArg)->rgTag.bPresent) ? (pArg)->Val.dwValue : 0)
//
// Enumerations for types of arguments (see RASMON_CMD_ARG)
//
#define IFMON_CMD_TYPE_STRING 0x1
#define IFMON_CMD_TYPE_ENUM 0x2
#define CHECK_UNICAST_IP_ADDR(Addr) \
(((DWORD)((Addr) & 0x000000E0) >= (DWORD)0x000000E0) or \ ((DWORD)((Addr) & 0x000000FF) == (DWORD)0x0000007F) or \ ((Addr) == 0))
BOOL CheckMask( DWORD Mask );
#define CHECK_NETWORK_MASK(Mask) \
(CheckMask(Mask) || (Mask==0xFFFFFFFF) || (Mask==0))
//
// Structure defining a command line argument
//
typedef struct _IFMON_CMD_ARG { IN DWORD dwType; // RASMONTR_CMD_TYPE_*
IN TAG_TYPE rgTag; // The tag for this command
IN TOKEN_VALUE* rgEnums; // The enumerations for this arg
IN DWORD dwEnumCount; // Count of enums
union { OUT PWCHAR pszValue; // Valid only for RASMONTR_CMD_TYPE_STRING
OUT DWORD dwValue; // Valid only for RASMONTR_CMD_TYPE_ENUM
} Val; } IFMON_CMD_ARG, *PIFMON_CMD_ARG;
DWORD IfutlGetTagToken( IN HANDLE hModule, IN PWCHAR *ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN PTAG_TYPE pttTagToken, IN DWORD dwNumTags, OUT PDWORD pdwOut );
VOID IfutlGetInterfaceName( IN PWCHAR pwszIfDesc, OUT PWCHAR pwszIfName, IN PDWORD pdwSize );
VOID IfutlGetInterfaceDescription( IN PWCHAR pwszIfName, OUT PWCHAR pwszIfDesc, IN PDWORD pdwSize );
PVOID WINAPI IfutlAlloc( IN DWORD dwBytes, IN BOOL bZero );
VOID WINAPI IfutlFree( IN PVOID pvData );
PWCHAR WINAPI IfutlStrDup( IN LPCWSTR pwszSrc ); DWORD IfutlParse( IN PWCHAR* ppwcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL* pbDone, OUT IFMON_CMD_ARG* pIfArgs, IN DWORD dwIfArgCount);
BOOL IfutlIsRouterRunning( VOID ); DWORD GetIpAddress( PWCHAR ppwcArg, PIPV4_ADDRESS ipAddress );
DWORD IfutlGetIfIndexFromInterfaceName( IN PWCHAR pwszGuid, OUT PDWORD pdwIfIndex );
DWORD WINAPI InterfaceEnum( OUT PBYTE *ppb, OUT PDWORD pdwCount, OUT PDWORD pdwTotal );
DWORD IfutlGetIfIndexFromFriendlyName( PWCHAR IfFriendlyName, PULONG pdwIfIndex );
VOID MakeAddressStringW( OUT PWCHAR pwcPrefixStr, IN IPV4_ADDRESS ipAddr );
DWORD IfutlGetFriendlyNameFromIfIndex( IN MIB_SERVER_HANDLE hMibServer, IN DWORD dwIfIndex, OUT PWCHAR pwszBuffer, IN DWORD dwBufferSize );
DWORD MibGet( DWORD dwTransportId, DWORD dwRoutingPid, LPVOID lpInEntry, DWORD dwInEntrySize, LPVOID *lplpOutEntry, LPDWORD lpdwOutEntrySize );
|