1 3e0d8fb3 2005-12-27 devnull #include <u.h>
2 3e0d8fb3 2005-12-27 devnull #include <libc.h>
3 3e0d8fb3 2005-12-27 devnull #include <ip.h>
4 5c9f76b5 2006-02-14 devnull #include <bio.h>
5 5c9f76b5 2006-02-14 devnull #include <ndb.h>
6 5c9f76b5 2006-02-14 devnull #include <thread.h>
7 3e0d8fb3 2005-12-27 devnull #include "dns.h"
11 226d80b8 2006-04-01 devnull Maxpath= 128
14 3e0d8fb3 2005-12-27 devnull char *logfile = "dns";
15 3e0d8fb3 2005-12-27 devnull char *dbfile;
16 3e0d8fb3 2005-12-27 devnull int debug;
17 3e0d8fb3 2005-12-27 devnull int cachedb = 1;
18 3e0d8fb3 2005-12-27 devnull int testing;
19 5c9f76b5 2006-02-14 devnull int traceactivity;
20 3e0d8fb3 2005-12-27 devnull int needrefresh;
21 3e0d8fb3 2005-12-27 devnull int resolver;
22 3e0d8fb3 2005-12-27 devnull char mntpt[Maxpath];
23 3e0d8fb3 2005-12-27 devnull ulong now;
24 3e0d8fb3 2005-12-27 devnull int maxage;
25 3e0d8fb3 2005-12-27 devnull uchar ipaddr[IPaddrlen]; /* my ip address */
26 3e0d8fb3 2005-12-27 devnull char *LOG;
27 3e0d8fb3 2005-12-27 devnull char *zonerefreshprogram;
28 49a1496c 2006-02-20 devnull char *tcpaddr;
29 49a1496c 2006-02-20 devnull char *udpaddr;
32 aa01e1fe 2006-02-15 devnull usage(void)
34 aa01e1fe 2006-02-15 devnull fprint(2, "usage: dnstcp [-dr] [-f dbfile]\n");
35 aa01e1fe 2006-02-15 devnull threadexitsall("usage");
39 aa01e1fe 2006-02-15 devnull threadmain(int argc, char *argv[])
41 3e0d8fb3 2005-12-27 devnull ARGBEGIN{
44 3e0d8fb3 2005-12-27 devnull case 'd':
47 3e0d8fb3 2005-12-27 devnull case 'f':
48 5c9f76b5 2006-02-14 devnull dbfile = EARGF(usage());
50 3e0d8fb3 2005-12-27 devnull case 'r':
51 3e0d8fb3 2005-12-27 devnull resolver = 1;
58 3e0d8fb3 2005-12-27 devnull if(debug < 2)
59 3e0d8fb3 2005-12-27 devnull debug = 0;
61 3e0d8fb3 2005-12-27 devnull dninit();
63 3e0d8fb3 2005-12-27 devnull db2cache(1);
64 5c9f76b5 2006-02-14 devnull tcpproc(0);
68 3e0d8fb3 2005-12-27 devnull * the following varies between dnsdebug and dns
71 3e0d8fb3 2005-12-27 devnull logreply(int id, uchar *addr, DNSmsg *mp)
75 3e0d8fb3 2005-12-27 devnull syslog(0, LOG, "%d: rcvd %I flags:%s%s%s%s%s", id, addr,
76 3e0d8fb3 2005-12-27 devnull mp->flags & Fauth ? " auth" : "",
77 3e0d8fb3 2005-12-27 devnull mp->flags & Ftrunc ? " trunc" : "",
78 3e0d8fb3 2005-12-27 devnull mp->flags & Frecurse ? " rd" : "",
79 3e0d8fb3 2005-12-27 devnull mp->flags & Fcanrec ? " ra" : "",
80 3e0d8fb3 2005-12-27 devnull mp->flags & (Fauth|Rname) == (Fauth|Rname) ?
81 3e0d8fb3 2005-12-27 devnull " nx" : "");
82 3e0d8fb3 2005-12-27 devnull for(rp = mp->qd; rp != nil; rp = rp->next)
83 3e0d8fb3 2005-12-27 devnull syslog(0, LOG, "%d: rcvd %I qd %s", id, addr, rp->owner->name);
84 3e0d8fb3 2005-12-27 devnull for(rp = mp->an; rp != nil; rp = rp->next)
85 3e0d8fb3 2005-12-27 devnull syslog(0, LOG, "%d: rcvd %I an %R", id, addr, rp);
86 3e0d8fb3 2005-12-27 devnull for(rp = mp->ns; rp != nil; rp = rp->next)
87 3e0d8fb3 2005-12-27 devnull syslog(0, LOG, "%d: rcvd %I ns %R", id, addr, rp);
88 3e0d8fb3 2005-12-27 devnull for(rp = mp->ar; rp != nil; rp = rp->next)
89 3e0d8fb3 2005-12-27 devnull syslog(0, LOG, "%d: rcvd %I ar %R", id, addr, rp);
93 3e0d8fb3 2005-12-27 devnull logsend(int id, int subid, uchar *addr, char *sname, char *rname, int type)
95 3e0d8fb3 2005-12-27 devnull char buf[12];
97 3e0d8fb3 2005-12-27 devnull syslog(0, LOG, "%d.%d: sending to %I/%s %s %s",
98 3e0d8fb3 2005-12-27 devnull id, subid, addr, sname, rname, rrname(type, buf, sizeof buf));
102 3e0d8fb3 2005-12-27 devnull getdnsservers(int class)
104 3e0d8fb3 2005-12-27 devnull return dnsservers(class);