Blob
1 #include <u.h>2 #include <libc.h>3 #include <bio.h>4 #include <ndb.h>5 #include <ip.h>7 /* return list of ip addresses for a name */8 Ndbtuple*9 ndbgetipaddr(Ndb *db, char *val)10 {11 char *attr, *p;12 Ndbtuple *it, *first, *last, *next;13 Ndbs s;15 /* already an IP address? */16 attr = ipattr(val);17 if(strcmp(attr, "ip") == 0){18 it = ndbnew("ip", val);19 return it;20 }22 /* look it up */23 p = ndbgetvalue(db, &s, attr, val, "ip", &it);24 if(p == nil)25 return nil;26 free(p);28 /* remove the non-ip entries */29 first = last = nil;30 for(; it; it = next){31 next = it->entry;32 if(strcmp(it->attr, "ip") == 0){33 if(first == nil)34 first = it;35 else36 last->entry = it;37 it->entry = nil;38 it->line = first;39 last = it;40 } else {41 it->entry = nil;42 ndbfree(it);43 }44 }46 return first;47 }