nbresolve.c 672 B

123456789101112131415161718192021222324252627282930313233
  1. #include "headers.h"
  2. #include <bio.h>
  3. #include <ndb.h>
  4. int
  5. nbnameresolve(NbName nbname, uchar *ipaddr)
  6. {
  7. /* for now, just use dns */
  8. Ndbtuple *t;
  9. NbName copy;
  10. char name[NETPATHLEN];
  11. ulong ttl;
  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. if (parseip(ipaddr, t->line->val) == 0) {
  27. ndbfree(t);
  28. return 0;
  29. }
  30. ndbfree(t);
  31. return 1;
  32. }