]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
From: Maxim Krasnyansky <max@viper.uznet.net>
authorwessels <>
Wed, 18 Feb 1998 07:34:35 +0000 (07:34 +0000)
committerwessels <>
Wed, 18 Feb 1998 07:34:35 +0000 (07:34 +0000)
Added 'dns_nameservers' config option to specify non-default DNS
nameserver addresses.

src/cf.data.pre
src/dns.cc
src/dnsserver.cc
src/structs.h

index 485c1d8afd18d75348d32b10fb82d8b73abc0bfb..315c229a5009cc5c9c2b07a3158bc8756bf41041 100644 (file)
@@ -831,6 +831,20 @@ DOC_START
 dns_defnames off
 DOC_END
 
+NAME: dns_nameservers
+TYPE: wordlist
+DEFAULT: none
+LOC: Config.dns_nameservers
+DOC_START
+       Use this if you want to specify a list of DNS name servers
+       (IP addresses) to use instead of those given in your
+       /etc/resolv.conf file.
+
+       Example: dns_nameservers 10.0.0.1 192.172.0.4
+
+dns_nameservers none
+DOC_END
+
 
 NAME: unlinkd_program
 TYPE: string
index 2428296f2b04009158485bbc6aef6f20ee514d5a..9368fcc70f3640eb9b0364a928d79d690f59b8d7 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: dns.cc,v 1.54 1998/02/07 08:13:36 wessels Exp $
+ * $Id: dns.cc,v 1.55 1998/02/18 00:34:36 wessels Exp $
  *
  * DEBUG: section 34    Dnsserver interface
  * AUTHOR: Harvest Derived
@@ -156,16 +156,25 @@ dnsOpenServers(void)
     int wfd;
     LOCAL_ARRAY(char, fd_note_buf, FD_DESC_SZ);
     char *s;
-    char *args[3];
+    char *args[64];
+    int nargs = 0;
+    wordlist *w;
 
     dnsFreeMemory();
     dns_child_table = xcalloc(N, sizeof(dnsserver_t *));
     NDnsServersAlloc = 0;
-    args[0] = "(dnsserver)";
-    args[1] = NULL;
-    args[2] = NULL;
+    args[nargs++] = "(dnsserver)";
     if (Config.onoff.res_defnames)
-       args[1] = "-D";
+       args[nargs++] = "-D";
+    if (Config.dns_nameservers != NULL) {
+       args[nargs++] = "-s";
+       for (w = Config.dns_nameservers; w != NULL; w = w->next) {
+           if (nargs > 60)
+               break;
+           args[nargs++] = w->key;
+       }
+    }
+    args[nargs++] = NULL;
     for (k = 0; k < N; k++) {
        dns_child_table[k] = xcalloc(1, sizeof(dnsserver_t));
        cbdataAdd(dns_child_table[k], MEM_NONE);
index 48b995cd378d10b4b8080769380d482b86236d7c..783105c46c151e4ac407e7ef4be46ba54009cf76 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: dnsserver.cc,v 1.45 1998/02/17 18:59:36 wessels Exp $
+ * $Id: dnsserver.cc,v 1.46 1998/02/18 00:34:37 wessels Exp $
  *
  * DEBUG: section 0     DNS Resolver
  * AUTHOR: Harvest Derived
@@ -264,6 +264,8 @@ main(int argc, char *argv[])
     int alias_count = 0;
     int i;
     int c;
+    int opt_s = 0;
+    extern char *optarg;
 
     safe_inet_addr("255.255.255.255", &no_addr);
 
@@ -280,19 +282,8 @@ main(int argc, char *argv[])
 #endif
 #endif
 
-    while ((c = getopt(argc, argv, "vhdD")) != -1) {
+    while ((c = getopt(argc, argv, "Ddhs:v")) != -1) {
        switch (c) {
-       case 'v':
-           printf("dnsserver version %s\n", SQUID_VERSION);
-           exit(0);
-           break;
-       case 'd':
-           snprintf(buf, 256, "dnsserver.%d.log", (int) getpid());
-           logfile = fopen(buf, "a");
-           do_debug++;
-           if (!logfile)
-               fprintf(stderr, "Could not open dnsserver's log file\n");
-           break;
        case 'D':
 #ifdef RES_DEFNAMES
            _res.options |= RES_DEFNAMES;
@@ -301,7 +292,29 @@ main(int argc, char *argv[])
            _res.options |= RES_DNSRCH;
 #endif
            break;
+       case 'd':
+           snprintf(buf, 256, "dnsserver.%d.log", (int) getpid());
+           logfile = fopen(buf, "a");
+           do_debug++;
+           if (!logfile)
+               fprintf(stderr, "Could not open dnsserver's log file\n");
+           break;
        case 'h':
+           fprintf(stderr, "usage: dnsserver -hvd\n");
+           exit(1);
+           break;
+       case 's':
+           if (opt_s == 0) {
+               _res.nscount = 0;
+               _res.options |= RES_INIT;
+               opt_s = 1;
+           }
+           safe_inet_addr(optarg, &_res.nsaddr_list[_res.nscount++].sin_addr);
+           break;
+       case 'v':
+           printf("dnsserver version %s\n", SQUID_VERSION);
+           exit(0);
+           break;
        default:
            fprintf(stderr, "usage: dnsserver -hvd\n");
            exit(1);
index bbfed3f4b5ce7831fc3e96a8d9353d9e5819e690..156ac76f8f47826b504471ff99043da23e6c0b45 100644 (file)
@@ -250,6 +250,7 @@ struct _SquidConfig {
     wordlist *hierarchy_stoplist;
     wordlist *mcast_group_list;
     wordlist *dns_testname_list;
+    wordlist *dns_nameservers;
     relist *cache_stop_relist;
     peer *peers;
     int npeers;