aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/ndb/ndbipquery.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/ndb/ndbipquery.c')
-rw-r--r--src/cmd/ndb/ndbipquery.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/cmd/ndb/ndbipquery.c b/src/cmd/ndb/ndbipquery.c
new file mode 100644
index 00000000..c2859dca
--- /dev/null
+++ b/src/cmd/ndb/ndbipquery.c
@@ -0,0 +1,54 @@
+#include <u.h>
+#include <libc.h>
+#include <bio.h>
+#include <ndb.h>
+#include <ip.h>
+
+/*
+ * search the database for matches
+ */
+
+void
+usage(void)
+{
+ fprint(2, "usage: ipquery attr value rattribute\n");
+ exits("usage");
+}
+
+void
+search(Ndb *db, char *attr, char *val, char **rattr, int nrattr)
+{
+ Ndbtuple *t;
+
+ t = ndbipinfo(db, attr, val, rattr, nrattr);
+ for(; t; t = t->entry)
+ print("%s=%s ", t->attr, t->val);
+ print("\n");
+ ndbfree(t);
+}
+
+void
+main(int argc, char **argv)
+{
+ Ndb *db;
+ char *dbfile = 0;
+
+ ARGBEGIN{
+ case 'f':
+ dbfile = ARGF();
+ break;
+ }ARGEND;
+
+ if(argc < 3)
+ usage();
+
+ db = ndbopen(dbfile);
+ if(db == 0){
+ fprint(2, "no db files\n");
+ exits("no db");
+ }
+ search(db, argv[0], argv[1], argv+2, argc-2);
+ ndbclose(db);
+
+ exits(0);
+}