/*++ Copyright (c) 1998 Microsoft Corporation Module Name: qosp.h Abstract: Includes for QOS netsh extension Revision History: --*/ #ifndef __QOSP_H #define __QOSP_H // // Constants and Defines // #define QOS_LOG_MASK 0x00000001 #define QOS_IF_STATE_MASK 0x00000001 #define DIRECTION_INBOUND 0x00000001 #define DIRECTION_OUTBOUND 0x00000002 #define DIRECTION_BIDIRECTIONAL (DIRECTION_INBOUND | DIRECTION_OUTBOUND) #define MAX_WSTR_LENGTH (MAX_STRING_LENGTH * sizeof(WCHAR)) // // Extern Global Variables // extern ULONG g_ulQosNumTopCmds; extern CMD_ENTRY g_QosCmds[]; extern ULONG g_ulQosNumGroups; extern CMD_GROUP_ENTRY g_QosCmdGroups[]; extern ULONG g_dwNumQosTableEntries; // Num of sub-helpers #ifdef ALLOW_CHILD_HELPERS extern ULONG g_dwNumQosContexts; // Num of sub-contexts extern PIP_CONTEXT_TABLE_ENTRY g_QosContextTable; #endif // // Function Prototypes // // Exported Entry Points NS_CONTEXT_DUMP_FN QosDump; // Command Handlers FN_HANDLE_CMD HandleQosInstall; FN_HANDLE_CMD HandleQosUninstall; FN_HANDLE_CMD HandleQosAddHelper; FN_HANDLE_CMD HandleQosDelHelper; FN_HANDLE_CMD HandleQosShowHelper; FN_HANDLE_CMD HandleQosSetGlobal; FN_HANDLE_CMD HandleQosShowGlobal; FN_HANDLE_CMD HandleQosAddFlowspec; FN_HANDLE_CMD HandleQosDelFlowspec; FN_HANDLE_CMD HandleQosShowFlowspec; FN_HANDLE_CMD HandleQosDelQosObject; FN_HANDLE_CMD HandleQosShowQosObject; FN_HANDLE_CMD HandleQosAddSdMode; FN_HANDLE_CMD HandleQosShowSdMode; FN_HANDLE_CMD HandleQosAddDsRule; FN_HANDLE_CMD HandleQosDelDsRule; FN_HANDLE_CMD HandleQosShowDsMap; FN_HANDLE_CMD HandleQosAddIf; FN_HANDLE_CMD HandleQosSetIf; FN_HANDLE_CMD HandleQosDelIf; FN_HANDLE_CMD HandleQosShowIf; FN_HANDLE_CMD HandleQosDump; FN_HANDLE_CMD HandleQosHelp; FN_HANDLE_CMD HandleQosAddFlowOnIf; FN_HANDLE_CMD HandleQosDelFlowOnIf; FN_HANDLE_CMD HandleQosShowFlowOnIf; FN_HANDLE_CMD HandleQosAddFlowspecOnIfFlow; FN_HANDLE_CMD HandleQosDelFlowspecOnIfFlow; FN_HANDLE_CMD HandleQosAddQosObjectOnIfFlow; FN_HANDLE_CMD HandleQosDelQosObjectOnIfFlow; FN_HANDLE_CMD HandleQosAttachFilterToFlow; FN_HANDLE_CMD HandleQosDetachFilterFromFlow; FN_HANDLE_CMD HandleQosModifyFilterOnFlow; FN_HANDLE_CMD HandleQosShowFilterOnFlow; FN_HANDLE_CMD HandleQosMibHelp; FN_HANDLE_CMD HandleQosMibShowObject; // Helper Helper functions BOOL IsQosCommand( IN PWCHAR pwszCmd ); // Info Helper functions DWORD UpdateAllInterfaceConfigs( VOID ); DWORD MakeQosGlobalInfo( OUT PBYTE *ppbStart, OUT PDWORD pdwSize ); DWORD MakeQosInterfaceInfo( IN ROUTER_INTERFACE_TYPE rifType, OUT PBYTE *ppbStart, OUT PDWORD pdwSize ); DWORD ShowQosGlobalInfo ( IN HANDLE hFile ); DWORD ShowQosInterfaceInfo( IN HANDLE hFile, IN PWCHAR pwszIfName ); DWORD ShowQosAllInterfaceInfo( IN HANDLE hFile ); DWORD UpdateQosGlobalConfig( IN PIPQOS_GLOBAL_CONFIG pigcGlobalCfg, IN DWORD dwBitVector ); DWORD UpdateQosInterfaceConfig( IN PWCHAR pwszIfName, IN PIPQOS_IF_CONFIG pChangeCfg, IN DWORD dwBitVector, IN BOOL bAddSet ); DWORD GetQosSetIfOpt( IN PTCHAR *pptcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN PWCHAR wszIfName, IN DWORD dwSizeOfwszIfName, OUT PIPQOS_IF_CONFIG pChangeCfg, OUT DWORD *pdwBitVector, IN BOOL bAddSet ); DWORD GetQosAddDelIfFlowOpt( IN PTCHAR *pptcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL bAdd ); DWORD ShowQosFlows( IN HANDLE hFile, IN PWCHAR pwszIfGuid, IN PWCHAR wszFlowName ); DWORD ShowQosFlowsOnIf( IN HANDLE hFile, IN PWCHAR pwszIfGuid, IN PWCHAR wszFlowName ); DWORD GetQosAddDelFlowspecOpt( IN PTCHAR *pptcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL bAdd ); DWORD ShowQosFlowspecs( IN HANDLE hFile, IN PWCHAR wszFlowspecName ); DWORD GetQosAddDelFlowspecOnFlowOpt( IN PTCHAR *pptcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL bAdd ); DWORD GetQosAddDelDsRuleOpt( IN PTCHAR *pptcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL bAdd ); DWORD HandleQosShowGenericQosObject( IN DWORD dwQosObjectType, IN PTCHAR *pptcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL *pbDone ); typedef DWORD (*PSHOW_QOS_OBJECT)( IN HANDLE hFile, IN PWCHAR wszGenObjName, IN QOS_OBJECT_HDR *pGenObj ); DWORD ShowQosDsMap( IN HANDLE hFile, IN PWCHAR wszDsMapName, IN QOS_OBJECT_HDR *pDsMap ); DWORD ShowQosSdMode( IN HANDLE hFile, IN PWCHAR wszSdModeName, IN QOS_OBJECT_HDR *pSdMode ); DWORD GetQosAddDelQosObject( IN PWCHAR pwszQosObjectName, IN QOS_OBJECT_HDR *pQosObject, IN BOOL bAdd ); DWORD GetQosAddDelQosObjectOnFlowOpt( IN PTCHAR *pptcArguments, IN DWORD dwCurrentIndex, IN DWORD dwArgCount, IN BOOL bAdd ); DWORD ShowQosObjects( IN HANDLE hFile, IN PWCHAR wszQosObjectName, IN ULONG dwQosObjectType ); DWORD ShowQosGenObj( IN HANDLE hFile, IN PWCHAR wszGenObjName, IN QOS_OBJECT_HDR *pGenObj ); // Help Helper Functions DWORD ShowQosHelp( IN DWORD dwDisplayFlags, IN DWORD dwCmdFlags, IN DWORD dwArgsRemaining, IN PWCHAR pwszGroup ); DWORD WINAPI DisplayQosHelp( VOID ); // Dump Helper functions DWORD DumpQosInformation ( IN HANDLE hFile ); DWORD DumpQosHelperInformation ( IN HANDLE hFile ); // MIB Helper defs typedef VOID (*PQOS_PRINT_FN)( IN PIPQOS_MIB_GET_OUTPUT_DATA pgodInfo ); typedef struct _QOS_MAGIC_TABLE { DWORD dwId; PQOS_PRINT_FN pfnPrintFunction; }QOS_MAGIC_TABLE, *PQOS_MAGIC_TABLE; // MIB Helper functions VOID PrintQosGlobalStats( IN PIPQOS_MIB_GET_OUTPUT_DATA pgodInfo ); VOID PrintQosIfStats( IN PIPQOS_MIB_GET_OUTPUT_DATA pgodInfo ); DWORD GetQosMIBIfIndex( IN PTCHAR *pptcArguments, IN DWORD dwCurrentIndex, OUT PDWORD pdwIndices, OUT PDWORD pdwNumParsed ); // // Common Macros // #define GET_ENUM_TAG_VALUE() \ dwErr = MatchEnumTag(g_hModule, \ pptcArguments[i + dwCurrentIndex], \ NUM_TOKENS_IN_TABLE(rgEnums), \ rgEnums, \ &dwRes); \ \ if (dwErr != NO_ERROR) \ { \ DispTokenErrMsg(g_hModule, \ EMSG_BAD_OPTION_VALUE, \ pttTags[pdwTagType[i]].pwszTag, \ pptcArguments[i + dwCurrentIndex]); \ \ DisplayMessage(g_hModule, \ EMSG_BAD_OPTION_ENUMERATION, \ pttTags[pdwTagType[i]].pwszTag); \ \ for ( j = 0; j < NUM_TOKENS_IN_TABLE(rgEnums); j++ ) \ { \ DisplayMessageT( L" %1!s!\n", rgEnums[j].pwszToken ); \ } \ \ i = dwNumArg; \ dwErr = ERROR_SUPPRESS_OUTPUT; \ break; \ } \ #endif // __QOSP_H