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/.
lynxis lazus gerrit-no-reply at lists.osmocom.orglynxis lazus has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/21574 )
Change subject: gprs_ns2_sns: use different binds for the initial connection
......................................................................
gprs_ns2_sns: use different binds for the initial connection
In case the first bind is not working the SNS would never build a
succesful connection to the SGSN. Iterate over all binds by
using an offset.
Instead of tracking the binds use an offset instead of a direct pointer.
This might result in skipping the order of the next bind.
Change-Id: I4a0a0608dac6ad8b5769ada2a14ca23f61eb0bcb
---
M src/gb/gprs_ns2_sns.c
1 file changed, 13 insertions(+), 2 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_sns.c b/src/gb/gprs_ns2_sns.c
index b7fbbf8..0676b61 100644
--- a/src/gb/gprs_ns2_sns.c
+++ b/src/gb/gprs_ns2_sns.c
@@ -117,6 +117,8 @@
struct sns_endpoint *initial;
/* all SNS PDU will be sent over this nsvc */
struct gprs_ns2_vc *sns_nsvc;
+ /* iterate over the binds after all remote has been tested */
+ int bind_offset;
/* local configuration to send to the remote end */
struct gprs_ns_ie_ip4_elem *ip4_local;
@@ -714,9 +716,15 @@
return;
}
- bind = ns2_ip_get_bind_by_index(nsi, remote, 0);
+ bind = ns2_ip_get_bind_by_index(nsi, remote, gss->bind_offset);
if (!bind) {
- return;
+ if (gss->bind_offset) {
+ gss->bind_offset = 0;
+ bind = ns2_ip_get_bind_by_index(nsi, remote, gss->bind_offset);
+ }
+
+ if (!bind)
+ return;
}
/* setup the NSVC */
@@ -1335,9 +1343,12 @@
return;
} else if (!gss->initial) {
gss->initial = llist_first_entry(&gss->sns_endpoints, struct sns_endpoint, list);
+ gss->bind_offset = 0;
} else if (gss->initial->list.next == &gss->sns_endpoints) {
/* last entry, continue with first */
gss->initial = llist_first_entry(&gss->sns_endpoints, struct sns_endpoint, list);
+ gss->bind_offset++;
+ gss->bind_offset %= ns2_ip_count_bind(nse->nsi, &gss->initial->saddr);
} else {
/* next element is an entry */
gss->initial = llist_entry(gss->initial->list.next, struct sns_endpoint, list);
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/21574
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I4a0a0608dac6ad8b5769ada2a14ca23f61eb0bcb
Gerrit-Change-Number: 21574
Gerrit-PatchSet: 12
Gerrit-Owner: lynxis lazus <lynxis at fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
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/20201215/eccc1a6a/attachment.htm>