aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-08-12 12:46:17 +0200
committerHarald Welte <laforge@gnumonks.org>2017-08-12 15:21:43 +0200
commit680985869beaad03d55c0e38dc83c61e0f8f3e53 (patch)
tree7aaeb52d4624997d2de0cbca2bf2d18ccd4db355
parentabf33aaecfb18b806fd297cb42bffa7b620354fb (diff)
lib/in46_addr: Add in46a_ntoa() function, similar to inet_ntoa()
-rw-r--r--lib/in46_addr.c10
-rw-r--r--lib/in46_addr.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/in46_addr.c b/lib/in46_addr.c
index 8f5cc09..4e7cbcd 100644
--- a/lib/in46_addr.c
+++ b/lib/in46_addr.c
@@ -69,6 +69,16 @@ const char *in46a_ntop(const struct in46_addr *in, char *dst, socklen_t dst_size
return inet_ntop(af, (const void *) &in->v4, dst, dst_size);
}
+/* like inet_ntoa() */
+const char *in46a_ntoa(const struct in46_addr *in46)
+{
+ static char addrstr_buf[256];
+ if (in46a_ntop(in46, addrstr_buf, sizeof(addrstr_buf)) < 0)
+ return "INVALID";
+ else
+ return addrstr_buf;
+}
+
/*! Determine if two in46_addr are equal or not
* \returns 1 in case they are equal; 0 otherwise */
int in46a_equal(const struct in46_addr *a, const struct in46_addr *b)
diff --git a/lib/in46_addr.h b/lib/in46_addr.h
index 0afd2b4..1614c1d 100644
--- a/lib/in46_addr.h
+++ b/lib/in46_addr.h
@@ -17,6 +17,7 @@ struct in46_addr {
extern int in46a_to_af(const struct in46_addr *in);
extern int in46a_to_sas(struct sockaddr_storage *out, const struct in46_addr *in);
extern const char *in46a_ntop(const struct in46_addr *in, char *dst, socklen_t dst_size);
+extern const char *in46a_ntoa(const struct in46_addr *in46);
extern int in46a_equal(const struct in46_addr *a, const struct in46_addr *b);
extern int in46a_prefix_equal(const struct in46_addr *a, const struct in46_addr *b);
extern int in46a_within_mask(const struct in46_addr *addr, const struct in46_addr *net, size_t prefixlen);