|
|
//================================================================================
// Copyright (C) 1997 Microsoft Corporation
// Author: RameshV
// Description: This is the test program that tests the dhcpds functionality..
//================================================================================
#include <hdrmacro.h>
#include <store.h>
#include <dhcpapi.h>
#include <dhcpbas.h>
#include <rpcapi1.h>
#include <rpcapi2.h>
#include <dhcpds.h>
//================================================================================
// testing the DS functionality
//================================================================================
VOID PrintAndFreeServers( IN LPDHCPDS_SERVERS Servers ) { DWORD i;
for( i = 0; i < Servers->NumElements; i ++ ) { printf("Server %ws Address 0x%lx\n", Servers->Servers[i].ServerName, Servers->Servers[i].IpAddress); }
LocalFree(Servers); // must do MIDL_user_free here..
}
void TestNew1( VOID ) { DWORD Result; DWORD IpAddress; WCHAR ServerName[256]; CHAR IpAddressString[256]; LPDHCPDS_SERVERS Servers; LPDHCPDS_SERVER ThisServer; LPSTORE_HANDLE tDhcpGetGlobalDhcpRoot(VOID);
Result = DhcpDsInit( 0, NULL ); if( ERROR_SUCCESS != Result ) { printf("DhcpDsInit: %ld (0x%lx)\n", Result, Result); return; }
Result = StoreCreateObject( /* hStore */ tDhcpGetGlobalDhcpRoot(), /* Reserved */ DDS_RESERVED_DWORD, /* NewObjName */ DHCP_ROOT_OBJECT_CN_NAME, /* ... */ /* Identification */ ADSTYPE_DN_STRING, ATTRIB_DN_NAME, DHCP_ROOT_OBJECT_NAME, ADSTYPE_DN_STRING, ATTRIB_OBJECT_CLASS, DEFAULT_DHCP_CLASS_ATTRIB_VALUE,
/* systemMustContain */ ADSTYPE_INTEGER, ATTRIB_DHCP_UNIQUE_KEY, 0, ADSTYPE_INTEGER, ATTRIB_DHCP_TYPE, 0, ADSTYPE_DN_STRING, ATTRIB_DHCP_IDENTIFICATION, L"This is a server", ADSTYPE_INTEGER, ATTRIB_DHCP_FLAGS, 0, ADSTYPE_INTEGER, ATTRIB_INSTANCE_TYPE, DEFAULT_INSTANCE_TYPE_ATTRIB_VALUE,
/* terminator */ ADSTYPE_INVALID ); if( ERROR_SUCCESS != Result ) { printf("StoreCreateObject(ROOT): %ld\n", Result); }
#if 0
Servers = NULL; Result = DhcpDsEnumServers( &1, &Servers, NULL, NULL ); printf("DhcpEnumServers:0x%lx (%ld)\n", Result, Result); if( ERROR_SUCCESS == Result ) PrintAndFreeServers(Servers);
printf("ServerName: "); memset(ServerName, 0, sizeof(ServerName)); scanf("%ws", ServerName); printf("ServerAddress: "); memset(IpAddressString, 0, sizeof(IpAddressString)); scanf("%s", IpAddressString);
ThisServer.ServerName = ServerName; ThisServer.ServerAddress = inet_addr(IpAddressString); printf("DhcpAddServer(%ws, %s): ", ThisServer.ServerName, inet_ntoa(*(struct in_addr *)&ThisServer.ServerAddress)); Result = DhcpAddServer(0, NULL, &ThisServer, NULL, NULL); printf("0x%lx (%ld)\n", Result, Result);
printf("ServerName: "); memset(ServerName, 0, sizeof(ServerName)); scanf("%ws", ServerName); printf("ServerAddress: "); memset(IpAddressString, 0, sizeof(IpAddressString)); scanf("%s", IpAddressString);
ThisServer.ServerName = ServerName; ThisServer.ServerAddress = inet_addr(IpAddressString); printf("DhcpDeleteServer(%ws, %s): ", ThisServer.ServerName, inet_ntoa(*(struct in_addr *)&ThisServer.ServerAddress)); Result = DhcpDeleteServer(0, NULL, &ThisServer, NULL, NULL); printf("0x%lx (%ld)\n", Result, Result);
#endif 0
DhcpDsCleanup(); }
VOID TestAll( VOID ) { TestNew1(); }
void _cdecl main( VOID ) { TestAll(); }
//================================================================================
// end of file
//================================================================================
|