Change in libosmocore[master]: gprs_ns2_sns: remove code duplication in create_missing_nsvcs()

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/.

daniel gerrit-no-reply at lists.osmocom.org
Wed Mar 24 16:18:15 UTC 2021


daniel has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/23480 )

Change subject: gprs_ns2_sns: remove code duplication in create_missing_nsvcs()
......................................................................

gprs_ns2_sns: remove code duplication in create_missing_nsvcs()

Change-Id: I78d79c3bc92f0c0bebbbbe639b8406c4b188582f
---
M src/gb/gprs_ns2_sns.c
1 file changed, 25 insertions(+), 24 deletions(-)

Approvals:
  daniel: Looks good to me, approved
  lynxis lazus: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/src/gb/gprs_ns2_sns.c b/src/gb/gprs_ns2_sns.c
index 7268809..2370f01 100644
--- a/src/gb/gprs_ns2_sns.c
+++ b/src/gb/gprs_ns2_sns.c
@@ -367,6 +367,21 @@
 	ns2_vc_create_ip(fi, nse, &remote, ip6->sig_weight, ip6->data_weight);
 }
 
+static struct gprs_ns2_vc *nsvc_for_bind_and_remote(struct gprs_ns2_nse *nse,
+						    struct gprs_ns2_vc_bind *bind,
+						    const struct osmo_sockaddr *remote)
+{
+	struct gprs_ns2_vc *nsvc;
+
+	llist_for_each_entry(nsvc, &nse->nsvc, list) {
+		if (nsvc->bind != bind)
+			continue;
+
+		if (!osmo_sockaddr_cmp(remote, gprs_ns2_ip_vc_remote(nsvc)))
+			return nsvc;
+	}
+	return NULL;
+}
 
 static int create_missing_nsvcs(struct osmo_fsm_inst *fi)
 {
@@ -377,6 +392,7 @@
 	struct osmo_sockaddr remote = { };
 	unsigned int i;
 
+	/* iterate over all remote IPv4 endpoints */
 	for (i = 0; i < gss->num_ip4_remote; i++) {
 		const struct gprs_ns_ie_ip4_elem *ip4 = &gss->ip4_remote[i];
 
@@ -384,22 +400,14 @@
 		remote.u.sin.sin_addr.s_addr = ip4->ip_addr;
 		remote.u.sin.sin_port = ip4->udp_port;
 
+		/* iterate over all local binds */
 		llist_for_each_entry(bind, &nse->nsi->binding, list) {
-			bool found = false;
+			/* we only care about UDP binds */
 			if (bind->ll != GPRS_NS2_LL_UDP)
 				continue;
 
-			llist_for_each_entry(nsvc, &nse->nsvc, list) {
-				if (nsvc->bind != bind)
-					continue;
-
-				if (!osmo_sockaddr_cmp(&remote, gprs_ns2_ip_vc_remote(nsvc))) {
-					found = true;
-					break;
-				}
-			}
-
-			if (!found) {
+			nsvc = nsvc_for_bind_and_remote(nse, bind, &remote);
+			if (!nsvc) {
 				nsvc = gprs_ns2_ip_connect_inactive(bind, &remote, nse, 0);
 				if (!nsvc) {
 					/* TODO: add to a list to send back a NS-STATUS */
@@ -414,6 +422,7 @@
 		}
 	}
 
+	/* iterate over all remote IPv4 endpoints */
 	for (i = 0; i < gss->num_ip6_remote; i++) {
 		const struct gprs_ns_ie_ip6_elem *ip6 = &gss->ip6_remote[i];
 
@@ -421,22 +430,14 @@
 		remote.u.sin6.sin6_addr = ip6->ip_addr;
 		remote.u.sin6.sin6_port = ip6->udp_port;
 
+		/* iterate over all local binds */
 		llist_for_each_entry(bind, &nse->nsi->binding, list) {
-			bool found = false;
 			if (bind->ll != GPRS_NS2_LL_UDP)
 				continue;
 
-			llist_for_each_entry(nsvc, &nse->nsvc, list) {
-				if (nsvc->bind != bind)
-					continue;
-
-				if (!osmo_sockaddr_cmp(&remote, gprs_ns2_ip_vc_remote(nsvc))) {
-					found = true;
-					break;
-				}
-			}
-
-			if (!found) {
+			/* we only care about UDP binds */
+			nsvc = nsvc_for_bind_and_remote(nse, bind, &remote);
+			if (!nsvc) {
 				nsvc = gprs_ns2_ip_connect_inactive(bind, &remote, nse, 0);
 				if (!nsvc) {
 					/* TODO: add to a list to send back a NS-STATUS */

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/23480
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I78d79c3bc92f0c0bebbbbe639b8406c4b188582f
Gerrit-Change-Number: 23480
Gerrit-PatchSet: 3
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann at sysmocom.de>
Gerrit-Reviewer: lynxis lazus <lynxis at fe80.eu>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210324/21b38e2b/attachment.htm>


More information about the gerrit-log mailing list