Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

350 lines
9.7 KiB

/*++
Copyright (c) 1997-2000 Microsoft Corporation
Module Name:
w2kfuncs.c
Abstract:
Domain Name System (DNS) Server
Frozen routines for processing W2K structures.
Author:
Jeff Westhead (jwesth) October, 2000
Revision History:
--*/
#include "dnsclip.h"
//
// External functions
//
VOID
DnsPrint_RpcServerInfo_W2K(
IN PRINT_ROUTINE PrintRoutine,
IN OUT PPRINT_CONTEXT pPrintContext,
IN LPSTR pszHeader,
IN PDNS_RPC_SERVER_INFO_W2K pServerInfo
)
{
DnsPrint_Lock();
if ( pszHeader )
{
PrintRoutine( pPrintContext, pszHeader );
}
if ( ! pServerInfo )
{
PrintRoutine( pPrintContext, "NULL server info ptr.\n" );
}
else
{
int majorVer = pServerInfo->dwVersion & 0x000000FF;
int minorVer = ( pServerInfo->dwVersion & 0x0000FF00 ) >> 8;
int buildNum = pServerInfo->dwVersion >> 16;
PrintRoutine( pPrintContext,
"Server info W2K:\n"
"\tptr = %p\n"
"\tserver name = %s\n",
pServerInfo,
pServerInfo->pszServerName );
//
// Sanitize build number for older versions where build number is wacked.
//
if ( buildNum < 1 || buildNum > 5000 )
{
PrintRoutine( pPrintContext,
"\tversion = %08lX (%d.%d)\n",
pServerInfo->dwVersion,
majorVer,
minorVer );
}
else
{
PrintRoutine( pPrintContext,
"\tversion = %08lX (%d.%d build %d)\n",
pServerInfo->dwVersion,
majorVer,
minorVer,
buildNum );
}
PrintRoutine( pPrintContext,
"\tDS container = %S\n",
( PWSTR ) pServerInfo->pszDsContainer );
PrintRoutine( pPrintContext,
" Configuration:\n"
"\tdwLogLevel = %p\n"
"\tdwDebugLevel = %p\n"
"\tdwRpcProtocol = %p\n"
"\tdwNameCheckFlag = %p\n"
"\tcAddressAnswerLimit = %d\n"
"\tdwRecursionRetry = %d\n"
"\tdwRecursionTimeout = %d\n"
"\tdwDsPollingInterval = %d\n",
pServerInfo->dwLogLevel,
pServerInfo->dwDebugLevel,
pServerInfo->dwRpcProtocol,
pServerInfo->dwNameCheckFlag,
pServerInfo->cAddressAnswerLimit,
pServerInfo->dwRecursionRetry,
pServerInfo->dwRecursionTimeout,
pServerInfo->dwDsPollingInterval
);
PrintRoutine( pPrintContext,
" Configuration Flags:\n"
"\tfBootMethod = %d\n"
"\tfAdminConfigured = %d\n"
"\tfAllowUpdate = %d\n"
"\tfDsAvailable = %d\n"
"\tfAutoReverseZones = %d\n"
"\tfAutoCacheUpdate = %d\n"
"\tfSlave = %d\n"
"\tfNoRecursion = %d\n"
"\tfRoundRobin = %d\n"
"\tfLocalNetPriority = %d\n"
"\tfStrictFileParsing = %d\n"
"\tfLooseWildcarding = %d\n"
"\tfBindSecondaries = %d\n"
"\tfWriteAuthorityNs = %d\n",
pServerInfo->fBootMethod,
pServerInfo->fAdminConfigured,
pServerInfo->fAllowUpdate,
pServerInfo->fDsAvailable,
pServerInfo->fAutoReverseZones,
pServerInfo->fAutoCacheUpdate,
pServerInfo->fSlave,
pServerInfo->fNoRecursion,
pServerInfo->fRoundRobin,
pServerInfo->fLocalNetPriority,
pServerInfo->fStrictFileParsing,
pServerInfo->fLooseWildcarding,
pServerInfo->fBindSecondaries,
pServerInfo->fWriteAuthorityNs
);
PrintRoutine(
pPrintContext,
" Aging Configuration:\n"
"\tScavengingInterval = %d\n"
"\tDefaultAgingState = %d\n"
"\tDefaultRefreshInterval = %d\n"
"\tDefaultNoRefreshInterval = %d\n",
pServerInfo->dwScavengingInterval,
pServerInfo->fDefaultAgingState,
pServerInfo->dwDefaultRefreshInterval,
pServerInfo->dwDefaultNoRefreshInterval
);
DnsPrint_IpArray(
PrintRoutine,
pPrintContext,
" ServerAddresses:\n",
"\tAddr",
pServerInfo->aipServerAddrs );
DnsPrint_IpArray(
PrintRoutine,
pPrintContext,
" ListenAddresses:\n",
"\tAddr",
pServerInfo->aipListenAddrs );
DnsPrint_IpArray(
PrintRoutine,
pPrintContext,
" Forwarders:\n",
"\tAddr",
pServerInfo->aipForwarders );
PrintRoutine(
pPrintContext,
"\tforward timeout = %d\n"
"\tslave = %d\n",
pServerInfo->dwForwardTimeout,
pServerInfo->fSlave );
}
DnsPrint_Unlock();
}
VOID
DnsPrint_RpcZoneInfo_W2K(
IN PRINT_ROUTINE PrintRoutine,
IN OUT PPRINT_CONTEXT pPrintContext,
IN LPSTR pszHeader,
IN PDNS_RPC_ZONE_INFO_W2K pZoneInfo
)
{
DnsPrint_Lock();
PrintRoutine( pPrintContext, (pszHeader ? pszHeader : "") );
if ( ! pZoneInfo )
{
PrintRoutine( pPrintContext, "NULL zone info ptr.\n" );
}
else
{
PrintRoutine( pPrintContext,
"Zone info W2K:\n"
"\tptr = %p\n"
"\tzone name = %s\n"
"\tzone type = %d\n"
"\tupdate = %d\n"
"\tDS integrated = %d\n"
"\tdata file = %s\n"
"\tusing WINS = %d\n"
"\tusing Nbstat = %d\n"
"\taging = %d\n"
"\t refresh interval = %lu\n"
"\t no refresh = %lu\n"
"\t scavenge available = %lu\n",
pZoneInfo,
pZoneInfo->pszZoneName,
pZoneInfo->dwZoneType,
pZoneInfo->fAllowUpdate,
pZoneInfo->fUseDatabase,
pZoneInfo->pszDataFile,
pZoneInfo->fUseWins,
pZoneInfo->fUseNbstat,
pZoneInfo->fAging,
pZoneInfo->dwRefreshInterval,
pZoneInfo->dwNoRefreshInterval,
pZoneInfo->dwAvailForScavengeTime
);
DnsPrint_IpArray(
PrintRoutine, pPrintContext,
"\tZone Masters\n",
"\tMaster",
pZoneInfo->aipMasters );
DnsPrint_IpArray(
PrintRoutine, pPrintContext,
"\tZone Secondaries\n",
"\tSecondary",
pZoneInfo->aipSecondaries );
PrintRoutine( pPrintContext,
"\tsecure secs = %d\n",
pZoneInfo->fSecureSecondaries );
if ( pZoneInfo->aipScavengeServers )
{
DnsPrint_IpArray(
PrintRoutine, pPrintContext,
"\tScavenge Servers\n",
"\tServer",
pZoneInfo->aipScavengeServers );
}
}
DnsPrint_Unlock();
}
VOID
DnsPrint_RpcZone_W2K(
IN PRINT_ROUTINE PrintRoutine,
IN OUT PPRINT_CONTEXT pPrintContext,
IN LPSTR pszHeader,
IN PDNS_RPC_ZONE_W2K pZone
)
{
if ( ! pZone )
{
PrintRoutine( pPrintContext,
"%sNULL zone info ptr.\n",
( pszHeader ? pszHeader : "" ) );
}
else
{
// print zone per line
PrintRoutine( pPrintContext,
"%s\n"
" %-29S",
pszHeader
? pszHeader
: "",
pZone->pszZoneName );
PrintRoutine( pPrintContext,
" %1d %2s %3s %4s Up=%1d %5s %6s %6s\n",
pZone->ZoneType,
pZone->Flags.DsIntegrated ? "DS " : "file",
pZone->Flags.Reverse ? "Rev" : "",
pZone->Flags.AutoCreated ? "Auto" : "",
pZone->Flags.Update,
pZone->Flags.Aging ? "Aging" : "",
pZone->Flags.Paused ? "Paused" : "",
pZone->Flags.Shutdown ? "Shutdn" : "" );
}
}
VOID
DNS_API_FUNCTION
DnsPrint_RpcZoneList_W2K(
IN PRINT_ROUTINE PrintRoutine,
IN OUT PPRINT_CONTEXT pPrintContext,
IN LPSTR pszHeader,
IN PDNS_RPC_ZONE_LIST_W2K pZoneList
)
{
DWORD i;
DnsPrint_Lock();
if ( pszHeader )
{
PrintRoutine( pPrintContext, "%s\n", pszHeader );
}
if ( !pZoneList )
{
PrintRoutine( pPrintContext, "NULL zone list pointer.\n" );
}
else
{
PrintRoutine( pPrintContext, "\tZone Count = %d (W2K)\n", pZoneList->dwZoneCount );
if ( pZoneList->dwZoneCount )
{
DnsPrint_RpcZone_W2K(
PrintRoutine, pPrintContext,
NULL, // print default header
pZoneList->ZoneArray[0] );
}
for ( i=1; i<pZoneList->dwZoneCount; i++ )
{
DnsPrint_RpcZone_W2K(
PrintRoutine, pPrintContext,
" ", // not to print default header
pZoneList->ZoneArray[i] );
}
PrintRoutine( pPrintContext, "\n" );
}
DnsPrint_Unlock();
}
//
// End of w2kfuncs.c
//