aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Smith <osmith@sysmocom.de>2023-07-24 15:02:23 +0200
committerOliver Smith <osmith@sysmocom.de>2023-07-24 15:06:03 +0200
commit4963d1c2eafef2f7dfe65b21e456c70bcd5f26c6 (patch)
tree5bdcb5642cfbcfc62aec0ca6fbeb683d03660a53
parent37daa5d003cce9da22d6480bbee38f4dc3d12680 (diff)
lib/in46_addr: add in46a_from_gsna
Prepare to use it in gtp-kernel.c in a future patch. Related: OS#6096 Change-Id: I3e76eb7ee89ba338f085c617662d15cffa2a62d5
-rw-r--r--ggsn/ggsn_vty.c5
-rw-r--r--lib/in46_addr.c7
-rw-r--r--lib/in46_addr.h2
3 files changed, 10 insertions, 4 deletions
diff --git a/ggsn/ggsn_vty.c b/ggsn/ggsn_vty.c
index 2d49a94..7414b6a 100644
--- a/ggsn/ggsn_vty.c
+++ b/ggsn/ggsn_vty.c
@@ -814,10 +814,7 @@ static const char *print_gsnaddr(const struct ul16_t *in)
{
struct in46_addr in46;
- in46.len = in->l;
- OSMO_ASSERT(in->l <= sizeof(in46.v6));
- memcpy(&in46.v6, in->v, in->l);
-
+ in46a_from_gsna(in, &in46);
return in46a_ntoa(&in46);
}
diff --git a/lib/in46_addr.c b/lib/in46_addr.c
index 2562c71..648fe7e 100644
--- a/lib/in46_addr.c
+++ b/lib/in46_addr.c
@@ -375,3 +375,10 @@ default_to_dyn_v4:
dst->v4.s_addr = 0;
return 1;
}
+
+void in46a_from_gsna(const struct ul16_t *in, struct in46_addr *dst)
+{
+ dst->len = in->l;
+ OSMO_ASSERT(in->l <= sizeof(dst->v6));
+ memcpy(&dst->v6, in->v, in->l);
+}
diff --git a/lib/in46_addr.h b/lib/in46_addr.h
index 153df00..5589f94 100644
--- a/lib/in46_addr.h
+++ b/lib/in46_addr.h
@@ -39,3 +39,5 @@ static inline bool in46a_is_v6(const struct in46_addr *addr) {
static inline bool in46a_is_v4(const struct in46_addr *addr) {
return addr->len == sizeof(struct in_addr);
}
+
+void in46a_from_gsna(const struct ul16_t *in, struct in46_addr *dst);