xref: /plan9/sys/src/cmd/aquarela/nbresolve.c (revision ea58ad6fbee60d5a3fca57ac646881779dd8f0ea)
1 #include "headers.h"
2 #include <bio.h>
3 #include <ndb.h>
4 
5 int
nbnameresolve(NbName nbname,uchar * ipaddr)6 nbnameresolve(NbName nbname, uchar *ipaddr)
7 {
8 	ulong r, ttl;
9 	char name[NETPATHLEN];
10 	NbName copy;
11 	Ndbtuple *t;
12 
13 	/* for now, just use dns */
14 	if (nbremotenametablefind(nbname, ipaddr)) {
15 //print("%B found in cache\n", nbname);
16 		return 1;
17 	}
18 	if (nbnsfindname(nil, nbname, ipaddr, &ttl) == 0) {
19 		nbremotenametableadd(nbname, ipaddr, ttl);
20 		return 1;
21 	}
22 	nbnamecpy(copy, nbname);
23 	copy[NbNameLen - 1] = 0;
24 	nbmkstringfromname(name, sizeof(name), copy);
25 	t = dnsquery("/net", name, "ip");
26 	if (t == nil)
27 		return 0;
28 	r = parseip(ipaddr, t->line->val);
29 	ndbfree(t);
30 	return r != -1;
31 }
32