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