ndb: add dnsgetip program to resolve A and AAAA records during bootstrapping

This commit is contained in:
mischief 2014-12-09 16:18:08 -08:00
parent 665f0c8e3e
commit 230cee347f
2 changed files with 106 additions and 1 deletions

View file

@ -0,0 +1,99 @@
/* one-shot resolver */
#include <u.h>
#include <libc.h>
#include <bio.h>
#include <ndb.h>
#include "dns.h"
Cfg cfg;
char *dbfile;
int debug = 0;
char *logfile = "resolve";
int maxage = 60*60;
char mntpt[Maxpath];
int needrefresh = 0;
ulong now = 0;
vlong nowns = 0;
int testing = 0;
int traceactivity = 0;
char *zonerefreshprogram;
int aflag;
void
resolve(char *name, int type)
{
Request req;
RR *rp;
memset(&req, 0, sizeof req);
getactivity(&req, 0);
req.isslave = 1;
req.aborttime = NS2MS(nowns) + Maxreqtm;
rp = dnresolve(name, Cin, type, &req, 0, 0, Recurse, 0, 0);
while(rp != nil){
if(rp->ip != nil)
print("%s\n", rp->ip->name);
if(!aflag)
exits(nil);
rp = rp->next;
}
}
void
usage(void)
{
fprint(2, "%s: [-adx] [-f ndb-file] domain\n", argv0);
exits("usage");
}
void
main(int argc, char **argv)
{
strcpy(mntpt, "/net");
cfg.inside = 1;
cfg.resolver = 1;
ARGBEGIN{
case 'a':
aflag = 1;
break;
case 'd':
debug++;
break;
case 'x':
strcpy(mntpt, "/net.alt");
break;
case 'f':
dbfile = EARGF(usage());
break;
default:
usage();
}ARGEND
if(argc != 1)
usage();
if(strcmp(ipattr(argv[0]), "ip") == 0){
print("%s\n", argv[0]);
exits(nil);
}
dninit();
resolve(argv[0], Ta);
resolve(argv[0], Taaaa);
exits(nil);
}
RR*
getdnsservers(int class)
{
return dnsservers(class);
}
/* stubs */
void syslog(int, char*, char*, ...){}
void logreply(int, uchar*, DNSmsg*){}
void logsend(int, int, uchar*, char*, char*, int){}

View file

@ -12,10 +12,10 @@ TARG = \
dnsquery\
dnstcp\
dnsdebug\
dnsgetip\
ipquery\
inform\
DNSOBJ = dns.$O dnudpserver.$O dn.$O dnresolve.$O dblookup.$O dnserver.$O dnnotify.$O\
dnarea.$O convM2DNS.$O convDNS2M.$O idn.$O
@ -25,6 +25,9 @@ DNSTCPOBJ = dnstcp.$O dn.$O dnresolve.$O dblookup.$O dnserver.$O\
DNSDEBUGOBJ = dnsdebug.$O dn.$O dnresolve.$O dblookup.$O dnserver.$O\
dnarea.$O convM2DNS.$O convDNS2M.$O idn.$O
DNSGETIPOBJ = dnsgetip.$O dn.$O dnresolve.$O dblookup.$O dnserver.$O\
dnarea.$O convM2DNS.$O convDNS2M.$O idn.$O
HFILES = dns.h /$objtype/lib/libndb.a
BIN=/$objtype/bin/ndb
@ -40,6 +43,9 @@ $O.dnstcp: $DNSTCPOBJ
$O.dnsdebug: $DNSDEBUGOBJ
$LD -o $target $prereq
$O.dnsgetip: $DNSGETIPOBJ
$LD -o $target $prereq
$O.cs: cs.$O
$LD -o $target $prereq