From: wessels <> Date: Wed, 18 Feb 1998 07:34:35 +0000 (+0000) Subject: From: Maxim Krasnyansky X-Git-Tag: SQUID_3_0_PRE1~4075 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=09c483ecad0513bc7c5933e9c468713287f4606c;p=thirdparty%2Fsquid.git From: Maxim Krasnyansky Added 'dns_nameservers' config option to specify non-default DNS nameserver addresses. --- diff --git a/src/cf.data.pre b/src/cf.data.pre index 485c1d8afd..315c229a50 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -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 diff --git a/src/dns.cc b/src/dns.cc index 2428296f2b..9368fcc70f 100644 --- a/src/dns.cc +++ b/src/dns.cc @@ -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); diff --git a/src/dnsserver.cc b/src/dnsserver.cc index 48b995cd37..783105c46c 100644 --- a/src/dnsserver.cc +++ b/src/dnsserver.cc @@ -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); diff --git a/src/structs.h b/src/structs.h index bbfed3f4b5..156ac76f8f 100644 --- a/src/structs.h +++ b/src/structs.h @@ -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;