aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/ndb/dns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/ndb/dns.c')
-rwxr-xr-xsrc/cmd/ndb/dns.c39
1 files changed, 28 insertions, 11 deletions
diff --git a/src/cmd/ndb/dns.c b/src/cmd/ndb/dns.c
index 90a1a193..901b7acb 100755
--- a/src/cmd/ndb/dns.c
+++ b/src/cmd/ndb/dns.c
@@ -96,7 +96,8 @@ Job* newjob(void);
void freejob(Job*);
void setext(char*, int, char*);
-char *portname = "domain";
+char *tcpaddr = "tcp!*!dns";
+char *udpaddr = "udp!*!dns";
char *logfile = "dns";
char *dbfile;
char mntpt[Maxpath];
@@ -105,11 +106,22 @@ char *LOG;
void
usage(void)
{
- fprint(2, "usage: dns [-dnrstT] [-a maxage] [-f ndb-file] [-p port] [-x service] [-z zoneprog]\n");
+ fprint(2, "usage: dns [-dnrst] [-a maxage] [-f ndb-file] [-p port] [-T tcpaddr] [-U udpaddr] [-x service] [-z zoneprog]\n");
threadexitsall("usage");
}
void
+checkaddress(void)
+{
+ char *u, *t;
+
+ u = strchr(udpaddr, '!');
+ t = strchr(tcpaddr, '!');
+ if(u && t && strcmp(u, t) != 0)
+ fprint(2, "warning: announce mismatch %s %s\n", udpaddr, tcpaddr);
+}
+
+void
threadmain(int argc, char *argv[])
{
int serveudp, servetcp;
@@ -136,28 +148,33 @@ threadmain(int argc, char *argv[])
serveudp = 1;
cachedb = 1;
break;
- case 'T':
+ case 't':
servetcp = 1;
cachedb = 1;
break;
case 'a':
maxage = atoi(EARGF(usage()));
break;
- case 't':
- testing = 1;
- break;
case 'z':
zonerefreshprogram = EARGF(usage());
break;
- case 'p':
- portname = EARGF(usage());
- break;
case 'n':
sendnotifies = 1;
break;
+ case 'U':
+ udpaddr = estrdup(netmkaddr(EARGF(usage()), "udp", "dns"));
+ break;
+ case 'T':
+ tcpaddr = estrdup(netmkaddr(EARGF(usage()), "tcp", "dns"));
+ break;
+ default:
+ usage();
}ARGEND
- USED(argc);
- USED(argv);
+
+ if(argc)
+ usage();
+ if(serveudp && servetcp)
+ checkaddress();
rfork(RFNOTEG);