Blame


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>
6 d957951b 2005-02-11 devnull
7 d957951b 2005-02-11 devnull /* return list of ip addresses for a name */
8 d957951b 2005-02-11 devnull Ndbtuple*
9 d957951b 2005-02-11 devnull ndbgetipaddr(Ndb *db, char *val)
10 d957951b 2005-02-11 devnull {
11 d957951b 2005-02-11 devnull char *attr, *p;
12 d957951b 2005-02-11 devnull Ndbtuple *it, *first, *last, *next;
13 d957951b 2005-02-11 devnull Ndbs s;
14 d957951b 2005-02-11 devnull
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;
20 d957951b 2005-02-11 devnull }
21 d957951b 2005-02-11 devnull
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;
26 d957951b 2005-02-11 devnull free(p);
27 d957951b 2005-02-11 devnull
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;
35 d957951b 2005-02-11 devnull else
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;
40 d957951b 2005-02-11 devnull } else {
41 d957951b 2005-02-11 devnull it->entry = nil;
42 d957951b 2005-02-11 devnull ndbfree(it);
43 d957951b 2005-02-11 devnull }
44 d957951b 2005-02-11 devnull }
45 d957951b 2005-02-11 devnull
46 d957951b 2005-02-11 devnull return first;
47 d957951b 2005-02-11 devnull }