|
|
/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
ipxgl.c
Abstract:
IPX Router Console Monitoring and Configuration tool. IPX Global configuration.
Author:
Vadim Eydelman 06/07/1996
--*/ #include "precomp.h"
#pragma hdrstop
DWORD CfgSetIpxGlInfo ( IN DWORD *pLogLevel OPTIONAL );
DWORD AdmSetIpxGlInfo ( IN DWORD *pLogLevel OPTIONAL );
int APIENTRY ShowIpxGl( IN int argc, IN WCHAR *argv[], IN BOOL bDump ) { DWORD rc; LPBYTE pGlBlock; DWORD sz; HANDLE hTrCfg = NULL; PWCHAR buffer = NULL;
if ( g_hMprAdmin ) { rc = MprAdminTransportGetInfo( g_hMprAdmin, PID_IPX, &pGlBlock, &sz, NULL, NULL ); if ( rc == NO_ERROR ) { } else { goto GetFromCfg; } }
else { GetFromCfg: rc = MprConfigTransportGetHandle( g_hMprConfig, PID_IPX, &hTrCfg ); if ( rc == NO_ERROR ) { rc = MprConfigTransportGetInfo( g_hMprConfig, hTrCfg, &pGlBlock, &sz, NULL, NULL, NULL ); } }
if ( rc == NO_ERROR ) { PIPX_TOC_ENTRY pIpxGlToc;
pIpxGlToc = GetIPXTocEntry ( (PIPX_INFO_BLOCK_HEADER)pGlBlock, IPX_GLOBAL_INFO_TYPE ); if ( pIpxGlToc != NULL ) { PIPX_GLOBAL_INFO pIpxGlInfo; PWCHAR buffer;
pIpxGlInfo = (PIPX_GLOBAL_INFO) (pGlBlock+pIpxGlToc->Offset);
buffer = GetEnumString( g_hModule, pIpxGlInfo->EventLogMask, NUM_VALUES_IN_TABLE( LogLevels ), LogLevels ); if ( bDump ) { DisplayIPXMessage (g_hModule, MSG_IPX_DUMP_GLOBAL_HEADER); DisplayMessageT( DMP_IPX_SET_GLOBAL, buffer ); }
else { DisplayIPXMessage( g_hModule, MSG_IPX_GLOBAL_FMT, buffer ); } } else { DisplayIPXMessage (g_hModule, MSG_ROUTER_INFO_CORRUPTED); rc = ERROR_INVALID_DATA; } if (hTrCfg!=NULL) { MprConfigBufferFree (pGlBlock); } else { MprAdminBufferFree (pGlBlock); } } else if (!bDump) { DisplayError( g_hModule, rc); }
return rc; }
int APIENTRY SetIpxGl ( IN int argc, IN WCHAR *argv[] ) { DWORD rc;
if ( argc >= 1 ) { int i; unsigned n; PWCHAR buffer; DWORD logLevel; DWORD *pLogLevel = NULL; TOKEN_VALUE LogLevel[] = { { VAL_NONE, 0 }, { VAL_ERRORS_ONLY, EVENTLOG_ERROR_TYPE }, { VAL_ERRORS_AND_WARNINGS, EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE }, { VAL_MAXINFO, EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE } };
for ( i = 0; i < argc; i++ ) { if ( !_wcsicmp( argv[i], TOKEN_LOGLEVEL ) ) { if ( ( pLogLevel == NULL ) && ( i < argc - 1 ) && !MatchEnumTag( g_hModule, argv[ i + 1 ], NUM_TOKENS_IN_TABLE( LogLevel ), LogLevel, &logLevel ) ) { i += 1; pLogLevel = &logLevel; } else { break; } } else if ( pLogLevel == NULL ) { if ( !MatchEnumTag( g_hModule, argv[ i ], NUM_TOKENS_IN_TABLE( LogLevel ), LogLevel, &logLevel ) ) { pLogLevel = &logLevel; } else { break; } } } if ( i == argc ) { rc = CfgSetIpxGlInfo( pLogLevel ); if ( rc == NO_ERROR ) { if ( g_hMprAdmin ) { AdmSetIpxGlInfo( pLogLevel ); } } } else { rc = ERROR_INVALID_SYNTAX; } } else { rc = ERROR_INVALID_SYNTAX; }
return rc; }
DWORD CfgSetIpxGlInfo ( IN DWORD *pLogLevel OPTIONAL ) { DWORD rc; HANDLE hTrCfg;
rc = MprConfigTransportGetHandle( g_hMprConfig, PID_IPX, &hTrCfg );
if ( rc == NO_ERROR ) { DWORD sz; LPBYTE pGlBlock;
rc = MprConfigTransportGetInfo( g_hMprConfig, hTrCfg, &pGlBlock, &sz, NULL, NULL, NULL ); if (rc==NO_ERROR) { PIPX_TOC_ENTRY pIpxGlToc;
pIpxGlToc = GetIPXTocEntry ( (PIPX_INFO_BLOCK_HEADER)pGlBlock, IPX_GLOBAL_INFO_TYPE ); if (pIpxGlToc!=NULL) { PIPX_GLOBAL_INFO pIpxGlInfo;
pIpxGlInfo = (PIPX_GLOBAL_INFO) (pGlBlock+pIpxGlToc->Offset); if ( pLogLevel ) { pIpxGlInfo->EventLogMask = *pLogLevel; } rc = MprConfigTransportSetInfo( g_hMprConfig, hTrCfg, pGlBlock, sz, NULL, 0, NULL ); if (rc==NO_ERROR) { DisplayIPXMessage (g_hModule, MSG_IPXGL_SET_CFG); } else { DisplayError( g_hModule, rc); } } else { DisplayIPXMessage (g_hModule, MSG_ROUTER_INFO_CORRUPTED); rc = ERROR_INVALID_DATA; }
MprConfigBufferFree (pGlBlock); } else { DisplayError( g_hModule, rc); } } else { DisplayError( g_hModule, rc); }
return rc; }
DWORD AdmSetIpxGlInfo ( IN DWORD *pLogLevel OPTIONAL ) { DWORD rc; LPBYTE pGlBlock; DWORD sz;
rc = MprAdminTransportGetInfo( g_hMprAdmin, PID_IPX, &pGlBlock, &sz, NULL, NULL );
if (rc==NO_ERROR) { PIPX_TOC_ENTRY pIpxGlToc;
pIpxGlToc = GetIPXTocEntry ( (PIPX_INFO_BLOCK_HEADER)pGlBlock, IPX_GLOBAL_INFO_TYPE ); if (pIpxGlToc!=NULL) { PIPX_GLOBAL_INFO pIpxGlInfo;
pIpxGlInfo = (PIPX_GLOBAL_INFO) (pGlBlock+pIpxGlToc->Offset); if (pLogLevel) { pIpxGlInfo->EventLogMask = *pLogLevel; }
rc = MprAdminTransportSetInfo( g_hMprAdmin, PID_IPX, pGlBlock, sz, NULL, 0 );
if (rc==NO_ERROR) { DisplayIPXMessage (g_hModule, MSG_IPXGL_SET_ADM); } else { DisplayError( g_hModule, rc); } } else { DisplayIPXMessage (g_hModule, MSG_ROUTER_INFO_CORRUPTED); rc = ERROR_INVALID_DATA; } MprAdminBufferFree (pGlBlock); } else { DisplayError( g_hModule, rc); }
return rc; }
|