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