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