1673 lines
48 KiB
C
1673 lines
48 KiB
C
#include <nt.h>
|
|
#include <ntrtl.h>
|
|
#include <nturtl.h>
|
|
#include <windows.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <dnsapi.h>
|
|
|
|
|
|
VOID
|
|
GetStringA( char * );
|
|
|
|
VOID
|
|
GetStringW( WCHAR * );
|
|
|
|
VOID
|
|
PrintMenu( VOID );
|
|
|
|
VOID
|
|
DoInitialize( VOID );
|
|
|
|
VOID
|
|
DoTerminate( VOID );
|
|
|
|
VOID
|
|
DoRegisterWithPTR( VOID );
|
|
|
|
VOID
|
|
DoDeregisterWithPTR( VOID );
|
|
|
|
VOID
|
|
DoRegisterWithoutPTR( VOID );
|
|
|
|
VOID
|
|
DoDeregisterWithoutPTR( VOID );
|
|
|
|
VOID
|
|
DoRASRegisterWithPTR( VOID );
|
|
|
|
VOID
|
|
DoRASDeregisterWithPTR( VOID );
|
|
|
|
VOID
|
|
DoRemoveInterface( VOID );
|
|
|
|
VOID
|
|
DoMATAddSim( VOID );
|
|
|
|
VOID
|
|
DoMATAddDis( VOID );
|
|
|
|
VOID
|
|
DoMATAddMul( VOID );
|
|
|
|
VOID
|
|
DoMATModSim( VOID );
|
|
|
|
VOID
|
|
DoMATModDis( VOID );
|
|
|
|
VOID
|
|
DoMATModMul( VOID );
|
|
|
|
VOID
|
|
DoMATAddMulNTTEST( VOID );
|
|
|
|
VOID
|
|
PrintIpAddress ( DWORD IpAddress );
|
|
|
|
_cdecl
|
|
main(int argc, char **argv)
|
|
{
|
|
char String[256];
|
|
|
|
Menu :
|
|
|
|
PrintMenu();
|
|
GetStringA( String );
|
|
printf( "\n" );
|
|
|
|
switch( atoi( String ) )
|
|
{
|
|
case 1 :
|
|
DoInitialize();
|
|
break;
|
|
|
|
case 2 :
|
|
DoTerminate();
|
|
break;
|
|
|
|
case 3 :
|
|
DoRegisterWithPTR();
|
|
break;
|
|
|
|
case 4 :
|
|
DoDeregisterWithPTR();
|
|
break;
|
|
|
|
case 5 :
|
|
DoRegisterWithoutPTR();
|
|
break;
|
|
|
|
case 6 :
|
|
DoDeregisterWithoutPTR();
|
|
break;
|
|
|
|
case 7 :
|
|
DoRASRegisterWithPTR();
|
|
break;
|
|
|
|
case 8 :
|
|
DoRASDeregisterWithPTR();
|
|
break;
|
|
|
|
case 9 :
|
|
DoRemoveInterface();
|
|
break;
|
|
|
|
case 10 :
|
|
DoMATAddSim();
|
|
break;
|
|
|
|
case 11 :
|
|
DoMATAddDis();
|
|
break;
|
|
|
|
case 12 :
|
|
DoMATAddMul();
|
|
break;
|
|
|
|
case 13 :
|
|
DoMATModSim();
|
|
break;
|
|
|
|
case 14 :
|
|
DoMATModDis();
|
|
break;
|
|
|
|
case 15 :
|
|
DoMATModMul();
|
|
break;
|
|
|
|
case 16 :
|
|
DoMATAddMulNTTEST();
|
|
break;
|
|
|
|
case 17 :
|
|
DoTerminate();
|
|
return( -1 );
|
|
|
|
default :
|
|
printf( "Invalid option\n" );
|
|
}
|
|
|
|
goto Menu;
|
|
}
|
|
|
|
|
|
VOID
|
|
GetStringA( char * String )
|
|
{
|
|
WORD iter = 0;
|
|
char ch = (char) getchar();
|
|
|
|
while ( ch != 0x0a )
|
|
{
|
|
String[iter] = ch;
|
|
ch = (char) getchar();
|
|
iter++;
|
|
}
|
|
|
|
String[iter] = 0;
|
|
}
|
|
|
|
|
|
VOID
|
|
GetStringW( WCHAR * String )
|
|
{
|
|
WORD iter = 0;
|
|
WCHAR ch = (WCHAR) getchar();
|
|
|
|
while ( ch != 0x0a )
|
|
{
|
|
String[iter] = ch;
|
|
ch = (WCHAR) getchar();
|
|
iter++;
|
|
}
|
|
|
|
String[iter] = 0;
|
|
}
|
|
|
|
|
|
VOID
|
|
PrintMenu( VOID )
|
|
{
|
|
printf( "\n" );
|
|
printf( "------------------------------------------------------\n" );
|
|
printf( "| DHCP Asyncronous Registration Test Tool |\n" );
|
|
printf( "------------------------------------------------------\n" );
|
|
printf( "| |\n" );
|
|
printf( "| 1) Initialize Asyncronous Registration API |\n" );
|
|
printf( "| 2) Terminate Asyncronous Registration API |\n" );
|
|
printf( "| 3) Register entry (with PTR) |\n" );
|
|
printf( "| 4) Deregister entry (with PTR) |\n" );
|
|
printf( "| 5) Register entry (without PTR) |\n" );
|
|
printf( "| 6) Deregister entry (without PTR) |\n" );
|
|
printf( "| 7) Register entry (RAS with PTR) |\n" );
|
|
printf( "| 8) Deregister entry (RAS with PTR) |\n" );
|
|
printf( "| 9) Remove interface |\n" );
|
|
printf( "| 10) Multi-adapter test (Add - all similar) |\n" );
|
|
printf( "| 11) Multi-adapter test (Add - disjoint) |\n" );
|
|
printf( "| 12) Multi-adapter test (Add - multi-master) |\n" );
|
|
printf( "| 13) Multi-adapter test (Mod - all similar) |\n" );
|
|
printf( "| 14) Multi-adapter test (Mod - disjoint) |\n" );
|
|
printf( "| 15) Multi-adapter test (Mod - multi-master) |\n" );
|
|
printf( "| 16) Multi-adapter test (Mod NT Test - multi-master)|\n" );
|
|
printf( "| 17) Quit |\n" );
|
|
printf( "| |\n" );
|
|
printf( ">>> " );
|
|
}
|
|
|
|
|
|
VOID
|
|
PrintIpAddress ( DWORD IpAddress )
|
|
{
|
|
printf( " %d.%d.%d.%d\n",
|
|
((BYTE *) &IpAddress)[0],
|
|
((BYTE *) &IpAddress)[1],
|
|
((BYTE *) &IpAddress)[2],
|
|
((BYTE *) &IpAddress)[3] );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoInitialize( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
|
|
Status = DnsAsyncRegisterInit( NULL );
|
|
|
|
printf( "DnsAsyncRegisterInit() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoTerminate( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
|
|
Status = DnsAsyncRegisterTerm();
|
|
|
|
printf( "DnsAsyncRegisterTerm() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoRegisterWithPTR( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
char AdapterName[256];
|
|
char HostName[256];
|
|
char DomainName[256];
|
|
char Address[500];
|
|
LPSTR lpTemp = NULL;
|
|
DWORD Part1, Part2, Part3, Part4;
|
|
char seps[]=" ,\t\n";
|
|
char* token;
|
|
INT ipAddrCount;
|
|
DWORD length, len;
|
|
IP_ADDRESS ServerList[15];
|
|
DWORD ServerListCount;
|
|
REGISTER_HOST_ENTRY HostAddrs[5];
|
|
REGISTER_HOST_STATUS RegisterStatus;
|
|
|
|
if (!(RegisterStatus.hDoneEvent = CreateEventA( NULL,
|
|
TRUE,
|
|
FALSE,
|
|
NULL)))
|
|
{
|
|
Status = GetLastError();
|
|
printf( "Cant create event.\n" );
|
|
printf ( "GetLastError() returned %x\n", Status );
|
|
exit(1);
|
|
}
|
|
|
|
printf( "Adapter Name: " );
|
|
GetStringA( AdapterName );
|
|
printf( "\n" );
|
|
|
|
printf( "Host Name: " );
|
|
GetStringA( HostName );
|
|
printf( "\n" );
|
|
|
|
printf( "Domain Name: " );
|
|
GetStringA( DomainName );
|
|
printf( "\n" );
|
|
|
|
printf( "IP Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ipAddrCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
printf( "\nRegistering DNS record for:\n" );
|
|
printf("AdapterName = %s\n", AdapterName);
|
|
printf("HostName = %s\n", HostName);
|
|
printf("DomainName = %s\n", DomainName);
|
|
|
|
printf( "Address: %d.%d.%d.%d\n", Part1, Part2, Part3, Part4 );
|
|
|
|
HostAddrs[ipAddrCount].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
|
|
HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ipAddrCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
printf( "Server Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ServerListCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
ServerList[ServerListCount] = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ServerListCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( AdapterName,
|
|
HostName,
|
|
HostAddrs,
|
|
ipAddrCount,
|
|
ServerList,
|
|
ServerListCount,
|
|
DomainName,
|
|
&RegisterStatus,
|
|
300,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
if ( Status == NO_ERROR )
|
|
{
|
|
Status = WaitForSingleObject( RegisterStatus.hDoneEvent, INFINITE ) ;
|
|
|
|
if ( Status != WAIT_OBJECT_0 )
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs failed with %x.\n", Status ) ;
|
|
exit(1) ;
|
|
}
|
|
else
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs completes with: %x.\n",
|
|
RegisterStatus.dwStatus ) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
VOID
|
|
DoDeregisterWithPTR( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
char AdapterName[256];
|
|
char HostName[256];
|
|
char DomainName[256];
|
|
char Address[500];
|
|
LPSTR lpTemp = NULL;
|
|
DWORD Part1, Part2, Part3, Part4;
|
|
char seps[]=" ,\t\n";
|
|
char* token;
|
|
INT ipAddrCount;
|
|
DWORD length, len;
|
|
IP_ADDRESS ServerList[15];
|
|
DWORD ServerListCount;
|
|
REGISTER_HOST_ENTRY HostAddrs[5];
|
|
REGISTER_HOST_STATUS RegisterStatus;
|
|
|
|
if (!(RegisterStatus.hDoneEvent = CreateEventA( NULL,
|
|
TRUE,
|
|
FALSE,
|
|
NULL)))
|
|
{
|
|
Status = GetLastError();
|
|
printf( "Cant create event.\n" );
|
|
printf ( "GetLastError() returned %x\n", Status );
|
|
exit(1);
|
|
}
|
|
|
|
printf( "Adapter Name: " );
|
|
GetStringA( AdapterName );
|
|
printf( "\n" );
|
|
|
|
printf( "Host Name: " );
|
|
GetStringA( HostName );
|
|
printf( "\n" );
|
|
|
|
printf( "Domain Name: " );
|
|
GetStringA( DomainName );
|
|
printf( "\n" );
|
|
|
|
printf( "IP Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ipAddrCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
printf( "\nRegistering DNS record for:\n" );
|
|
printf("AdapterName = %s\n", AdapterName);
|
|
printf("HostName = %s\n", HostName);
|
|
printf("DomainName = %s\n", DomainName);
|
|
|
|
printf( "Address: %d.%d.%d.%d\n", Part1, Part2, Part3, Part4 );
|
|
|
|
HostAddrs[ipAddrCount].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
|
|
HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ipAddrCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
printf( "Server Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ServerListCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
ServerList[ServerListCount] = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ServerListCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( AdapterName,
|
|
HostName,
|
|
HostAddrs,
|
|
ipAddrCount,
|
|
ServerList,
|
|
ServerListCount,
|
|
DomainName,
|
|
&RegisterStatus,
|
|
300,
|
|
DYNDNS_REG_PTR |
|
|
DYNDNS_DEL_ENTRY );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
if ( Status == NO_ERROR )
|
|
{
|
|
Status = WaitForSingleObject( RegisterStatus.hDoneEvent, INFINITE ) ;
|
|
|
|
if ( Status != WAIT_OBJECT_0 )
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs failed with %x.\n", Status ) ;
|
|
exit(1) ;
|
|
}
|
|
else
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs completes with: %x.\n",
|
|
RegisterStatus.dwStatus ) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
VOID
|
|
DoRegisterWithoutPTR( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
char AdapterName[256];
|
|
char HostName[256];
|
|
char DomainName[256];
|
|
char Address[500];
|
|
LPSTR lpTemp = NULL;
|
|
DWORD Part1, Part2, Part3, Part4;
|
|
char seps[]=" ,\t\n";
|
|
char* token;
|
|
INT ipAddrCount;
|
|
DWORD length, len;
|
|
IP_ADDRESS ServerList[15];
|
|
DWORD ServerListCount;
|
|
REGISTER_HOST_ENTRY HostAddrs[5];
|
|
REGISTER_HOST_STATUS RegisterStatus;
|
|
|
|
if (!(RegisterStatus.hDoneEvent = CreateEventA( NULL,
|
|
TRUE,
|
|
FALSE,
|
|
NULL)))
|
|
{
|
|
Status = GetLastError();
|
|
printf( "Cant create event.\n" );
|
|
printf ( "GetLastError() returned %x\n", Status );
|
|
exit(1);
|
|
}
|
|
|
|
printf( "Adapter Name: " );
|
|
GetStringA( AdapterName );
|
|
printf( "\n" );
|
|
|
|
printf( "Host Name: " );
|
|
GetStringA( HostName );
|
|
printf( "\n" );
|
|
|
|
printf( "Domain Name: " );
|
|
GetStringA( DomainName );
|
|
printf( "\n" );
|
|
|
|
printf( "IP Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ipAddrCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
printf( "\nRegistering DNS record for:\n" );
|
|
printf("AdapterName = %s\n", AdapterName);
|
|
printf("HostName = %s\n", HostName);
|
|
printf("DomainName = %s\n", DomainName);
|
|
|
|
printf( "Address: %d.%d.%d.%d\n", Part1, Part2, Part3, Part4 );
|
|
|
|
HostAddrs[ipAddrCount].dwOptions = REGISTER_HOST_A;
|
|
|
|
HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ipAddrCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
printf( "Server Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ServerListCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
ServerList[ServerListCount] = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ServerListCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( AdapterName,
|
|
HostName,
|
|
HostAddrs,
|
|
ipAddrCount,
|
|
ServerList,
|
|
ServerListCount,
|
|
DomainName,
|
|
&RegisterStatus,
|
|
300,
|
|
0 );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
if ( Status == NO_ERROR )
|
|
{
|
|
Status = WaitForSingleObject( RegisterStatus.hDoneEvent, INFINITE ) ;
|
|
|
|
if ( Status != WAIT_OBJECT_0 )
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs failed with %x.\n", Status ) ;
|
|
exit(1) ;
|
|
}
|
|
else
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs completes with: %x.\n",
|
|
RegisterStatus.dwStatus ) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
VOID
|
|
DoDeregisterWithoutPTR( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
char AdapterName[256];
|
|
char HostName[256];
|
|
char DomainName[256];
|
|
char Address[500];
|
|
LPSTR lpTemp = NULL;
|
|
DWORD Part1, Part2, Part3, Part4;
|
|
char seps[]=" ,\t\n";
|
|
char* token;
|
|
INT ipAddrCount;
|
|
DWORD length, len;
|
|
IP_ADDRESS ServerList[15];
|
|
DWORD ServerListCount;
|
|
REGISTER_HOST_ENTRY HostAddrs[5];
|
|
REGISTER_HOST_STATUS RegisterStatus;
|
|
|
|
if (!(RegisterStatus.hDoneEvent = CreateEventA( NULL,
|
|
TRUE,
|
|
FALSE,
|
|
NULL)))
|
|
{
|
|
Status = GetLastError();
|
|
printf( "Cant create event.\n" );
|
|
printf ( "GetLastError() returned %x\n", Status );
|
|
exit(1);
|
|
}
|
|
|
|
printf( "Adapter Name: " );
|
|
GetStringA( AdapterName );
|
|
printf( "\n" );
|
|
|
|
printf( "Host Name: " );
|
|
GetStringA( HostName );
|
|
printf( "\n" );
|
|
|
|
printf( "Domain Name: " );
|
|
GetStringA( DomainName );
|
|
printf( "\n" );
|
|
|
|
printf( "IP Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ipAddrCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
printf( "\nRegistering DNS record for:\n" );
|
|
printf("AdapterName = %s\n", AdapterName);
|
|
printf("HostName = %s\n", HostName);
|
|
printf("DomainName = %s\n", DomainName);
|
|
|
|
printf( "Address: %d.%d.%d.%d\n", Part1, Part2, Part3, Part4 );
|
|
|
|
HostAddrs[ipAddrCount].dwOptions = REGISTER_HOST_A;
|
|
|
|
HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ipAddrCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
printf( "Server Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ServerListCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
ServerList[ServerListCount] = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ServerListCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( AdapterName,
|
|
HostName,
|
|
HostAddrs,
|
|
ipAddrCount,
|
|
ServerList,
|
|
ServerListCount,
|
|
DomainName,
|
|
&RegisterStatus,
|
|
300,
|
|
DYNDNS_DEL_ENTRY );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
if ( Status == NO_ERROR )
|
|
{
|
|
Status = WaitForSingleObject( RegisterStatus.hDoneEvent, INFINITE ) ;
|
|
|
|
if ( Status != WAIT_OBJECT_0 )
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs failed with %x.\n", Status ) ;
|
|
exit(1) ;
|
|
}
|
|
else
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs completes with: %x.\n",
|
|
RegisterStatus.dwStatus ) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
VOID
|
|
DoRASRegisterWithPTR( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
char AdapterName[256];
|
|
char HostName[256];
|
|
char DomainName[256];
|
|
char Address[500];
|
|
LPSTR lpTemp = NULL;
|
|
DWORD Part1, Part2, Part3, Part4;
|
|
char seps[]=" ,\t\n";
|
|
char* token;
|
|
INT ipAddrCount;
|
|
DWORD length, len;
|
|
IP_ADDRESS ServerList[15];
|
|
DWORD ServerListCount;
|
|
REGISTER_HOST_ENTRY HostAddrs[5];
|
|
REGISTER_HOST_STATUS RegisterStatus;
|
|
|
|
if (!(RegisterStatus.hDoneEvent = CreateEventA( NULL,
|
|
TRUE,
|
|
FALSE,
|
|
NULL)))
|
|
{
|
|
Status = GetLastError();
|
|
printf( "Cant create event.\n" );
|
|
printf ( "GetLastError() returned %x\n", Status );
|
|
exit(1);
|
|
}
|
|
|
|
printf( "Adapter Name: " );
|
|
GetStringA( AdapterName );
|
|
printf( "\n" );
|
|
|
|
printf( "Host Name: " );
|
|
GetStringA( HostName );
|
|
printf( "\n" );
|
|
|
|
printf( "Domain Name: " );
|
|
GetStringA( DomainName );
|
|
printf( "\n" );
|
|
|
|
printf( "IP Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ipAddrCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
printf( "\nRegistering DNS record for:\n" );
|
|
printf("AdapterName = %s\n", AdapterName);
|
|
printf("HostName = %s\n", HostName);
|
|
printf("DomainName = %s\n", DomainName);
|
|
|
|
printf( "Address: %d.%d.%d.%d\n", Part1, Part2, Part3, Part4 );
|
|
|
|
HostAddrs[ipAddrCount].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
|
|
HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ipAddrCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
printf( "Server Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ServerListCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
ServerList[ServerListCount] = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ServerListCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( AdapterName,
|
|
HostName,
|
|
HostAddrs,
|
|
ipAddrCount,
|
|
ServerList,
|
|
ServerListCount,
|
|
DomainName,
|
|
&RegisterStatus,
|
|
300,
|
|
DYNDNS_REG_PTR |
|
|
DYNDNS_REG_RAS );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
if ( Status == NO_ERROR )
|
|
{
|
|
Status = WaitForSingleObject( RegisterStatus.hDoneEvent, INFINITE ) ;
|
|
|
|
if ( Status != WAIT_OBJECT_0 )
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs failed with %x.\n", Status ) ;
|
|
exit(1) ;
|
|
}
|
|
else
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs completes with: %x.\n",
|
|
RegisterStatus.dwStatus ) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
VOID
|
|
DoRASDeregisterWithPTR( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
char AdapterName[256];
|
|
char HostName[256];
|
|
char DomainName[256];
|
|
char Address[500];
|
|
LPSTR lpTemp = NULL;
|
|
DWORD Part1, Part2, Part3, Part4;
|
|
char seps[]=" ,\t\n";
|
|
char* token;
|
|
INT ipAddrCount;
|
|
DWORD length, len;
|
|
IP_ADDRESS ServerList[15];
|
|
DWORD ServerListCount;
|
|
REGISTER_HOST_ENTRY HostAddrs[5];
|
|
REGISTER_HOST_STATUS RegisterStatus;
|
|
|
|
if (!(RegisterStatus.hDoneEvent = CreateEventA( NULL,
|
|
TRUE,
|
|
FALSE,
|
|
NULL)))
|
|
{
|
|
Status = GetLastError();
|
|
printf( "Cant create event.\n" );
|
|
printf ( "GetLastError() returned %x\n", Status );
|
|
exit(1);
|
|
}
|
|
|
|
printf( "Adapter Name: " );
|
|
GetStringA( AdapterName );
|
|
printf( "\n" );
|
|
|
|
printf( "Host Name: " );
|
|
GetStringA( HostName );
|
|
printf( "\n" );
|
|
|
|
printf( "Domain Name: " );
|
|
GetStringA( DomainName );
|
|
printf( "\n" );
|
|
|
|
printf( "IP Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ipAddrCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
printf( "\nRegistering DNS record for:\n" );
|
|
printf("AdapterName = %s\n", AdapterName);
|
|
printf("HostName = %s\n", HostName);
|
|
printf("DomainName = %s\n", DomainName);
|
|
|
|
printf( "Address: %d.%d.%d.%d\n", Part1, Part2, Part3, Part4 );
|
|
|
|
HostAddrs[ipAddrCount].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
|
|
HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ipAddrCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
printf( "Server Address(es): " );
|
|
GetStringA( Address );
|
|
printf( "\n" );
|
|
|
|
ServerListCount = 0;
|
|
|
|
length = strlen( Address );
|
|
token = strtok(Address, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
|
|
while ( token != NULL)
|
|
{
|
|
len += strlen( token ) + 1;
|
|
|
|
lpTemp = strtok( token, "." );
|
|
Part1 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part2 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part3 = atoi( lpTemp );
|
|
lpTemp = strtok( NULL, "." );
|
|
Part4 = atoi( lpTemp );
|
|
|
|
ServerList[ServerListCount] = (DWORD)(Part1) +
|
|
(DWORD)(Part2 << 8) +
|
|
(DWORD)(Part3 << 16) +
|
|
(DWORD)(Part4 << 24);
|
|
|
|
ServerListCount++;
|
|
|
|
if ( len < length )
|
|
lpTemp = &Address[len];
|
|
else
|
|
lpTemp = NULL;
|
|
token = strtok(lpTemp, seps);
|
|
if ( token )
|
|
len = (DWORD) (token - Address);
|
|
}
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( AdapterName,
|
|
HostName,
|
|
HostAddrs,
|
|
ipAddrCount,
|
|
ServerList,
|
|
ServerListCount,
|
|
DomainName,
|
|
&RegisterStatus,
|
|
300,
|
|
DYNDNS_REG_PTR |
|
|
DYNDNS_REG_RAS |
|
|
DYNDNS_DEL_ENTRY );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
if ( Status == NO_ERROR )
|
|
{
|
|
Status = WaitForSingleObject( RegisterStatus.hDoneEvent, INFINITE ) ;
|
|
|
|
if ( Status != WAIT_OBJECT_0 )
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs failed with %x.\n", Status ) ;
|
|
exit(1) ;
|
|
}
|
|
else
|
|
{
|
|
printf( "DnsAsyncRegisterHostAddrs completes with: %x.\n",
|
|
RegisterStatus.dwStatus ) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
VOID
|
|
DoRemoveInterface( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
|
|
char AdapterName[256];
|
|
|
|
printf( "Adapter Name: " );
|
|
GetStringA( AdapterName );
|
|
printf( "\n" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( AdapterName,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
NULL,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
DYNDNS_DEL_ENTRY );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoMATAddSim( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
REGISTER_HOST_ENTRY HostAddrs[2];
|
|
IP_ADDRESS ServerIp;
|
|
|
|
ServerIp = inet_addr( "172.31.56.186" );
|
|
|
|
HostAddrs[0].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "1.1.1.1" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "A",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"foo1.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "2.2.2.2" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "B",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"foo1.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "3.3.3.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "C",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"foo1.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoMATAddDis( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
REGISTER_HOST_ENTRY HostAddrs[2];
|
|
IP_ADDRESS ServerIp;
|
|
|
|
ServerIp = inet_addr( "172.31.56.187" );
|
|
|
|
HostAddrs[0].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "1.1.1.1" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "A",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "2.2.2.2" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "B",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
ServerIp = inet_addr( "172.31.61.174" );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "3.3.3.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "C",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoMATAddMul( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
REGISTER_HOST_ENTRY HostAddrs[2];
|
|
IP_ADDRESS ServerIp;
|
|
|
|
ServerIp = inet_addr( "172.31.56.186" );
|
|
|
|
HostAddrs[0].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "1.1.1.1" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "A",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
ServerIp = inet_addr( "172.31.56.187" );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "2.2.2.2" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "B",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
ServerIp = inet_addr( "172.31.61.174" );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "3.3.3.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "C",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoMATModSim( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
REGISTER_HOST_ENTRY HostAddrs[2];
|
|
IP_ADDRESS ServerIp;
|
|
|
|
ServerIp = inet_addr( "172.31.56.186" );
|
|
|
|
HostAddrs[0].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "1.1.1.2" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "A",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"foo1.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "2.2.2.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "B",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"foo1.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "3.3.3.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "C",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"foo1.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoMATModDis( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
REGISTER_HOST_ENTRY HostAddrs[2];
|
|
IP_ADDRESS ServerIp;
|
|
|
|
ServerIp = inet_addr( "172.31.56.186" );
|
|
|
|
HostAddrs[0].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "1.1.1.2" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "A",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "2.2.2.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "B",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
ServerIp = inet_addr( "172.31.61.174" );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "3.3.3.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "C",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoMATModMul( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
REGISTER_HOST_ENTRY HostAddrs[2];
|
|
IP_ADDRESS ServerIp;
|
|
|
|
ServerIp = inet_addr( "172.31.56.186" );
|
|
|
|
HostAddrs[0].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "1.1.1.2" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "A",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
ServerIp = inet_addr( "172.31.56.187" );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "2.2.2.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "B",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
ServerIp = inet_addr( "172.31.61.174" );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "3.3.3.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "C",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"upd.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|
|
VOID
|
|
DoMATAddMulNTTEST( VOID )
|
|
{
|
|
DNS_STATUS Status = NO_ERROR;
|
|
REGISTER_HOST_ENTRY HostAddrs[2];
|
|
IP_ADDRESS ServerIp;
|
|
|
|
ServerIp = inet_addr( "157.55.83.254" );
|
|
|
|
HostAddrs[0].dwOptions = REGISTER_HOST_A | REGISTER_HOST_PTR;
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "1.1.1.1" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "A",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"nttest.microsoft.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
ServerIp = inet_addr( "172.31.52.7" );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "2.2.2.2" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "B",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"nttest.microsoft.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
|
|
ServerIp = inet_addr( "157.55.92.35" );
|
|
|
|
HostAddrs[0].Addr.ipAddr = inet_addr( "3.3.3.3" );
|
|
|
|
Status = DnsAsyncRegisterHostAddrs_A( "C",
|
|
"glennc",
|
|
HostAddrs,
|
|
1,
|
|
&ServerIp,
|
|
1,
|
|
"nttest.microsoft.com",
|
|
NULL,
|
|
60*5,
|
|
DYNDNS_REG_PTR );
|
|
|
|
printf( "DnsAsyncRegisterHostAddrs_A() returned: 0x%x\n", Status );
|
|
}
|
|
|
|
|