summaryrefslogtreecommitdiff
path: root/sys/src/cmd/ndb
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-09-16 12:39:47 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-09-16 12:39:47 +0200
commita4e444f430b874661f2793d8f9d1daeab60a89b1 (patch)
tree33ed9966cf0619211b4a0cff84ebd3a9097f78ab /sys/src/cmd/ndb
parent08385e66816940b999a5c433a1feef303cea67e4 (diff)
libndb: make ndbipinfo() walk ipnet for all matching entries, concatenate and dedup result
Diffstat (limited to 'sys/src/cmd/ndb')
-rw-r--r--sys/src/cmd/ndb/cs.c29
-rw-r--r--sys/src/cmd/ndb/dblookup.c2
2 files changed, 4 insertions, 27 deletions
diff --git a/sys/src/cmd/ndb/cs.c b/sys/src/cmd/ndb/cs.c
index 0979d4976..ca92c0c49 100644
--- a/sys/src/cmd/ndb/cs.c
+++ b/sys/src/cmd/ndb/cs.c
@@ -1392,7 +1392,7 @@ myipinfo(Ndb *db, char **list, int n)
}
qunlock(&ipifclock);
- return t;
+ return ndbdedup(t);
}
/*
@@ -1919,29 +1919,6 @@ ipresolve(char *attr, char *host)
return t;
}
-/*
- * remove duplicates
- */
-static Ndbtuple*
-ndbdedup(Ndbtuple *t)
-{
- Ndbtuple *tt, *nt, **l;
-
- for(nt = t; nt != nil; nt = nt->entry){
- for(l = &nt->entry; (tt = *l) != nil;){
- if(strcmp(nt->attr, tt->attr) != 0
- || strcmp(nt->val, tt->val) != 0){
- l = &tt->entry;
- continue;
- }
- *l = tt->entry;
- tt->entry = nil;
- ndbfree(tt);
- }
- }
- return t;
-}
-
char*
ipinfoquery(Mfile *mf, char **list, int n)
{
@@ -1992,7 +1969,6 @@ ipinfoquery(Mfile *mf, char **list, int n)
return "no match";
if(nresolve != 0){
- t = ndbdedup(t);
for(l = &t; *l != nil;){
nt = *l;
@@ -2020,8 +1996,9 @@ ipinfoquery(Mfile *mf, char **list, int n)
nt->entry = nil;
ndbfree(nt);
}
+
+ t = ndbdedup(t);
}
- t = ndbdedup(t);
/* make it all one line */
t = ndbline(t);
diff --git a/sys/src/cmd/ndb/dblookup.c b/sys/src/cmd/ndb/dblookup.c
index 20d58502f..601bf893f 100644
--- a/sys/src/cmd/ndb/dblookup.c
+++ b/sys/src/cmd/ndb/dblookup.c
@@ -794,7 +794,7 @@ lookupinfo(char *attr)
qunlock(&ipifclock);
qunlock(&dblock);
- return t;
+ return ndbdedup(t);
}
/*