This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Max gerrit-no-reply at lists.osmocom.orgMax has uploaded this change for review. ( https://gerrit.osmocom.org/12352
Change subject: Store GSN address in libosmocore struct
......................................................................
Store GSN address in libosmocore struct
That's automated code change made using following program:
//spatch --in-place --sp-file dup.spatch -I include --dir ./ --all-includes
@@
@@
struct
- gsn_addr
+ osmo_gsn_address
@@
struct osmo_gsn_address a;
@@
(
a.
- len
+ length
|
a.
- buf
+ addr
)
Note that --all-includes is necessary because affected functions are
defined and implemented in files with different subdirectory names under
include and src correspondingly.
Change-Id: I6ed32a91483dc608c47df77869033a6e891e9e6a
---
M include/osmocom/sgsn/gtphub.h
M src/gprs/gtphub.c
M src/gprs/gtphub_ares.c
M tests/gtphub/gtphub_test.c
4 files changed, 61 insertions(+), 53 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/52/12352/1
diff --git a/include/osmocom/sgsn/gtphub.h b/include/osmocom/sgsn/gtphub.h
index 8fd9f38..7afe83c 100644
--- a/include/osmocom/sgsn/gtphub.h
+++ b/include/osmocom/sgsn/gtphub.h
@@ -163,22 +163,25 @@
uint8_t buf[16];
};
-void gsn_addr_copy(struct gsn_addr *gsna, const struct gsn_addr *src);
-int gsn_addr_from_str(struct gsn_addr *gsna, const char *numeric_addr_str);
+void gsn_addr_copy(struct osmo_gsn_address *gsna,
+ const struct osmo_gsn_address *src);
+int gsn_addr_from_str(struct osmo_gsn_address *gsna,
+ const char *numeric_addr_str);
/* Return gsna in numeric string form, in a static buffer. */
-const char *gsn_addr_to_str(const struct gsn_addr *gsna);
+const char *gsn_addr_to_str(const struct osmo_gsn_address *gsna);
/* note: strbuf_len doesn't need to be larger than INET6_ADDRSTRLEN + 1. */
-const char *gsn_addr_to_strb(const struct gsn_addr *gsna,
+const char *gsn_addr_to_strb(const struct osmo_gsn_address *gsna,
char *strbuf, int strbuf_len);
/* Return 1 on match, zero otherwise. */
-int gsn_addr_same(const struct gsn_addr *a, const struct gsn_addr *b);
+int gsn_addr_same(const struct osmo_gsn_address *a,
+ const struct osmo_gsn_address *b);
/* Decode sa to gsna. Return 0 on success. If port is non-NULL, the port number
* from sa is also returned. */
-int gsn_addr_from_sockaddr(struct gsn_addr *gsna, uint16_t *port,
+int gsn_addr_from_sockaddr(struct osmo_gsn_address *gsna, uint16_t *port,
const struct osmo_sockaddr *sa);
/* expiry */
@@ -379,7 +382,7 @@
struct llist_head entry;
struct gtphub_peer *peer;
- struct gsn_addr addr;
+ struct osmo_gsn_address addr;
struct llist_head ports;
};
@@ -411,7 +414,7 @@
};
struct gtphub_bind {
- struct gsn_addr local_addr;
+ struct osmo_gsn_address local_addr;
uint16_t local_port;
struct osmo_fd ofd;
@@ -506,14 +509,14 @@
struct gtphub_peer_port *gtphub_port_have(struct gtphub *hub,
struct gtphub_bind *bind,
- const struct gsn_addr *addr,
+ const struct osmo_gsn_address *addr,
uint16_t port);
struct gtphub_peer_port *gtphub_port_find_sa(const struct gtphub_bind *bind,
const struct osmo_sockaddr *addr);
void gtphub_resolved_ggsn(struct gtphub *hub, const char *apn_oi_str,
- struct gsn_addr *resolved_addr,
+ struct osmo_gsn_address *resolved_addr,
time_t now);
const char *gtphub_port_str(struct gtphub_peer_port *port);
diff --git a/src/gprs/gtphub.c b/src/gprs/gtphub.c
index ca5857b..a17306e 100644
--- a/src/gprs/gtphub.c
+++ b/src/gprs/gtphub.c
@@ -161,12 +161,13 @@
}
}
-void gsn_addr_copy(struct gsn_addr *gsna, const struct gsn_addr *src)
+void gsn_addr_copy(struct osmo_gsn_address *gsna,
+ const struct osmo_gsn_address *src)
{
*gsna = *src;
}
-int gsn_addr_from_sockaddr(struct gsn_addr *gsna, uint16_t *port,
+int gsn_addr_from_sockaddr(struct osmo_gsn_address *gsna, uint16_t *port,
const struct osmo_sockaddr *sa)
{
char addr_str[256];
@@ -185,23 +186,24 @@
return gsn_addr_from_str(gsna, addr_str);
}
-int gsn_addr_from_str(struct gsn_addr *gsna, const char *numeric_addr_str)
+int gsn_addr_from_str(struct osmo_gsn_address *gsna,
+ const char *numeric_addr_str)
{
if ((!gsna) || (!numeric_addr_str))
return -1;
int af = AF_INET;
- gsna->len = 4;
+ gsna->length = 4;
const char *pos = numeric_addr_str;
for (; *pos; pos++) {
if (*pos == ':') {
af = AF_INET6;
- gsna->len = 16;
+ gsna->length = 16;
break;
}
}
- int rc = inet_pton(af, numeric_addr_str, gsna->buf);
+ int rc = inet_pton(af, numeric_addr_str, gsna->addr);
if (rc != 1) {
LOG(LOGL_ERROR, "Cannot resolve numeric address: '%s'\n",
numeric_addr_str);
@@ -210,18 +212,18 @@
return 0;
}
-const char *gsn_addr_to_str(const struct gsn_addr *gsna)
+const char *gsn_addr_to_str(const struct osmo_gsn_address *gsna)
{
static char buf[INET6_ADDRSTRLEN + 1];
return gsn_addr_to_strb(gsna, buf, sizeof(buf));
}
-const char *gsn_addr_to_strb(const struct gsn_addr *gsna,
+const char *gsn_addr_to_strb(const struct osmo_gsn_address *gsna,
char *strbuf,
int strbuf_len)
{
int af;
- switch (gsna->len) {
+ switch (gsna->length) {
case 4:
af = AF_INET;
break;
@@ -232,29 +234,31 @@
return NULL;
}
- const char *r = inet_ntop(af, gsna->buf, strbuf, strbuf_len);
+ const char *r = inet_ntop(af, gsna->addr, strbuf, strbuf_len);
if (!r) {
LOG(LOGL_ERROR, "Cannot convert gsn_addr to string:"
" %s: len=%d, buf=%s\n",
strerror(errno),
- (int)gsna->len,
- osmo_hexdump(gsna->buf, sizeof(gsna->buf)));
+ (int)gsna->length,
+ osmo_hexdump(gsna->addr, sizeof(gsna->addr)));
}
return r;
}
-int gsn_addr_same(const struct gsn_addr *a, const struct gsn_addr *b)
+int gsn_addr_same(const struct osmo_gsn_address *a,
+ const struct osmo_gsn_address *b)
{
if (a == b)
return 1;
if ((!a) || (!b))
return 0;
- if (a->len != b->len)
+ if (a->length != b->length)
return 0;
- return (memcmp(a->buf, b->buf, a->len) == 0)? 1 : 0;
+ return (memcmp(a->addr, b->addr, a->length) == 0)? 1 : 0;
}
-static int gsn_addr_get(struct gsn_addr *gsna, const struct gtp_packet_desc *p,
+static int gsn_addr_get(struct osmo_gsn_address *gsna,
+ const struct gtp_packet_desc *p,
int idx)
{
if (p->rc != GTP_RC_PDU_C)
@@ -263,14 +267,15 @@
unsigned int len;
/* gtpie.h fails to declare gtpie_gettlv()'s first arg as const. */
if (gtpie_gettlv((union gtpie_member**)p->ie, GTPIE_GSN_ADDR, idx,
- &len, gsna->buf, sizeof(gsna->buf))
+ &len, gsna->addr, sizeof(gsna->addr))
!= 0)
return -1;
- gsna->len = len;
+ gsna->length = len;
return 0;
}
-static int gsn_addr_put(const struct gsn_addr *gsna, struct gtp_packet_desc *p,
+static int gsn_addr_put(const struct osmo_gsn_address *gsna,
+ struct gtp_packet_desc *p,
int idx)
{
if (p->rc != GTP_RC_PDU_C)
@@ -284,14 +289,14 @@
struct gtpie_tlv *ie = &p->ie[ie_idx]->tlv;
int ie_l = ntoh16(ie->l);
- if (ie_l != gsna->len) {
+ if (ie_l != gsna->length) {
LOG(LOGL_ERROR, "Not implemented:"
" replace an IE address of different size:"
- " replace %d with %d\n", (int)ie_l, (int)gsna->len);
+ " replace %d with %d\n", (int)ie_l, (int)gsna->length);
return -1;
}
- memcpy(ie->v, gsna->buf, (int)ie_l);
+ memcpy(ie->v, gsna->addr, (int)ie_l);
return 0;
}
@@ -574,7 +579,7 @@
}
for (i = 0; i < 2; i++) {
- struct gsn_addr addr;
+ struct osmo_gsn_address addr;
if (gsn_addr_get(&addr, res, i) == 0)
LOG(LOGL_DEBUG, "| addr %s\n", gsn_addr_to_str(&addr));
}
@@ -1535,7 +1540,7 @@
for_each_plane(plane_idx) {
int rc;
- struct gsn_addr use_addr;
+ struct osmo_gsn_address use_addr;
uint16_t use_port;
uint32_t tei_from_ie;
int ie_idx;
@@ -1552,7 +1557,7 @@
LOG(LOGL_DEBUG, "Read %s GSN addr %s (%d)\n",
gtphub_plane_idx_names[plane_idx],
gsn_addr_to_str(&use_addr),
- use_addr.len);
+ use_addr.length);
ie_idx = gtpie_getie(p->ie, ie_type[plane_idx], 0);
if (ie_idx < 0) {
@@ -2069,7 +2074,7 @@
return 0;
}
-static int gsn_addr_to_sockaddr(struct gsn_addr *src,
+static int gsn_addr_to_sockaddr(struct osmo_gsn_address *src,
uint16_t port,
struct osmo_sockaddr *dst)
{
@@ -2220,7 +2225,7 @@
return -1;
}
- struct gsn_addr from_gsna;
+ struct osmo_gsn_address from_gsna;
uint16_t from_port;
if (gsn_addr_from_sockaddr(&from_gsna, &from_port, from_addr) != 0)
return -1;
@@ -2354,7 +2359,7 @@
}
void gtphub_resolved_ggsn(struct gtphub *hub, const char *apn_oi_str,
- struct gsn_addr *resolved_addr,
+ struct osmo_gsn_address *resolved_addr,
time_t now)
{
struct gtphub_peer_port *pp;
@@ -2524,7 +2529,7 @@
if (!addr->addr_str)
return 0;
- struct gsn_addr gsna;
+ struct osmo_gsn_address gsna;
if (gsn_addr_from_str(&gsna, addr->addr_str) != 0)
return -1;
@@ -2600,7 +2605,7 @@
}
static struct gtphub_peer_addr *gtphub_peer_find_addr(const struct gtphub_peer *peer,
- const struct gsn_addr *addr)
+ const struct osmo_gsn_address *addr)
{
struct gtphub_peer_addr *a;
llist_for_each_entry(a, &peer->addresses, entry) {
@@ -2623,7 +2628,7 @@
}
static struct gtphub_peer_addr *gtphub_addr_find(const struct gtphub_bind *bind,
- const struct gsn_addr *addr)
+ const struct osmo_gsn_address *addr)
{
struct gtphub_peer *peer;
llist_for_each_entry(peer, &bind->peers, entry) {
@@ -2635,7 +2640,7 @@
}
static struct gtphub_peer_port *gtphub_port_find(const struct gtphub_bind *bind,
- const struct gsn_addr *addr,
+ const struct osmo_gsn_address *addr,
uint16_t port)
{
struct gtphub_peer_addr *a = gtphub_addr_find(bind, addr);
@@ -2647,7 +2652,7 @@
struct gtphub_peer_port *gtphub_port_find_sa(const struct gtphub_bind *bind,
const struct osmo_sockaddr *addr)
{
- struct gsn_addr gsna;
+ struct osmo_gsn_address gsna;
uint16_t port;
if (gsn_addr_from_sockaddr(&gsna, &port, addr) != 0)
return NULL;
@@ -2677,7 +2682,7 @@
}
static struct gtphub_peer_addr *gtphub_peer_add_addr(struct gtphub_peer *peer,
- const struct gsn_addr *addr)
+ const struct osmo_gsn_address *addr)
{
struct gtphub_peer_addr *a;
a = talloc_zero(osmo_gtphub_ctx, struct gtphub_peer_addr);
@@ -2692,7 +2697,7 @@
static struct gtphub_peer_addr *gtphub_addr_have(struct gtphub *hub,
struct gtphub_bind *bind,
- const struct gsn_addr *addr)
+ const struct osmo_gsn_address *addr)
{
struct gtphub_peer_addr *a = gtphub_addr_find(bind, addr);
if (a)
@@ -2747,7 +2752,7 @@
struct gtphub_peer_port *gtphub_port_have(struct gtphub *hub,
struct gtphub_bind *bind,
- const struct gsn_addr *addr,
+ const struct osmo_gsn_address *addr,
uint16_t port)
{
struct gtphub_peer_addr *a = gtphub_addr_have(hub, bind, addr);
@@ -2767,7 +2772,7 @@
struct gtphub_peer_addr *pa;
struct gtphub_peer_port *pp;
- struct gsn_addr gsna;
+ struct osmo_gsn_address gsna;
uint16_t port;
int rc = gsn_addr_from_sockaddr(&gsna, &port, addr);
if (rc < 0)
diff --git a/src/gprs/gtphub_ares.c b/src/gprs/gtphub_ares.c
index 87dc860..be26f55 100644
--- a/src/gprs/gtphub_ares.c
+++ b/src/gprs/gtphub_ares.c
@@ -85,10 +85,10 @@
goto remove_from_queue;
}
- struct gsn_addr resolved_addr;
- if (hostent->h_length > sizeof(resolved_addr.buf)) {
+ struct osmo_gsn_address resolved_addr;
+ if (hostent->h_length > sizeof(resolved_addr.addr)) {
LOGP(DGTPHUB, LOGL_ERROR, "Addr size too large: %d > %d\n",
- (int)hostent->h_length, (int)sizeof(resolved_addr.buf));
+ (int)hostent->h_length, (int)sizeof(resolved_addr.addr));
goto remove_from_queue;
}
@@ -99,8 +99,8 @@
goto remove_from_queue;
}
- memcpy(resolved_addr.buf, addr0, hostent->h_length);
- resolved_addr.len = hostent->h_length;
+ memcpy(resolved_addr.addr, addr0, hostent->h_length);
+ resolved_addr.length = hostent->h_length;
LOGP(DGTPHUB, LOGL_NOTICE, "resolved addr %s\n",
osmo_hexdump((unsigned char*)&resolved_addr,
diff --git a/tests/gtphub/gtphub_test.c b/tests/gtphub/gtphub_test.c
index 2e48bb1..214b7d4 100644
--- a/tests/gtphub/gtphub_test.c
+++ b/tests/gtphub/gtphub_test.c
@@ -424,7 +424,7 @@
const char *imsi_str,
const char *apn_ni_str)
{
- struct gsn_addr resolved_gsna;
+ struct osmo_gsn_address resolved_gsna;
uint16_t resolved_port;
OSMO_ASSERT(gsn_addr_from_sockaddr(&resolved_gsna, &resolved_port,
--
To view, visit https://gerrit.osmocom.org/12352
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6ed32a91483dc608c47df77869033a6e891e9e6a
Gerrit-Change-Number: 12352
Gerrit-PatchSet: 1
Gerrit-Owner: Max <msuraev at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181218/318966e9/attachment.htm>