How to deal with DHCP and DNS(-tools)?

Pierre A. Humblet pierre.humblet@ieee.org
Tue Jan 4 17:02:00 GMT 2005


On Mon, Jan 03, 2005 at 09:52:24PM +0100, Olaf F?llinger wrote:
> Hi,
> 
> on my notebook with WinXP I'm using cygwin day by day. I receive the ip
> configuration by dhcp from windows. While most of the cygwins tools have
> no problem the dns tools(host, dig,...) seems to insist on a working
> /etc/resolv.conf. Does anyone have a automatic solution for updating
> this file with the current settings?
  
You could write a program using minires. It should call
res_init to initialize the _res structure and then
print the fields to /etc/resolv.conf, as sketched below.

Note that if /etc/resolv.conf exists, then minires will use it
in preference to the Windows values. Thus /etc/resolv must be
renamed in your program.

Also /etc/resolv.conf will affect applications using minires.
On Win2000 and XP they will call the nameservers specified in
/etc/resolv.conf instead of using the native Windows resolver,
except if the "options" line in /etc/resolv.conf contains the
"osquery" keyword.

Pierre

#include <stdio.h>
#include <netinet/in.h>
#include <netdb.h>
#include <resolv.h>

main()
{
   FILE *fd;
   int i;

   rename (_PATH_RESCONF, _PATH_RESCONF ".bak");
   fd = fopen (_PATH_RESCONF, "wb");	
   _res.options |= RES_DEBUG; So you can see what happens
   res_init ();
   /* Print domain name */
   if (_res.defdname[0])
     fprintf (fd, "domain %s", _res.defdname);
   /* Print search list */
   for (i=0; _res.dnsrch[i]; i++)
      fprintf(fd, ..., _res.dnsrch[i]);
   /* Print name server addresses */
   for (i=0; i < _res.nscount; i++)
     fprintf (fd, ..., _res.nsaddr_list[i]...);
}

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list