/*++ Copyright (c) 1997 Microsoft Corporation Module Name: adddom.c Abstract: Domain Name System (DNS) Server Test Code for adding a Zone Author: Ram Viswanathan (ramv) 14th March 1997 Revision History: Ram Viswanathan (ramv) 14th March 1997 Created 5th May 1997 Added Callback function testing --*/ #include // // ********* CRunTime Includes // #include #include #include #include #include "dns.h" #include "dnsapi.h" #include "dnslib.h" INT __cdecl main (int argc, char *argv[]) { DWORD dwRes; LPSTR pszMapFile = NULL; INT i; BOOL fDownLevel =FALSE; DWORD dwOperation = DYNDNS_ADD_ENTRY; LPSTR lpTemp = NULL; DWORD Part1, Part2, Part3, Part4; FILE *fp = NULL; CHAR szInputString[MAX_PATH]; CHAR szAddr[20]; LPSTR pszAddr = NULL; CHAR szName[50]; CHAR c; DWORD dwFlags = 0; char seps[]=" ,\t\n"; CHAR AdapterName[50]; CHAR HostName[50]; CHAR DomainName[50]; INT ipAddrCount; REGISTER_HOST_ENTRY HostAddrs[5]; char *token; // // 1st argument is a/d (for add or delete) // 2nd argument is f/n (register forwards/not register forwards) // 3rd argument is filename // Note that no optional parameters are set // if (argc != 2){ printf("Usage is %s filename \n", argv[0]); exit(-1); } pszMapFile = argv[1]; // // set up stuff for registration // dwRes = DnsAsyncRegisterInit(NULL); if (dwRes){ printf("Init failed with %x\n", dwRes); } if (!(fp = fopen (pszMapFile, "r+"))){ printf(" Could not open map file %s \n", pszMapFile); } while (fgets (szInputString, MAX_PATH, fp) != NULL){ // // parse the input string // token = strtok(szInputString, seps); strcpy (AdapterName, token); token =strtok(NULL, seps); strcpy (HostName, token); token =strtok(NULL, seps); strcpy (DomainName, token); ipAddrCount = 0; token =strtok(NULL, seps); while ( token != NULL){ strcpy (szAddr, token); lpTemp = strtok( szAddr, "." ); 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_PTR; HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) + (DWORD)(Part2 << 8) + (DWORD)(Part3 << 16) + (DWORD)(Part4 << 24); ipAddrCount++; token =strtok(NULL, seps); } dwRes = DnsAsyncRegisterHostAddrs_A ( AdapterName, HostName, HostAddrs, ipAddrCount, NULL, 0, DomainName, NULL, 40, 0 ); if (dwRes){ printf("Host Name registration failed with %x\n", dwRes); } } fclose(fp); printf("Hit Enter to do the ipconfig /release now! \n"); c = getchar(); // // do the releases now // if (!(fp = fopen (pszMapFile, "r+"))){ printf(" Could not open map file %s \n", pszMapFile); } while (fgets (szInputString, MAX_PATH, fp) != NULL){ // // parse the input string // token = strtok(szInputString, seps); strcpy (AdapterName, token); token =strtok(NULL, seps); strcpy (HostName, token); token =strtok(NULL, seps); strcpy (DomainName, token); ipAddrCount = 0; token =strtok(NULL, seps); while ( token != NULL){ strcpy (szAddr, token); lpTemp = strtok( szAddr, "." ); 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_PTR; HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) + (DWORD)(Part2 << 8) + (DWORD)(Part3 << 16) + (DWORD)(Part4 << 24); ipAddrCount++; token =strtok(NULL, seps); } dwRes = DnsAsyncRegisterHostAddrs_A ( AdapterName, HostName, HostAddrs, ipAddrCount, NULL, 0, DomainName, NULL, 40, DYNDNS_DEL_ENTRY ); if (dwRes){ printf("Host Name registration failed with %x\n", dwRes); } } fclose(fp); printf("Hit Enter to do the ipconfig /renew now! \n"); c = getchar(); if (!(fp = fopen (pszMapFile, "r+"))){ printf(" Could not open map file %s \n", pszMapFile); } while (fgets (szInputString, MAX_PATH, fp) != NULL){ // // parse the input string // token = strtok(szInputString, seps); strcpy (AdapterName, token); token =strtok(NULL, seps); strcpy (HostName, token); token =strtok(NULL, seps); strcpy (DomainName, token); ipAddrCount = 0; token =strtok(NULL, seps); while ( token != NULL){ strcpy (szAddr, token); lpTemp = strtok( szAddr, "." ); 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_PTR; HostAddrs[ipAddrCount].Addr.ipAddr = (DWORD)(Part1) + (DWORD)(Part2 << 8) + (DWORD)(Part3 << 16) + (DWORD)(Part4 << 24); ipAddrCount++; token =strtok(NULL, seps); } dwRes = DnsAsyncRegisterHostAddrs_A ( AdapterName, HostName, HostAddrs, ipAddrCount, NULL, 0, DomainName, NULL, 40, 0 ); if (dwRes){ printf("Host Name registration failed with %x\n", dwRes); } } fclose(fp); c = getchar(); dwRes = DnsAsyncRegisterTerm(); if (dwRes){ printf("Termination failed with %x\n", dwRes); } c = getchar(); error: return(1); }