Change in libosmocore[master]: gprs_ns2: rework id strings of nsvcs

laforge gerrit-no-reply at lists.osmocom.org
Sat Jun 5 15:46:14 UTC 2021


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

Change subject: gprs_ns2: rework id strings of nsvcs
......................................................................

gprs_ns2: rework id strings of nsvcs

Ensure all nsvcs ids are unique as UDP ids might not be unique when
multiple NSVCs connect to the same remote endpoint (multiple binds).
Change the format of all ids to look similiar.
FR: NSE11-NSVC23-FR-fr0-DLCI13.
UDP: NSE11-NSVC-UDP-10.0.0.1:23000-192.168.1.1:24000
UDP: NSE11-NSVC23-UDP-10.0.0.1:23000-192.168.1.1:24000
UDP: NSE11-NSVC66-UDP-[fd01::1]:23000-[fd03::2]:24000

Change-Id: I618e263e73fcc64d4e46b57aa3a2cb2783837907
---
M src/gb/gprs_ns2.c
M src/gb/gprs_ns2_fr.c
M src/gb/gprs_ns2_udp.c
3 files changed, 19 insertions(+), 11 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c
index d72f34e..975909b 100644
--- a/src/gb/gprs_ns2.c
+++ b/src/gb/gprs_ns2.c
@@ -980,7 +980,8 @@
 	enum gprs_ns2_vc_mode vc_mode;
 	uint16_t nsvci;
 	uint16_t nsei;
-	char idbuf[32];
+	const struct osmo_sockaddr *local;
+	char idbuf[256], tmp[INET6_ADDRSTRLEN + 8];
 
 	int rc, tlv;
 
@@ -1113,8 +1114,12 @@
 
 	nsvci = tlvp_val16be(&tp, NS_IE_VCI);
 	vc_mode = ns2_dialect_to_vc_mode(dialect);
-	snprintf(idbuf, sizeof(idbuf), "%s-NSE%05u-NSVC%05u", gprs_ns2_lltype_str(nse->ll),
-		 nse->nsei, nsvci);
+
+	local = gprs_ns2_ip_bind_sockaddr(bind);
+	osmo_sockaddr_to_str_buf(tmp, sizeof(tmp), local);
+	snprintf(idbuf, sizeof(idbuf), "%s-NSE%05u-NSVC%05u-%s-%s", gprs_ns2_lltype_str(nse->ll),
+		 nse->nsei, nsvci, tmp, osmo_sockaddr_to_str(remote));
+	osmo_identifier_sanitize_buf(idbuf, NULL, '_');
 	nsvc = ns2_vc_alloc(bind, nse, false, vc_mode, idbuf);
 	if (!nsvc)
 		return NS2_CS_SKIPPED;
diff --git a/src/gb/gprs_ns2_fr.c b/src/gb/gprs_ns2_fr.c
index 7791094..3113b00 100644
--- a/src/gb/gprs_ns2_fr.c
+++ b/src/gb/gprs_ns2_fr.c
@@ -976,8 +976,9 @@
 		goto err;
 	}
 
-	snprintf(idbuf, sizeof(idbuf), "%s-%s-DLCI%u-NSE%05u-NSVC%05u", gprs_ns2_lltype_str(nse->ll),
-		 bpriv->netif, dlci, nse->nsei, nsvci);
+	snprintf(idbuf, sizeof(idbuf), "NSE%05u-NSVC%05u-%s-%s-DLCI%u", nse->nsei, nsvci,
+		 gprs_ns2_lltype_str(nse->ll), bpriv->netif, dlci);
+	osmo_identifier_sanitize_buf(idbuf, NULL, '_');
 	nsvc = ns2_vc_alloc(bind, nse, true, GPRS_NS2_VC_MODE_BLOCKRESET, idbuf);
 	if (!nsvc)
 		goto err;
diff --git a/src/gb/gprs_ns2_udp.c b/src/gb/gprs_ns2_udp.c
index 7980df5..428fd4a 100644
--- a/src/gb/gprs_ns2_udp.c
+++ b/src/gb/gprs_ns2_udp.c
@@ -384,10 +384,10 @@
 					const struct osmo_sockaddr *remote)
 {
 	struct gprs_ns2_vc *nsvc;
+	const struct osmo_sockaddr *local;
 	struct priv_vc *priv;
 	enum gprs_ns2_vc_mode vc_mode;
-	char *sockaddr_str;
-	char idbuf[64];
+	char idbuf[256], tmp[INET6_ADDRSTRLEN + 8];
 
 	OSMO_ASSERT(gprs_ns2_is_ip_bind(bind));
 
@@ -402,10 +402,12 @@
 	if (gprs_ns2_nsvc_by_sockaddr_bind(bind, remote))
 		return NULL;
 
-	sockaddr_str = (char *)osmo_sockaddr_to_str(remote);
-	osmo_identifier_sanitize_buf(sockaddr_str, NULL, '_');
-	snprintf(idbuf, sizeof(idbuf), "%s-NSE%05u-remote-%s", gprs_ns2_lltype_str(nse->ll),
-		 nse->nsei, sockaddr_str);
+	local = gprs_ns2_ip_bind_sockaddr(bind);
+	osmo_sockaddr_to_str_buf(tmp, sizeof(tmp), local);
+	snprintf(idbuf, sizeof(idbuf), "NSE%05u-NSVC-%s-%s-%s", nse->nsei, gprs_ns2_lltype_str(nse->ll),
+		 tmp, osmo_sockaddr_to_str(remote));
+	osmo_identifier_sanitize_buf(idbuf, NULL, '_');
+
 	nsvc = ns2_vc_alloc(bind, nse, true, vc_mode, idbuf);
 	if (!nsvc)
 		return NULL;

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

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I618e263e73fcc64d4e46b57aa3a2cb2783837907
Gerrit-Change-Number: 24539
Gerrit-PatchSet: 2
Gerrit-Owner: lynxis lazus <lynxis at fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
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/20210605/db72ea50/attachment.htm>


More information about the gerrit-log mailing list