summaryrefslogtreecommitdiffstats
path: root/lib/libc/asr/asr_utils.c
diff options
context:
space:
mode:
authoreric <eric@openbsd.org>2013-07-12 14:36:21 +0000
committereric <eric@openbsd.org>2013-07-12 14:36:21 +0000
commit5bd9e5c284f6235d605131b22206379ec6631db2 (patch)
tree746b9f2fc974ad8c0a70f90e1a7ea63fbbfed8b0 /lib/libc/asr/asr_utils.c
parentSimple partial sync to bsd.lv: (diff)
downloadwireguard-openbsd-5bd9e5c284f6235d605131b22206379ec6631db2.tar.xz
wireguard-openbsd-5bd9e5c284f6235d605131b22206379ec6631db2.zip
Make some symbols static and prefix all visible symbols with asr_
to prevent collisions with third-party programs. suggested by sthen@, ok theo@
Diffstat (limited to 'lib/libc/asr/asr_utils.c')
-rw-r--r--lib/libc/asr/asr_utils.c85
1 files changed, 73 insertions, 12 deletions
diff --git a/lib/libc/asr/asr_utils.c b/lib/libc/asr/asr_utils.c
index e05905c58bb..f5a1da8a528 100644
--- a/lib/libc/asr/asr_utils.c
+++ b/lib/libc/asr/asr_utils.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: asr_utils.c,v 1.7 2013/04/14 22:23:08 deraadt Exp $ */
+/* $OpenBSD: asr_utils.c,v 1.8 2013/07/12 14:36:21 eric Exp $ */
/*
* Copyright (c) 2009-2012 Eric Faurot <eric@faurot.net>
*
@@ -62,7 +62,7 @@ dname_check_label(const char *s, size_t l)
}
ssize_t
-dname_from_fqdn(const char *str, char *dst, size_t max)
+asr_dname_from_fqdn(const char *str, char *dst, size_t max)
{
ssize_t res;
size_t l, n;
@@ -165,7 +165,7 @@ dname_expand(const unsigned char *data, size_t len, size_t offset,
}
void
-pack_init(struct pack *pack, char *buf, size_t len)
+asr_pack_init(struct pack *pack, char *buf, size_t len)
{
pack->buf = buf;
pack->len = len;
@@ -174,7 +174,7 @@ pack_init(struct pack *pack, char *buf, size_t len)
}
void
-unpack_init(struct unpack *unpack, const char *buf, size_t len)
+asr_unpack_init(struct unpack *unpack, const char *buf, size_t len)
{
unpack->buf = buf;
unpack->len = len;
@@ -255,7 +255,7 @@ unpack_dname(struct unpack *p, char *dst, size_t max)
}
int
-unpack_header(struct unpack *p, struct header *h)
+asr_unpack_header(struct unpack *p, struct header *h)
{
if (unpack_data(p, h, HFIXEDSZ) == -1)
return (-1);
@@ -270,7 +270,7 @@ unpack_header(struct unpack *p, struct header *h)
}
int
-unpack_query(struct unpack *p, struct query *q)
+asr_unpack_query(struct unpack *p, struct query *q)
{
unpack_dname(p, q->q_dname, sizeof(q->q_dname));
unpack_u16(p, &q->q_type);
@@ -280,7 +280,7 @@ unpack_query(struct unpack *p, struct query *q)
}
int
-unpack_rr(struct unpack *p, struct rr *rr)
+asr_unpack_rr(struct unpack *p, struct rr *rr)
{
uint16_t rdlen;
size_t save_offset;
@@ -393,7 +393,7 @@ pack_dname(struct pack *p, const char *dname)
}
int
-pack_header(struct pack *p, const struct header *h)
+asr_pack_header(struct pack *p, const struct header *h)
{
struct header c;
@@ -408,7 +408,7 @@ pack_header(struct pack *p, const struct header *h)
}
int
-pack_query(struct pack *p, uint16_t type, uint16_t class, const char *dname)
+asr_pack_query(struct pack *p, uint16_t type, uint16_t class, const char *dname)
{
pack_dname(p, dname);
pack_u16(p, type);
@@ -418,7 +418,7 @@ pack_query(struct pack *p, uint16_t type, uint16_t class, const char *dname)
}
int
-sockaddr_from_str(struct sockaddr *sa, int family, const char *str)
+asr_sockaddr_from_str(struct sockaddr *sa, int family, const char *str)
{
struct in_addr ina;
struct in6_addr in6a;
@@ -429,9 +429,9 @@ sockaddr_from_str(struct sockaddr *sa, int family, const char *str)
switch (family) {
case PF_UNSPEC:
- if (sockaddr_from_str(sa, PF_INET, str) == 0)
+ if (asr_sockaddr_from_str(sa, PF_INET, str) == 0)
return (0);
- return sockaddr_from_str(sa, PF_INET6, str);
+ return asr_sockaddr_from_str(sa, PF_INET6, str);
case PF_INET:
if (inet_pton(PF_INET, str, &ina) != 1)
@@ -486,3 +486,64 @@ sockaddr_from_str(struct sockaddr *sa, int family, const char *str)
return (-1);
}
+
+ssize_t
+asr_addr_as_fqdn(const char *addr, int family, char *dst, size_t max)
+{
+ const struct in6_addr *in6_addr;
+ in_addr_t in_addr;
+
+ switch (family) {
+ case AF_INET:
+ in_addr = ntohl(*((const in_addr_t *)addr));
+ snprintf(dst, max,
+ "%d.%d.%d.%d.in-addr.arpa.",
+ in_addr & 0xff,
+ (in_addr >> 8) & 0xff,
+ (in_addr >> 16) & 0xff,
+ (in_addr >> 24) & 0xff);
+ break;
+ case AF_INET6:
+ in6_addr = (const struct in6_addr *)addr;
+ snprintf(dst, max,
+ "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
+ "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
+ "ip6.arpa.",
+ in6_addr->s6_addr[15] & 0xf,
+ (in6_addr->s6_addr[15] >> 4) & 0xf,
+ in6_addr->s6_addr[14] & 0xf,
+ (in6_addr->s6_addr[14] >> 4) & 0xf,
+ in6_addr->s6_addr[13] & 0xf,
+ (in6_addr->s6_addr[13] >> 4) & 0xf,
+ in6_addr->s6_addr[12] & 0xf,
+ (in6_addr->s6_addr[12] >> 4) & 0xf,
+ in6_addr->s6_addr[11] & 0xf,
+ (in6_addr->s6_addr[11] >> 4) & 0xf,
+ in6_addr->s6_addr[10] & 0xf,
+ (in6_addr->s6_addr[10] >> 4) & 0xf,
+ in6_addr->s6_addr[9] & 0xf,
+ (in6_addr->s6_addr[9] >> 4) & 0xf,
+ in6_addr->s6_addr[8] & 0xf,
+ (in6_addr->s6_addr[8] >> 4) & 0xf,
+ in6_addr->s6_addr[7] & 0xf,
+ (in6_addr->s6_addr[7] >> 4) & 0xf,
+ in6_addr->s6_addr[6] & 0xf,
+ (in6_addr->s6_addr[6] >> 4) & 0xf,
+ in6_addr->s6_addr[5] & 0xf,
+ (in6_addr->s6_addr[5] >> 4) & 0xf,
+ in6_addr->s6_addr[4] & 0xf,
+ (in6_addr->s6_addr[4] >> 4) & 0xf,
+ in6_addr->s6_addr[3] & 0xf,
+ (in6_addr->s6_addr[3] >> 4) & 0xf,
+ in6_addr->s6_addr[2] & 0xf,
+ (in6_addr->s6_addr[2] >> 4) & 0xf,
+ in6_addr->s6_addr[1] & 0xf,
+ (in6_addr->s6_addr[1] >> 4) & 0xf,
+ in6_addr->s6_addr[0] & 0xf,
+ (in6_addr->s6_addr[0] >> 4) & 0xf);
+ break;
+ default:
+ return (-1);
+ }
+ return (0);
+}