<p>Max has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12230">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gtphub: remove code duplication<br><br>Use libosmocore struct for GSN address.<br><br>Change-Id: I75645fd5cd1016bd9a08096e3ee4101b2560cefd<br>---<br>M include/osmocom/sgsn/gtphub.h<br>M src/gprs/gtphub.c<br>M src/gprs/gtphub_ares.c<br>M tests/gtphub/gtphub_test.c<br>4 files changed, 54 insertions(+), 62 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/30/12230/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/sgsn/gtphub.h b/include/osmocom/sgsn/gtphub.h</span><br><span>index 8fd9f38..93d647d 100644</span><br><span>--- a/include/osmocom/sgsn/gtphub.h</span><br><span>+++ b/include/osmocom/sgsn/gtphub.h</span><br><span>@@ -155,30 +155,22 @@</span><br><span> </span><br><span> extern const char* const gtphub_side_idx_names[GTPH_SIDE_N];</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* A host address in the form that is expected in the 7.7.32 GSN Address IE.</span><br><span style="color: hsl(0, 100%, 40%);">- * len is either 4 (IPv4) or 16 (IPv6), any other value is invalid. If no</span><br><span style="color: hsl(0, 100%, 40%);">- * address is set, len shall be 0. */</span><br><span style="color: hsl(0, 100%, 40%);">-struct gsn_addr {</span><br><span style="color: hsl(0, 100%, 40%);">-        uint16_t len;</span><br><span style="color: hsl(0, 100%, 40%);">-   uint8_t buf[16];</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void gsn_addr_copy(struct gsn_addr *gsna, const struct gsn_addr *src);</span><br><span style="color: hsl(0, 100%, 40%);">-int gsn_addr_from_str(struct gsn_addr *gsna, const char *numeric_addr_str);</span><br><span style="color: hsl(120, 100%, 40%);">+void gsn_addr_copy(struct osmo_gsn_address *gsna, const struct osmo_gsn_address *src);</span><br><span style="color: hsl(120, 100%, 40%);">+int gsn_addr_from_str(struct osmo_gsn_address *gsna, const char *numeric_addr_str);</span><br><span> </span><br><span> /* Return gsna in numeric string form, in a static buffer. */</span><br><span style="color: hsl(0, 100%, 40%);">-const char *gsn_addr_to_str(const struct gsn_addr *gsna);</span><br><span style="color: hsl(120, 100%, 40%);">+const char *gsn_addr_to_str(const struct osmo_gsn_address *gsna);</span><br><span> </span><br><span> /* note: strbuf_len doesn't need to be larger than INET6_ADDRSTRLEN + 1. */</span><br><span style="color: hsl(0, 100%, 40%);">-const char *gsn_addr_to_strb(const struct gsn_addr *gsna,</span><br><span style="color: hsl(120, 100%, 40%);">+const char *gsn_addr_to_strb(const struct osmo_gsn_address *gsna,</span><br><span>                              char *strbuf, int strbuf_len);</span><br><span> </span><br><span> /* Return 1 on match, zero otherwise. */</span><br><span style="color: hsl(0, 100%, 40%);">-int gsn_addr_same(const struct gsn_addr *a, const struct gsn_addr *b);</span><br><span style="color: hsl(120, 100%, 40%);">+int gsn_addr_same(const struct osmo_gsn_address *a, const struct osmo_gsn_address *b);</span><br><span> </span><br><span> /* Decode sa to gsna. Return 0 on success. If port is non-NULL, the port number</span><br><span>  * from sa is also returned. */</span><br><span style="color: hsl(0, 100%, 40%);">-int gsn_addr_from_sockaddr(struct gsn_addr *gsna, uint16_t *port,</span><br><span style="color: hsl(120, 100%, 40%);">+int gsn_addr_from_sockaddr(struct osmo_gsn_address *gsna, uint16_t *port,</span><br><span>                         const struct osmo_sockaddr *sa);</span><br><span> </span><br><span> /* expiry */</span><br><span>@@ -379,7 +371,7 @@</span><br><span>        struct llist_head entry;</span><br><span> </span><br><span>         struct gtphub_peer *peer;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct gsn_addr addr;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct osmo_gsn_address addr;</span><br><span>        struct llist_head ports;</span><br><span> };</span><br><span> </span><br><span>@@ -411,7 +403,7 @@</span><br><span> };</span><br><span> </span><br><span> struct gtphub_bind {</span><br><span style="color: hsl(0, 100%, 40%);">-      struct gsn_addr local_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+   struct osmo_gsn_address local_addr;</span><br><span>  uint16_t local_port;</span><br><span>         struct osmo_fd ofd;</span><br><span> </span><br><span>@@ -506,14 +498,14 @@</span><br><span> </span><br><span> struct gtphub_peer_port *gtphub_port_have(struct gtphub *hub,</span><br><span>                                           struct gtphub_bind *bind,</span><br><span style="color: hsl(0, 100%, 40%);">-                                       const struct gsn_addr *addr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          const struct osmo_gsn_address *addr,</span><br><span>                                         uint16_t port);</span><br><span> </span><br><span> struct gtphub_peer_port *gtphub_port_find_sa(const struct gtphub_bind *bind,</span><br><span>                                             const struct osmo_sockaddr *addr);</span><br><span> </span><br><span> void gtphub_resolved_ggsn(struct gtphub *hub, const char *apn_oi_str,</span><br><span style="color: hsl(0, 100%, 40%);">-                      struct gsn_addr *resolved_addr,</span><br><span style="color: hsl(120, 100%, 40%);">+                       struct osmo_gsn_address *resolved_addr,</span><br><span>                      time_t now);</span><br><span> </span><br><span> const char *gtphub_port_str(struct gtphub_peer_port *port);</span><br><span>diff --git a/src/gprs/gtphub.c b/src/gprs/gtphub.c</span><br><span>index ca5857b..d35c076 100644</span><br><span>--- a/src/gprs/gtphub.c</span><br><span>+++ b/src/gprs/gtphub.c</span><br><span>@@ -161,12 +161,12 @@</span><br><span>   }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void gsn_addr_copy(struct gsn_addr *gsna, const struct gsn_addr *src)</span><br><span style="color: hsl(120, 100%, 40%);">+void gsn_addr_copy(struct osmo_gsn_address *gsna, const struct osmo_gsn_address *src)</span><br><span> {</span><br><span>  *gsna = *src;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int gsn_addr_from_sockaddr(struct gsn_addr *gsna, uint16_t *port,</span><br><span style="color: hsl(120, 100%, 40%);">+int gsn_addr_from_sockaddr(struct osmo_gsn_address *gsna, uint16_t *port,</span><br><span>                      const struct osmo_sockaddr *sa)</span><br><span> {</span><br><span>      char addr_str[256];</span><br><span>@@ -185,23 +185,23 @@</span><br><span>  return gsn_addr_from_str(gsna, addr_str);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int gsn_addr_from_str(struct gsn_addr *gsna, const char *numeric_addr_str)</span><br><span style="color: hsl(120, 100%, 40%);">+int gsn_addr_from_str(struct osmo_gsn_address *gsna, const char *numeric_addr_str)</span><br><span> {</span><br><span>        if ((!gsna) || (!numeric_addr_str))</span><br><span>          return -1;</span><br><span> </span><br><span>       int af = AF_INET;</span><br><span style="color: hsl(0, 100%, 40%);">-       gsna->len = 4;</span><br><span style="color: hsl(120, 100%, 40%);">+     gsna->length = 4;</span><br><span>         const char *pos = numeric_addr_str;</span><br><span>  for (; *pos; pos++) {</span><br><span>                if (*pos == ':') {</span><br><span>                   af = AF_INET6;</span><br><span style="color: hsl(0, 100%, 40%);">-                  gsna->len = 16;</span><br><span style="color: hsl(120, 100%, 40%);">+                    gsna->length = 16;</span><br><span>                        break;</span><br><span>               }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   int rc = inet_pton(af, numeric_addr_str, gsna->buf);</span><br><span style="color: hsl(120, 100%, 40%);">+       int rc = inet_pton(af, numeric_addr_str, gsna->addr);</span><br><span>     if (rc != 1) {</span><br><span>               LOG(LOGL_ERROR, "Cannot resolve numeric address: '%s'\n",</span><br><span>              numeric_addr_str);</span><br><span>@@ -210,18 +210,18 @@</span><br><span>       return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-const char *gsn_addr_to_str(const struct gsn_addr *gsna)</span><br><span style="color: hsl(120, 100%, 40%);">+const char *gsn_addr_to_str(const struct osmo_gsn_address *gsna)</span><br><span> {</span><br><span>    static char buf[INET6_ADDRSTRLEN + 1];</span><br><span>       return gsn_addr_to_strb(gsna, buf, sizeof(buf));</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-const char *gsn_addr_to_strb(const struct gsn_addr *gsna,</span><br><span style="color: hsl(120, 100%, 40%);">+const char *gsn_addr_to_strb(const struct osmo_gsn_address *gsna,</span><br><span>                             char *strbuf,</span><br><span>                        int strbuf_len)</span><br><span> {</span><br><span>    int af;</span><br><span style="color: hsl(0, 100%, 40%);">- switch (gsna->len) {</span><br><span style="color: hsl(120, 100%, 40%);">+       switch (gsna->length) {</span><br><span>   case 4:</span><br><span>              af = AF_INET;</span><br><span>                break;</span><br><span>@@ -232,29 +232,29 @@</span><br><span>               return NULL;</span><br><span>         }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   const char *r = inet_ntop(af, gsna->buf, strbuf, strbuf_len);</span><br><span style="color: hsl(120, 100%, 40%);">+      const char *r = inet_ntop(af, gsna->addr, strbuf, strbuf_len);</span><br><span>    if (!r) {</span><br><span style="color: hsl(0, 100%, 40%);">-               LOG(LOGL_ERROR, "Cannot convert gsn_addr to string:"</span><br><span style="color: hsl(120, 100%, 40%);">+                LOG(LOGL_ERROR, "Cannot convert osmo_gsn_address to string:"</span><br><span>                   " %s: len=%d, buf=%s\n",</span><br><span>                   strerror(errno),</span><br><span style="color: hsl(0, 100%, 40%);">-                (int)gsna->len,</span><br><span style="color: hsl(0, 100%, 40%);">-              osmo_hexdump(gsna->buf, sizeof(gsna->buf)));</span><br><span style="color: hsl(120, 100%, 40%);">+                    (int)gsna->length,</span><br><span style="color: hsl(120, 100%, 40%);">+                 osmo_hexdump(gsna->addr, sizeof(gsna->addr)));</span><br><span>     }</span><br><span>    return r;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int gsn_addr_same(const struct gsn_addr *a, const struct gsn_addr *b)</span><br><span style="color: hsl(120, 100%, 40%);">+int gsn_addr_same(const struct osmo_gsn_address *a, const struct osmo_gsn_address *b)</span><br><span> {</span><br><span>  if (a == b)</span><br><span>          return 1;</span><br><span>    if ((!a) || (!b))</span><br><span>            return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-       if (a->len != b->len)</span><br><span style="color: hsl(120, 100%, 40%);">+   if (a->length != b->length)</span><br><span>            return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-       return (memcmp(a->buf, b->buf, a->len) == 0)? 1 : 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ return (memcmp(a->addr, b->addr, a->length) == 0)? 1 : 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int gsn_addr_get(struct gsn_addr *gsna, const struct gtp_packet_desc *p,</span><br><span style="color: hsl(120, 100%, 40%);">+static int gsn_addr_get(struct osmo_gsn_address *gsna, const struct gtp_packet_desc *p,</span><br><span>                  int idx)</span><br><span> {</span><br><span>        if (p->rc != GTP_RC_PDU_C)</span><br><span>@@ -263,14 +263,14 @@</span><br><span>        unsigned int len;</span><br><span>    /* gtpie.h fails to declare gtpie_gettlv()'s first arg as const. */</span><br><span>      if (gtpie_gettlv((union gtpie_member**)p->ie, GTPIE_GSN_ADDR, idx,</span><br><span style="color: hsl(0, 100%, 40%);">-                    &len, gsna->buf, sizeof(gsna->buf))</span><br><span style="color: hsl(120, 100%, 40%);">+                         &len, gsna->addr, sizeof(gsna->addr))</span><br><span>         != 0)</span><br><span>            return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      gsna->len = len;</span><br><span style="color: hsl(120, 100%, 40%);">+   gsna->length = len;</span><br><span>       return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int gsn_addr_put(const struct gsn_addr *gsna, struct gtp_packet_desc *p,</span><br><span style="color: hsl(120, 100%, 40%);">+static int gsn_addr_put(const struct osmo_gsn_address *gsna, struct gtp_packet_desc *p,</span><br><span>                   int idx)</span><br><span> {</span><br><span>        if (p->rc != GTP_RC_PDU_C)</span><br><span>@@ -284,14 +284,14 @@</span><br><span> </span><br><span>    struct gtpie_tlv *ie = &p->ie[ie_idx]->tlv;</span><br><span>        int ie_l = ntoh16(ie->l);</span><br><span style="color: hsl(0, 100%, 40%);">-    if (ie_l != gsna->len) {</span><br><span style="color: hsl(120, 100%, 40%);">+   if (ie_l != gsna->length) {</span><br><span>               LOG(LOGL_ERROR, "Not implemented:"</span><br><span>                     " replace an IE address of different size:"</span><br><span style="color: hsl(0, 100%, 40%);">-                   " replace %d with %d\n", (int)ie_l, (int)gsna->len);</span><br><span style="color: hsl(120, 100%, 40%);">+             " replace %d with %d\n", (int)ie_l, (int)gsna->length);</span><br><span>             return -1;</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   memcpy(ie->v, gsna->buf, (int)ie_l);</span><br><span style="color: hsl(120, 100%, 40%);">+    memcpy(ie->v, gsna->addr, (int)ie_l);</span><br><span>  return 0;</span><br><span> }</span><br><span> </span><br><span>@@ -574,7 +574,7 @@</span><br><span>     }</span><br><span> </span><br><span>        for (i = 0; i < 2; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-            struct gsn_addr addr;</span><br><span style="color: hsl(120, 100%, 40%);">+         struct osmo_gsn_address addr;</span><br><span>                if (gsn_addr_get(&addr, res, i) == 0)</span><br><span>                    LOG(LOGL_DEBUG, "| addr %s\n", gsn_addr_to_str(&addr));</span><br><span>        }</span><br><span>@@ -1535,7 +1535,7 @@</span><br><span> </span><br><span>        for_each_plane(plane_idx) {</span><br><span>          int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-         struct gsn_addr use_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+             struct osmo_gsn_address use_addr;</span><br><span>            uint16_t use_port;</span><br><span>           uint32_t tei_from_ie;</span><br><span>                int ie_idx;</span><br><span>@@ -1552,7 +1552,7 @@</span><br><span>          LOG(LOGL_DEBUG, "Read %s GSN addr %s (%d)\n",</span><br><span>                  gtphub_plane_idx_names[plane_idx],</span><br><span>                   gsn_addr_to_str(&use_addr),</span><br><span style="color: hsl(0, 100%, 40%);">-                 use_addr.len);</span><br><span style="color: hsl(120, 100%, 40%);">+                use_addr.length);</span><br><span> </span><br><span>            ie_idx = gtpie_getie(p->ie, ie_type[plane_idx], 0);</span><br><span>               if (ie_idx < 0) {</span><br><span>@@ -2069,7 +2069,7 @@</span><br><span>         return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int gsn_addr_to_sockaddr(struct gsn_addr *src,</span><br><span style="color: hsl(120, 100%, 40%);">+static int gsn_addr_to_sockaddr(struct osmo_gsn_address *src,</span><br><span>                               uint16_t port,</span><br><span>                               struct osmo_sockaddr *dst)</span><br><span> {</span><br><span>@@ -2220,7 +2220,7 @@</span><br><span>                              return -1;</span><br><span>                   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                   struct gsn_addr from_gsna;</span><br><span style="color: hsl(120, 100%, 40%);">+                    struct osmo_gsn_address from_gsna;</span><br><span>                   uint16_t from_port;</span><br><span>                  if (gsn_addr_from_sockaddr(&from_gsna, &from_port, from_addr) != 0)</span><br><span>                          return -1;</span><br><span>@@ -2354,7 +2354,7 @@</span><br><span> }</span><br><span> </span><br><span> void gtphub_resolved_ggsn(struct gtphub *hub, const char *apn_oi_str,</span><br><span style="color: hsl(0, 100%, 40%);">-                      struct gsn_addr *resolved_addr,</span><br><span style="color: hsl(120, 100%, 40%);">+                       struct osmo_gsn_address *resolved_addr,</span><br><span>                      time_t now)</span><br><span> {</span><br><span>   struct gtphub_peer_port *pp;</span><br><span>@@ -2524,7 +2524,7 @@</span><br><span>         if (!addr->addr_str)</span><br><span>              return 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   struct gsn_addr gsna;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct osmo_gsn_address gsna;</span><br><span>        if (gsn_addr_from_str(&gsna, addr->addr_str) != 0)</span><br><span>            return -1;</span><br><span> </span><br><span>@@ -2600,7 +2600,7 @@</span><br><span> }</span><br><span> </span><br><span> static struct gtphub_peer_addr *gtphub_peer_find_addr(const struct gtphub_peer *peer,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                      const struct gsn_addr *addr)</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  const struct osmo_gsn_address *addr)</span><br><span> {</span><br><span>      struct gtphub_peer_addr *a;</span><br><span>  llist_for_each_entry(a, &peer->addresses, entry) {</span><br><span>@@ -2623,7 +2623,7 @@</span><br><span> }</span><br><span> </span><br><span> static struct gtphub_peer_addr *gtphub_addr_find(const struct gtphub_bind *bind,</span><br><span style="color: hsl(0, 100%, 40%);">-                                           const struct gsn_addr *addr)</span><br><span style="color: hsl(120, 100%, 40%);">+                                          const struct osmo_gsn_address *addr)</span><br><span> {</span><br><span>   struct gtphub_peer *peer;</span><br><span>    llist_for_each_entry(peer, &bind->peers, entry) {</span><br><span>@@ -2635,7 +2635,7 @@</span><br><span> }</span><br><span> </span><br><span> static struct gtphub_peer_port *gtphub_port_find(const struct gtphub_bind *bind,</span><br><span style="color: hsl(0, 100%, 40%);">-                                            const struct gsn_addr *addr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          const struct osmo_gsn_address *addr,</span><br><span>                                                 uint16_t port)</span><br><span> {</span><br><span>         struct gtphub_peer_addr *a = gtphub_addr_find(bind, addr);</span><br><span>@@ -2647,7 +2647,7 @@</span><br><span> struct gtphub_peer_port *gtphub_port_find_sa(const struct gtphub_bind *bind,</span><br><span>                                        const struct osmo_sockaddr *addr)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     struct gsn_addr gsna;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct osmo_gsn_address gsna;</span><br><span>        uint16_t port;</span><br><span>       if (gsn_addr_from_sockaddr(&gsna, &port, addr) != 0)</span><br><span>                 return NULL;</span><br><span>@@ -2677,7 +2677,7 @@</span><br><span> }</span><br><span> </span><br><span> static struct gtphub_peer_addr *gtphub_peer_add_addr(struct gtphub_peer *peer,</span><br><span style="color: hsl(0, 100%, 40%);">-                                              const struct gsn_addr *addr)</span><br><span style="color: hsl(120, 100%, 40%);">+                                                  const struct osmo_gsn_address *addr)</span><br><span> {</span><br><span>       struct gtphub_peer_addr *a;</span><br><span>  a = talloc_zero(osmo_gtphub_ctx, struct gtphub_peer_addr);</span><br><span>@@ -2692,7 +2692,7 @@</span><br><span> </span><br><span> static struct gtphub_peer_addr *gtphub_addr_have(struct gtphub *hub,</span><br><span>                                                struct gtphub_bind *bind,</span><br><span style="color: hsl(0, 100%, 40%);">-                                               const struct gsn_addr *addr)</span><br><span style="color: hsl(120, 100%, 40%);">+                                          const struct osmo_gsn_address *addr)</span><br><span> {</span><br><span>   struct gtphub_peer_addr *a = gtphub_addr_find(bind, addr);</span><br><span>   if (a)</span><br><span>@@ -2747,7 +2747,7 @@</span><br><span> </span><br><span> struct gtphub_peer_port *gtphub_port_have(struct gtphub *hub,</span><br><span>                                    struct gtphub_bind *bind,</span><br><span style="color: hsl(0, 100%, 40%);">-                                       const struct gsn_addr *addr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                          const struct osmo_gsn_address *addr,</span><br><span>                                         uint16_t port)</span><br><span> {</span><br><span>        struct gtphub_peer_addr *a = gtphub_addr_have(hub, bind, addr);</span><br><span>@@ -2767,7 +2767,7 @@</span><br><span>      struct gtphub_peer_addr *pa;</span><br><span>         struct gtphub_peer_port *pp;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        struct gsn_addr gsna;</span><br><span style="color: hsl(120, 100%, 40%);">+ struct osmo_gsn_address gsna;</span><br><span>        uint16_t port;</span><br><span>       int rc = gsn_addr_from_sockaddr(&gsna, &port, addr);</span><br><span>         if (rc < 0)</span><br><span>diff --git a/src/gprs/gtphub_ares.c b/src/gprs/gtphub_ares.c</span><br><span>index 87dc860..be26f55 100644</span><br><span>--- a/src/gprs/gtphub_ares.c</span><br><span>+++ b/src/gprs/gtphub_ares.c</span><br><span>@@ -85,10 +85,10 @@</span><br><span>            goto remove_from_queue;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   struct gsn_addr resolved_addr;</span><br><span style="color: hsl(0, 100%, 40%);">-  if (hostent->h_length > sizeof(resolved_addr.buf)) {</span><br><span style="color: hsl(120, 100%, 40%);">+    struct osmo_gsn_address resolved_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+        if (hostent->h_length > sizeof(resolved_addr.addr)) {</span><br><span>          LOGP(DGTPHUB, LOGL_ERROR, "Addr size too large: %d > %d\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                     (int)hostent->h_length, (int)sizeof(resolved_addr.buf));</span><br><span style="color: hsl(120, 100%, 40%);">+                   (int)hostent->h_length, (int)sizeof(resolved_addr.addr));</span><br><span>            goto remove_from_queue;</span><br><span>      }</span><br><span> </span><br><span>@@ -99,8 +99,8 @@</span><br><span>            goto remove_from_queue;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   memcpy(resolved_addr.buf, addr0, hostent->h_length);</span><br><span style="color: hsl(0, 100%, 40%);">- resolved_addr.len = hostent->h_length;</span><br><span style="color: hsl(120, 100%, 40%);">+     memcpy(resolved_addr.addr, addr0, hostent->h_length);</span><br><span style="color: hsl(120, 100%, 40%);">+      resolved_addr.length = hostent->h_length;</span><br><span> </span><br><span>     LOGP(DGTPHUB, LOGL_NOTICE, "resolved addr %s\n",</span><br><span>        osmo_hexdump((unsigned char*)&resolved_addr,</span><br><span>diff --git a/tests/gtphub/gtphub_test.c b/tests/gtphub/gtphub_test.c</span><br><span>index 2e48bb1..214b7d4 100644</span><br><span>--- a/tests/gtphub/gtphub_test.c</span><br><span>+++ b/tests/gtphub/gtphub_test.c</span><br><span>@@ -424,7 +424,7 @@</span><br><span>                                                      const char *imsi_str,</span><br><span>                                                        const char *apn_ni_str)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   struct gsn_addr resolved_gsna;</span><br><span style="color: hsl(120, 100%, 40%);">+        struct osmo_gsn_address resolved_gsna;</span><br><span>       uint16_t resolved_port;</span><br><span> </span><br><span>  OSMO_ASSERT(gsn_addr_from_sockaddr(&resolved_gsna, &resolved_port,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12230">change 12230</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12230"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-sgsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I75645fd5cd1016bd9a08096e3ee4101b2560cefd </div>
<div style="display:none"> Gerrit-Change-Number: 12230 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>