18ccd4a63SDavid du Colombier #include "headers.h"
28ccd4a63SDavid du Colombier #include <bio.h>
38ccd4a63SDavid du Colombier #include <ndb.h>
48ccd4a63SDavid du Colombier
58ccd4a63SDavid du Colombier int
nbnameresolve(NbName nbname,uchar * ipaddr)68ccd4a63SDavid du Colombier nbnameresolve(NbName nbname, uchar *ipaddr)
78ccd4a63SDavid du Colombier {
8*ea58ad6fSDavid du Colombier ulong r, ttl;
98ccd4a63SDavid du Colombier char name[NETPATHLEN];
10*ea58ad6fSDavid du Colombier NbName copy;
11*ea58ad6fSDavid du Colombier Ndbtuple *t;
12*ea58ad6fSDavid du Colombier
13*ea58ad6fSDavid du Colombier /* for now, just use dns */
148ccd4a63SDavid du Colombier if (nbremotenametablefind(nbname, ipaddr)) {
158ccd4a63SDavid du Colombier //print("%B found in cache\n", nbname);
168ccd4a63SDavid du Colombier return 1;
178ccd4a63SDavid du Colombier }
188ccd4a63SDavid du Colombier if (nbnsfindname(nil, nbname, ipaddr, &ttl) == 0) {
198ccd4a63SDavid du Colombier nbremotenametableadd(nbname, ipaddr, ttl);
208ccd4a63SDavid du Colombier return 1;
218ccd4a63SDavid du Colombier }
228ccd4a63SDavid du Colombier nbnamecpy(copy, nbname);
238ccd4a63SDavid du Colombier copy[NbNameLen - 1] = 0;
248ccd4a63SDavid du Colombier nbmkstringfromname(name, sizeof(name), copy);
258ccd4a63SDavid du Colombier t = dnsquery("/net", name, "ip");
268ccd4a63SDavid du Colombier if (t == nil)
278ccd4a63SDavid du Colombier return 0;
28*ea58ad6fSDavid du Colombier r = parseip(ipaddr, t->line->val);
298ccd4a63SDavid du Colombier ndbfree(t);
30*ea58ad6fSDavid du Colombier return r != -1;
318ccd4a63SDavid du Colombier }
32