tdnstcp.c - plan9port - [fork] Plan 9 from user space | |
git clone git://src.adamsgaard.dk/plan9port | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
tdnstcp.c (1884B) | |
--- | |
1 #include <u.h> | |
2 #include <libc.h> | |
3 #include <ip.h> | |
4 #include <bio.h> | |
5 #include <ndb.h> | |
6 #include <thread.h> | |
7 #include "dns.h" | |
8 | |
9 enum | |
10 { | |
11 Maxpath= 128 | |
12 }; | |
13 | |
14 char *logfile = "dns"; | |
15 char *dbfile; | |
16 int debug; | |
17 int cachedb = 1; | |
18 int testing; | |
19 int traceactivity; | |
20 int needrefresh; | |
21 int resolver; | |
22 char mntpt[Maxpath]; | |
23 ulong now; | |
24 int maxage; | |
25 uchar ipaddr[IPaddrlen]; /* my ip address */ | |
26 char *LOG; | |
27 char *zonerefreshprogram; | |
28 char *tcpaddr; | |
29 char *udpaddr; | |
30 | |
31 void | |
32 usage(void) | |
33 { | |
34 fprint(2, "usage: dnstcp [-dr] [-f dbfile]\n"); | |
35 threadexitsall("usage"); | |
36 } | |
37 | |
38 void | |
39 threadmain(int argc, char *argv[]) | |
40 { | |
41 ARGBEGIN{ | |
42 default: | |
43 usage(); | |
44 case 'd': | |
45 debug++; | |
46 break; | |
47 case 'f': | |
48 dbfile = EARGF(usage()); | |
49 break; | |
50 case 'r': | |
51 resolver = 1; | |
52 break; | |
53 }ARGEND | |
54 | |
55 if(argc) | |
56 usage(); | |
57 | |
58 if(debug < 2) | |
59 debug = 0; | |
60 | |
61 dninit(); | |
62 | |
63 db2cache(1); | |
64 tcpproc(0); | |
65 } | |
66 | |
67 /* | |
68 * the following varies between dnsdebug and dns | |
69 */ | |
70 void | |
71 logreply(int id, uchar *addr, DNSmsg *mp) | |
72 { | |
73 RR *rp; | |
74 | |
75 syslog(0, LOG, "%d: rcvd %I flags:%s%s%s%s%s", id, addr, | |
76 mp->flags & Fauth ? " auth" : "", | |
77 mp->flags & Ftrunc ? " trunc" : "", | |
78 mp->flags & Frecurse ? " rd" : "", | |
79 mp->flags & Fcanrec ? " ra" : "", | |
80 mp->flags & (Fauth|Rname) == (Fauth|Rname) ? | |
81 " nx" : ""); | |
82 for(rp = mp->qd; rp != nil; rp = rp->next) | |
83 syslog(0, LOG, "%d: rcvd %I qd %s", id, addr, rp->owner-… | |
84 for(rp = mp->an; rp != nil; rp = rp->next) | |
85 syslog(0, LOG, "%d: rcvd %I an %R", id, addr, rp); | |
86 for(rp = mp->ns; rp != nil; rp = rp->next) | |
87 syslog(0, LOG, "%d: rcvd %I ns %R", id, addr, rp); | |
88 for(rp = mp->ar; rp != nil; rp = rp->next) | |
89 syslog(0, LOG, "%d: rcvd %I ar %R", id, addr, rp); | |
90 } | |
91 | |
92 void | |
93 logsend(int id, int subid, uchar *addr, char *sname, char *rname, int ty… | |
94 { | |
95 char buf[12]; | |
96 | |
97 syslog(0, LOG, "%d.%d: sending to %I/%s %s %s", | |
98 id, subid, addr, sname, rname, rrname(type, buf, sizeof … | |
99 } | |
100 | |
101 RR* | |
102 getdnsservers(int class) | |
103 { | |
104 return dnsservers(class); | |
105 } |