diff options
-rw-r--r-- | ggsn/ggsn_vty.c | 5 | ||||
-rw-r--r-- | lib/in46_addr.c | 7 | ||||
-rw-r--r-- | lib/in46_addr.h | 2 |
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); |