nbresolve.c 646 B

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