392 lines
8.3 KiB
C
392 lines
8.3 KiB
C
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ripgl.c
|
|
|
|
Abstract:
|
|
|
|
IPX Router Console Monitoring and Configuration tool.
|
|
RIP Global configuration.
|
|
|
|
Author:
|
|
|
|
Vadim Eydelman 06/07/1996
|
|
|
|
|
|
--*/
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
|
|
DWORD
|
|
CfgSetRipGlInfo(
|
|
IN DWORD *pLogLevel OPTIONAL
|
|
);
|
|
|
|
DWORD
|
|
AdmSetRipGlInfo(
|
|
IN DWORD *pLogLevel OPTIONAL
|
|
);
|
|
|
|
|
|
DWORD
|
|
APIENTRY
|
|
HelpRipGl (
|
|
IN int argc,
|
|
IN WCHAR *argv[]
|
|
)
|
|
{
|
|
DisplayMessage (g_hModule, HLP_IPX_RIPGL );
|
|
return 0;
|
|
}
|
|
|
|
|
|
DWORD
|
|
APIENTRY
|
|
ShowRipGl (
|
|
IN int argc,
|
|
IN WCHAR *argv[],
|
|
IN HANDLE hFile
|
|
)
|
|
{
|
|
DWORD rc;
|
|
LPBYTE pGlBlock;
|
|
DWORD sz;
|
|
HANDLE hTrCfg = 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 pRipGlToc;
|
|
|
|
pRipGlToc = GetIPXTocEntry (
|
|
(PIPX_INFO_BLOCK_HEADER)pGlBlock,
|
|
IPX_PROTOCOL_RIP
|
|
);
|
|
|
|
if ( pRipGlToc != NULL )
|
|
{
|
|
PRIP_GLOBAL_INFO pRipGlInfo;
|
|
PWCHAR buffer;
|
|
|
|
pRipGlInfo = (PRIP_GLOBAL_INFO)
|
|
(pGlBlock + pRipGlToc->Offset);
|
|
|
|
buffer = GetEnumString(
|
|
g_hModule, pRipGlInfo->EventLogMask,
|
|
NUM_TOKENS_IN_TABLE( LogLevels ),
|
|
LogLevels
|
|
);
|
|
|
|
if ( buffer )
|
|
{
|
|
if ( hFile )
|
|
{
|
|
DisplayMessageT( DMP_IPX_RIP_SET_GLOBAL, buffer );
|
|
}
|
|
|
|
else
|
|
{
|
|
DisplayIPXMessage(
|
|
g_hModule, MSG_RIP_GLOBAL_FMT, buffer
|
|
);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
rc = ERROR_NOT_ENOUGH_MEMORY;
|
|
if ( !hFile )
|
|
{
|
|
DisplayError( g_hModule, rc );
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
rc = ERROR_INVALID_DATA;
|
|
if ( !hFile )
|
|
{
|
|
DisplayIPXMessage (g_hModule, MSG_ROUTER_INFO_CORRUPTED);
|
|
}
|
|
}
|
|
|
|
if (hTrCfg != NULL)
|
|
{
|
|
MprConfigBufferFree (pGlBlock);
|
|
}
|
|
else
|
|
{
|
|
MprAdminBufferFree (pGlBlock);
|
|
}
|
|
}
|
|
|
|
else
|
|
{
|
|
if ( !hFile )
|
|
{
|
|
DisplayError( g_hModule, rc );
|
|
}
|
|
}
|
|
|
|
return rc;
|
|
}
|
|
|
|
|
|
DWORD
|
|
APIENTRY
|
|
SetRipGl (
|
|
IN int argc,
|
|
IN WCHAR *argv[]
|
|
)
|
|
{
|
|
DWORD rc;
|
|
|
|
if (argc >= 1)
|
|
{
|
|
int i;
|
|
unsigned n;
|
|
DWORD logLevel;
|
|
DWORD * pLogLevel = NULL;
|
|
|
|
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( LogLevels ), LogLevels,
|
|
&logLevel) )
|
|
{
|
|
i += 1;
|
|
pLogLevel = &logLevel;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (pLogLevel == NULL)
|
|
{
|
|
if (!MatchEnumTag( g_hModule, argv[i],
|
|
NUM_TOKENS_IN_TABLE( LogLevels ), LogLevels,
|
|
&logLevel) )
|
|
{
|
|
pLogLevel = &logLevel;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
if (i == argc)
|
|
{
|
|
rc = CfgSetRipGlInfo (pLogLevel);
|
|
|
|
if (rc == NO_ERROR)
|
|
{
|
|
if (g_hMprAdmin) { AdmSetRipGlInfo (pLogLevel); }
|
|
}
|
|
}
|
|
else
|
|
{
|
|
DisplayMessage (g_hModule, HLP_IPX_RIPGL);
|
|
rc = ERROR_INVALID_PARAMETER;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
DisplayMessage (g_hModule, HLP_IPX_RIPGL);
|
|
rc = ERROR_INVALID_PARAMETER;
|
|
}
|
|
|
|
return rc;
|
|
}
|
|
|
|
|
|
DWORD
|
|
CfgSetRipGlInfo (
|
|
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 pRipGlToc;
|
|
|
|
pRipGlToc = GetIPXTocEntry(
|
|
(PIPX_INFO_BLOCK_HEADER)pGlBlock,
|
|
IPX_PROTOCOL_RIP
|
|
);
|
|
|
|
if (pRipGlToc != NULL)
|
|
{
|
|
PRIP_GLOBAL_INFO pRipGlInfo;
|
|
|
|
pRipGlInfo = (PRIP_GLOBAL_INFO)
|
|
(pGlBlock + pRipGlToc->Offset);
|
|
|
|
if (pLogLevel)
|
|
{
|
|
pRipGlInfo->EventLogMask = *pLogLevel;
|
|
}
|
|
|
|
rc = MprConfigTransportSetInfo(
|
|
g_hMprConfig, hTrCfg, pGlBlock, sz, NULL, 0, NULL
|
|
);
|
|
|
|
if (rc == NO_ERROR)
|
|
{
|
|
DisplayIPXMessage(
|
|
g_hModule, MSG_RIPGL_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
|
|
AdmSetRipGlInfo (
|
|
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 pRipGlToc;
|
|
|
|
pRipGlToc = GetIPXTocEntry(
|
|
(PIPX_INFO_BLOCK_HEADER)pGlBlock,
|
|
IPX_PROTOCOL_RIP
|
|
);
|
|
|
|
if ( pRipGlToc != NULL )
|
|
{
|
|
PRIP_GLOBAL_INFO pRipGlInfo;
|
|
|
|
pRipGlInfo = (PRIP_GLOBAL_INFO)
|
|
(pGlBlock + pRipGlToc->Offset);
|
|
|
|
if (pLogLevel)
|
|
{
|
|
pRipGlInfo->EventLogMask = *pLogLevel;
|
|
}
|
|
|
|
rc = MprAdminTransportSetInfo(
|
|
g_hMprAdmin, PID_IPX, pGlBlock, sz, NULL, 0
|
|
);
|
|
|
|
if (rc == NO_ERROR)
|
|
{
|
|
DisplayIPXMessage (g_hModule, MSG_RIPGL_SET_ADM );
|
|
}
|
|
else
|
|
{
|
|
DisplayError( g_hModule, rc);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
DisplayIPXMessage (g_hModule, MSG_ROUTER_INFO_CORRUPTED);
|
|
rc = ERROR_INVALID_DATA;
|
|
}
|
|
|
|
MprConfigBufferFree (pGlBlock);
|
|
}
|
|
|
|
else
|
|
{
|
|
DisplayError( g_hModule, rc);
|
|
}
|
|
|
|
return rc;
|
|
}
|
|
|
|
|