aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2021-01-14 16:58:17 +0100
committerlaforge <laforge@osmocom.org>2021-01-14 18:09:44 +0000
commit967e2c186820ea9f250f3b1cd2af4a3974c4fe7e (patch)
tree8f4870e4b64a1de224aa0f27325147165484efe6
parent2ecb71bcd4e01253e09fc330597a90a109ef2e0a (diff)
NS2: Fix bind selection of SNS NSVCs
The SNS code ignored the link type of the bind and just bound to every bind it could find. This resulted in a segfault when an SNS NSVC tries to send its UDP messages though frame relay. Fixes: OS#4948 Change-Id: Ibb832a39876362d094cce635192f7b4f84dc2b10
-rw-r--r--src/gb/gprs_ns2_sns.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gb/gprs_ns2_sns.c b/src/gb/gprs_ns2_sns.c
index 2cb42934..19584775 100644
--- a/src/gb/gprs_ns2_sns.c
+++ b/src/gb/gprs_ns2_sns.c
@@ -270,6 +270,8 @@ static void ns2_nsvc_create_ip4(struct osmo_fsm_inst *fi,
/* for every bind, create a connection if bind type == IP */
llist_for_each_entry(bind, &nsi->binding, list) {
+ if (bind->ll != GPRS_NS2_LL_UDP)
+ continue;
/* ignore failed connection */
nsvc = gprs_ns2_ip_connect_inactive(bind,
&remote,
@@ -299,6 +301,8 @@ static void ns2_nsvc_create_ip6(struct osmo_fsm_inst *fi,
/* for every bind, create a connection if bind type == IP */
llist_for_each_entry(bind, &nsi->binding, list) {
+ if (bind->ll != GPRS_NS2_LL_UDP)
+ continue;
/* ignore failed connection */
nsvc = gprs_ns2_ip_connect_inactive(bind,
&remote,
@@ -332,6 +336,8 @@ static int create_missing_nsvcs(struct osmo_fsm_inst *fi)
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)
@@ -367,6 +373,8 @@ static int create_missing_nsvcs(struct osmo_fsm_inst *fi)
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)