diff options
author | Alexander Couzens <lynxis@fe80.eu> | 2020-09-23 23:56:37 +0200 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2020-09-25 09:45:24 +0000 |
commit | 38b19e88bbe0da721792f94995504524ee083ae3 (patch) | |
tree | 79c195d0b5fe56a56e38a19844290e112d726b20 | |
parent | c1cd333072062e676a8cab4a0931beddb7b4a788 (diff) |
ns2: refactor nsvc_by_ functions
gprs_ns2_nsvc_by_sockaddr_nsei is doing the lookup within a NSE.
gprs_ns2_nsvc_by_sockaddr_bind is doing the lookup within a bind.
Make both function look similiar and take similiar arguments.
Change-Id: Ia499fc279013668abe7348e578a0768f7d16faf9
-rw-r--r-- | include/osmocom/gprs/gprs_ns2.h | 10 | ||||
-rw-r--r-- | src/gb/gprs_ns2.c | 2 | ||||
-rw-r--r-- | src/gb/gprs_ns2_sns.c | 4 | ||||
-rw-r--r-- | src/gb/gprs_ns2_udp.c | 17 |
4 files changed, 14 insertions, 19 deletions
diff --git a/include/osmocom/gprs/gprs_ns2.h b/include/osmocom/gprs/gprs_ns2.h index 68484c14..cd2de96f 100644 --- a/include/osmocom/gprs/gprs_ns2.h +++ b/include/osmocom/gprs/gprs_ns2.h @@ -131,10 +131,9 @@ struct osmo_sockaddr *gprs_ns2_ip_vc_sockaddr(struct gprs_ns2_vc *nsvc); struct osmo_sockaddr *gprs_ns2_ip_bind_sockaddr(struct gprs_ns2_vc_bind *bind); int gprs_ns2_is_ip_bind(struct gprs_ns2_vc_bind *bind); int gprs_ns2_ip_bind_set_dscp(struct gprs_ns2_vc_bind *bind, int dscp); -int gprs_ns2_find_vc_by_sockaddr( +struct gprs_ns2_vc *gprs_ns2_nsvc_by_sockaddr_bind( struct gprs_ns2_vc_bind *bind, - struct osmo_sockaddr *saddr, - struct gprs_ns2_vc **result); + struct osmo_sockaddr *saddr); int gprs_ns2_frgre_bind(struct gprs_ns2_inst *nsi, struct osmo_sockaddr *local, @@ -142,8 +141,9 @@ int gprs_ns2_frgre_bind(struct gprs_ns2_inst *nsi, struct gprs_ns2_vc_bind **result); int gprs_ns2_is_frgre_bind(struct gprs_ns2_vc_bind *bind); -struct gprs_ns2_vc *gprs_ns2_nsvc_by_sockaddr(struct gprs_ns2_nse *nsei, - struct osmo_sockaddr *sockaddr); +struct gprs_ns2_vc *gprs_ns2_nsvc_by_sockaddr_nse( + struct gprs_ns2_nse *nse, + struct osmo_sockaddr *sockaddr); void gprs_ns2_start_alive_all_nsvcs(struct gprs_ns2_nse *nse); const char *gprs_ns2_cause_str(int cause); const char *gprs_ns2_ll_str(struct gprs_ns2_vc *nsvc); diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c index 57a08d1d..835c22a1 100644 --- a/src/gb/gprs_ns2.c +++ b/src/gb/gprs_ns2.c @@ -824,7 +824,7 @@ int gprs_ns2_ip_connect_sns(struct gprs_ns2_vc_bind *bind, * \param[in] nse NS Entity in which to search * \param[in] sockaddr socket address to search for * \return NS-VC matching sockaddr; NULL if none found */ -struct gprs_ns2_vc *gprs_ns2_nsvc_by_sockaddr(struct gprs_ns2_nse *nse, +struct gprs_ns2_vc *gprs_ns2_nsvc_by_sockaddr_nse(struct gprs_ns2_nse *nse, struct osmo_sockaddr *sockaddr) { struct gprs_ns2_vc *nsvc; diff --git a/src/gb/gprs_ns2_sns.c b/src/gb/gprs_ns2_sns.c index 812200dc..753ac4d8 100644 --- a/src/gb/gprs_ns2_sns.c +++ b/src/gb/gprs_ns2_sns.c @@ -179,7 +179,7 @@ static struct gprs_ns2_vc *nsvc_by_ip4_elem(struct gprs_ns2_nse *nse, sa.u.sin.sin_port = ip4->udp_port; sa.u.sin.sin_family = AF_INET; - return gprs_ns2_nsvc_by_sockaddr(nse, &sa); + return gprs_ns2_nsvc_by_sockaddr_nse(nse, &sa); } static struct gprs_ns2_vc *nsvc_by_ip6_elem(struct gprs_ns2_nse *nse, @@ -191,7 +191,7 @@ static struct gprs_ns2_vc *nsvc_by_ip6_elem(struct gprs_ns2_nse *nse, sa.u.sin6.sin6_port = ip6->udp_port; sa.u.sin6.sin6_family = AF_INET; - return gprs_ns2_nsvc_by_sockaddr(nse, &sa); + return gprs_ns2_nsvc_by_sockaddr_nse(nse, &sa); } /*! called when a nsvc is beeing freed */ diff --git a/src/gb/gprs_ns2_udp.c b/src/gb/gprs_ns2_udp.c index bb421a75..9994a725 100644 --- a/src/gb/gprs_ns2_udp.c +++ b/src/gb/gprs_ns2_udp.c @@ -81,16 +81,12 @@ static void free_vc(struct gprs_ns2_vc *nsvc) /*! Find a NS-VC by its remote socket address. * \param[in] bind in which to search * \param[in] saddr remote peer socket adddress to search - * \param[out] result pointer to result - * \returns 0 on success; 1 if no NS-VC was found; negative on error */ -int gprs_ns2_find_vc_by_sockaddr(struct gprs_ns2_vc_bind *bind, struct osmo_sockaddr *saddr, struct gprs_ns2_vc **result) + * \returns NS-VC matching sockaddr; NULL if none found */ +struct gprs_ns2_vc *gprs_ns2_nsvc_by_sockaddr_bind(struct gprs_ns2_vc_bind *bind, struct osmo_sockaddr *saddr) { struct gprs_ns2_vc *nsvc; struct priv_vc *vcpriv; - if (!result) - return -EINVAL; - llist_for_each_entry(nsvc, &bind->nsvc, blist) { vcpriv = nsvc->priv; if (vcpriv->remote.u.sa.sa_family != saddr->u.sa.sa_family) @@ -98,11 +94,10 @@ int gprs_ns2_find_vc_by_sockaddr(struct gprs_ns2_vc_bind *bind, struct osmo_sock if (osmo_sockaddr_cmp(&vcpriv->remote, saddr)) continue; - *result = nsvc; - return 0; + return nsvc; } - return 1; + return NULL; } static inline int nsip_sendmsg(struct gprs_ns2_vc_bind *bind, @@ -194,8 +189,8 @@ static int handle_nsip_read(struct osmo_fd *bfd) return -EINVAL; /* check if a vc is available */ - rc = gprs_ns2_find_vc_by_sockaddr(bind, &saddr, &nsvc); - if (rc) { + nsvc = gprs_ns2_nsvc_by_sockaddr_bind(bind, &saddr); + if (!nsvc) { /* VC not found */ rc = ns2_create_vc(bind, msg, "newconnection", &reject, &nsvc); switch (rc) { |