diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-11-03 19:38:36 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-11-03 19:38:36 +0000 |
commit | 2899b719ae11e4ae18fef3995cdb84c64ac60bc3 (patch) | |
tree | 79e1f3baf4b3041111bbecf4dc29e29f2c6038f2 /sys/src/libndb/mkptrname.c | |
parent | 2d56837b2fabf6a7cc11f02b51f20a1e35128c57 (diff) |
libndb: move mkptrname() into libndb to avoid duplication
Diffstat (limited to 'sys/src/libndb/mkptrname.c')
-rw-r--r-- | sys/src/libndb/mkptrname.c | 29 |
1 files changed, 29 insertions, 0 deletions
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"); + } +} |