]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/ndb/dnsgetip.c
sshfs: usage
[plan9front.git] / sys / src / cmd / ndb / dnsgetip.c
1 /* one-shot resolver */
2 #include <u.h>
3 #include <libc.h>
4 #include <bio.h>
5 #include <ndb.h>
6 #include "dns.h"
7
8 Cfg cfg;
9 char *dbfile;
10 int debug               = 0;
11 char *logfile           = "dnsgetip";
12 int     maxage          = 60*60;
13 char mntpt[Maxpath];
14 int     needrefresh     = 0;
15 ulong   now             = 0;
16 vlong   nowns           = 0;
17 int     testing         = 0;
18 int     traceactivity   = 0;
19 char    *zonerefreshprogram;
20
21 int aflag;
22
23 void
24 resolve(char *name, int type)
25 {
26         Request req;
27         RR *rp;
28
29         memset(&req, 0, sizeof req);
30         getactivity(&req, 0);
31         req.isslave = 1;
32         req.aborttime = NS2MS(nowns) + Maxreqtm;
33
34         rp = dnresolve(name, Cin, type, &req, 0, 0, Recurse, 0, 0);
35         rrremneg(&rp);
36         while(rp != nil){
37                 print("%s\n", rp->ip->name);
38                 if(!aflag)
39                         exits(nil);
40                 rp = rp->next;
41         }
42 }
43
44 void
45 usage(void)
46 {
47         fprint(2, "%s: [-adx] domain\n", argv0);
48         exits("usage");
49 }
50
51 void
52 main(int argc, char **argv)
53 {
54         strcpy(mntpt, "/net");
55         cfg.inside = 1;
56         cfg.resolver = 1;
57
58         ARGBEGIN{
59         case 'a':
60                 aflag = 1;
61                 break;
62         case 'd':
63                 debug++;
64                 break;
65         case 'x':
66                 strcpy(mntpt, "/net.alt");
67                 break;
68         default:
69                 usage();
70         }ARGEND
71
72         if(argc != 1)
73                 usage();
74
75         if(strcmp(ipattr(*argv), "ip") == 0)
76                 print("%s\n", *argv);
77         else {
78                 dninit();
79                 resolve(*argv, Ta);
80                 resolve(*argv, Taaaa);
81         }
82         exits(nil);
83 }
84
85 RR*
86 getdnsservers(int class)
87 {
88         return dnsservers(class);
89 }
90
91 /* stubs */
92 void syslog(int, char*, char*, ...){}
93 void logreply(int, uchar*, DNSmsg*){}
94 void logsend(int, int, uchar*, char*, char*, int){}