1 #include "headers.h" 2 #include <bio.h> 3 #include <ndb.h> 4 5 int 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