summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2021-11-03 19:38:36 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2021-11-03 19:38:36 +0000
commit2899b719ae11e4ae18fef3995cdb84c64ac60bc3 (patch)
tree79e1f3baf4b3041111bbecf4dc29e29f2c6038f2
parent2d56837b2fabf6a7cc11f02b51f20a1e35128c57 (diff)
libndb: move mkptrname() into libndb to avoid duplication
-rw-r--r--sys/include/ndb.h1
-rw-r--r--sys/man/2/ndb25
-rw-r--r--sys/src/cmd/ndb/dnsdebug.c26
-rw-r--r--sys/src/cmd/ndb/dnsquery.c27
-rw-r--r--sys/src/libndb/dnsquery.c27
-rw-r--r--sys/src/libndb/mkfile1
-rw-r--r--sys/src/libndb/mkptrname.c29
7 files changed, 55 insertions, 81 deletions
diff --git a/sys/include/ndb.h b/sys/include/ndb.h
index a76b14561..b44da0539 100644
--- a/sys/include/ndb.h
+++ b/sys/include/ndb.h
@@ -128,6 +128,7 @@ char* csgetvalue(char*, char*, char*, char*, Ndbtuple**);
Ndbtuple* csipinfo(char*, char*, char*, char**, int);
Ndbtuple* dnsquery(char*, char*, char*);
char* ipattr(char*);
+void mkptrname(char *ip, char *rip, int rlen);
Ndb* ndbcat(Ndb*, Ndb*);
int ndbchanged(Ndb*);
void ndbclose(Ndb*);
diff --git a/sys/man/2/ndb b/sys/man/2/ndb
index ac805bbe8..4df54857d 100644
--- a/sys/man/2/ndb
+++ b/sys/man/2/ndb
@@ -1,6 +1,6 @@
.TH NDB 2
.SH NAME
-ndbopen, ndbcat, ndbchanged, ndbclose, ndbreopen, ndbsearch, ndbsnext, ndbgetvalue, ndbfree, ipattr, ndbgetipaddr, ndbipinfo, csipinfo, ndbhash, ndbparse, csgetvalue, ndbfindattr, dnsquery, ndbdiscard, ndbconcatenate, ndbreorder, ndbsubstitute, ndbdedup \- network database
+ndbopen, ndbcat, ndbchanged, ndbclose, ndbreopen, ndbsearch, ndbsnext, ndbgetvalue, ndbfree, ipattr, mkptrname, ndbgetipaddr, ndbipinfo, csipinfo, ndbhash, ndbparse, csgetvalue, ndbfindattr, dnsquery, ndbdiscard, ndbconcatenate, ndbreorder, ndbsubstitute, ndbdedup \- network database
.SH SYNOPSIS
.B #include <u.h>
.br
@@ -47,6 +47,9 @@ char* csgetvalue(char *netroot, char *attr, char *val,
char* ipattr(char *name)
.PP
.B
+void mkptrname(char *ip, char *rip, int rlen);
+.PP
+.B
Ndbtuple* ndbgetipaddr(Ndb *db, char *sys);
.PP
.B
@@ -236,6 +239,26 @@ Internet number
system name
.RE
.PP
+.I Mkptrname
+converts the address string
+.I ip
+to a reverse lookup domain-name, returned in
+.IR rip .
+The
+.I rlen
+argument gives the maximum size of the
+.I rip
+buffer including the NUL-terminator.
+If
+.I ip
+already is a reverse lookup domain-name
+or has invalid ip address syntax,
+then
+.I ip
+is copied into
+.I rip
+verbatim.
+.PP
.I Ndbgetipaddr
looks in
.I db
diff --git a/sys/src/cmd/ndb/dnsdebug.c b/sys/src/cmd/ndb/dnsdebug.c
index 61bc5c5ee..cd79e17cc 100644
--- a/sys/src/cmd/ndb/dnsdebug.c
+++ b/sys/src/cmd/ndb/dnsdebug.c
@@ -129,32 +129,6 @@ longtime(long t)
return x;
}
-/*
- * convert address into a reverse lookup address
- */
-static void
-mkptrname(char *ip, char *rip, int rlen)
-{
- uchar a[IPaddrlen];
- char *p, *e;
- int i;
-
- if(cistrstr(ip, "in-addr.arpa") || cistrstr(ip, "ip6.arpa") || parseip(a, ip) == -1)
- snprint(rip, rlen, "%s", ip);
- else if(isv4(a))
- snprint(rip, rlen, "%ud.%ud.%ud.%ud.in-addr.arpa",
- a[15], a[14], a[13], a[12]);
- else{
- p = rip;
- e = rip + rlen;
- for(i = 15; i >= 0; i--){
- p = seprint(p, e, "%ux.", a[i]&0xf);
- p = seprint(p, e, "%ux.", a[i]>>4);
- }
- seprint(p, e, "ip6.arpa");
- }
-}
-
int
prettyrrfmt(Fmt *f)
{
diff --git a/sys/src/cmd/ndb/dnsquery.c b/sys/src/cmd/ndb/dnsquery.c
index 6f01878f8..0f005c7db 100644
--- a/sys/src/cmd/ndb/dnsquery.c
+++ b/sys/src/cmd/ndb/dnsquery.c
@@ -4,7 +4,6 @@
#include <ctype.h>
#include <ndb.h>
#include "dns.h"
-#include "ip.h"
static void
querydns(int fd, char *line, int n)
@@ -23,32 +22,6 @@ querydns(int fd, char *line, int n)
}
}
-/*
- * convert address into a reverse lookup address
- */
-static void
-mkptrname(char *ip, char *rip, int rlen)
-{
- uchar a[IPaddrlen];
- char *p, *e;
- int i;
-
- if(cistrstr(ip, "in-addr.arpa") || cistrstr(ip, "ip6.arpa") || parseip(a, ip) == -1)
- snprint(rip, rlen, "%s", ip);
- else if(isv4(a))
- snprint(rip, rlen, "%ud.%ud.%ud.%ud.in-addr.arpa",
- a[15], a[14], a[13], a[12]);
- else{
- p = rip;
- e = rip + rlen;
- for(i = 15; i >= 0; i--){
- p = seprint(p, e, "%ux.", a[i]&0xf);
- p = seprint(p, e, "%ux.", a[i]>>4);
- }
- seprint(p, e, "ip6.arpa");
- }
-}
-
static void
query(int fd)
{
diff --git a/sys/src/libndb/dnsquery.c b/sys/src/libndb/dnsquery.c
index da2312e4d..d74e2a208 100644
--- a/sys/src/libndb/dnsquery.c
+++ b/sys/src/libndb/dnsquery.c
@@ -5,7 +5,6 @@
#include <ndbhf.h>
#include <ip.h>
-static void mkptrname(char*, char*, int);
static Ndbtuple *doquery(int, char *dn, char *type);
/*
@@ -51,32 +50,6 @@ dnsquery(char *net, char *val, char *type)
return t;
}
-/*
- * convert address into a reverse lookup address
- */
-static void
-mkptrname(char *ip, char *rip, int rlen)
-{
- uchar a[IPaddrlen];
- char *p, *e;
- int i;
-
- if(cistrstr(ip, "in-addr.arpa") || cistrstr(ip, "ip6.arpa") || parseip(a, ip) == -1)
- snprint(rip, rlen, "%s", ip);
- else if(isv4(a))
- snprint(rip, rlen, "%ud.%ud.%ud.%ud.in-addr.arpa",
- a[15], a[14], a[13], a[12]);
- else{
- p = rip;
- e = rip + rlen;
- for(i = 15; i >= 0; i--){
- p = seprint(p, e, "%ux.", a[i]&0xf);
- p = seprint(p, e, "%ux.", a[i]>>4);
- }
- seprint(p, e, "ip6.arpa");
- }
-}
-
static Ndbtuple*
doquery(int fd, char *dn, char *type)
{
diff --git a/sys/src/libndb/mkfile b/sys/src/libndb/mkfile
index 19be22bb4..390864841 100644
--- a/sys/src/libndb/mkfile
+++ b/sys/src/libndb/mkfile
@@ -6,6 +6,7 @@ OFILES=\
csipinfo.$O\
dnsquery.$O\
ipattr.$O\
+ mkptrname.$O\
ndbaux.$O\
ndbcache.$O\
ndbcat.$O\
diff --git a/sys/src/libndb/mkptrname.c b/sys/src/libndb/mkptrname.c
new file mode 100644
index 000000000..759aad5bd
--- /dev/null
+++ b/sys/src/libndb/mkptrname.c
@@ -0,0 +1,29 @@
+#include <u.h>
+#include <libc.h>
+#include <ip.h>
+
+/*
+ * convert address into a reverse lookup address
+ */
+void
+mkptrname(char *ip, char *rip, int rlen)
+{
+ uchar a[IPaddrlen];
+ char *p, *e;
+ int i;
+
+ if(cistrstr(ip, "in-addr.arpa") || cistrstr(ip, "ip6.arpa") || parseip(a, ip) == -1)
+ snprint(rip, rlen, "%s", ip);
+ else if(isv4(a))
+ snprint(rip, rlen, "%ud.%ud.%ud.%ud.in-addr.arpa",
+ a[15], a[14], a[13], a[12]);
+ else{
+ p = rip;
+ e = rip + rlen;
+ for(i = 15; i >= 0; i--){
+ p = seprint(p, e, "%ux.", a[i]&0xf);
+ p = seprint(p, e, "%ux.", a[i]>>4);
+ }
+ seprint(p, e, "ip6.arpa");
+ }
+}