aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2020-12-06 03:03:03 +0100
committerlynxis lazus <lynxis@fe80.eu>2020-12-15 11:46:45 +0000
commit93ad4998322dce1b67391c4bad135308d81cae36 (patch)
tree1ec89cbd1a1aab8aa22c4cb620c6da6ef722c404
parentd923cff170904e4d22ef00dd410b0d6256f95068 (diff)
gprs_ns2: move allocation of the SNS fsm into create_nse
The allocation of the SNS fsm can be done in create_nse because the dialect is now known at that time. Change-Id: I64e1f3dcc63d38e65bb486c9ac08d4032b7ad222
-rw-r--r--src/gb/gprs_ns2.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c
index 920fa684..890b6566 100644
--- a/src/gb/gprs_ns2.c
+++ b/src/gb/gprs_ns2.c
@@ -677,6 +677,7 @@ struct gprs_ns2_nse *gprs_ns2_create_nse(struct gprs_ns2_inst *nsi, uint16_t nse
enum gprs_ns2_ll linklayer, enum gprs_ns2_dialect dialect)
{
struct gprs_ns2_nse *nse;
+ char sns[16];
nse = gprs_ns2_nse_by_nsei(nsi, nsei);
if (nse) {
@@ -688,6 +689,15 @@ struct gprs_ns2_nse *gprs_ns2_create_nse(struct gprs_ns2_inst *nsi, uint16_t nse
if (!nse)
return NULL;
+ if (dialect == NS2_DIALECT_SNS) {
+ snprintf(sns, sizeof(sns), "NSE%05u-SNS", nsei);
+ nse->bss_sns_fi = ns2_sns_bss_fsm_alloc(nse, sns);
+ if (!nse->bss_sns_fi) {
+ talloc_free(nse);
+ return NULL;
+ }
+ }
+
nse->dialect = dialect;
nse->ll = linklayer;
nse->nsei = nsei;
@@ -959,14 +969,11 @@ int gprs_ns2_ip_connect_sns(struct gprs_ns2_vc_bind *bind,
return -2;
}
- nsvc = gprs_ns2_ip_bind_connect(bind, nse, remote);
- if (!nsvc)
- return -1;
-
if (!nse->bss_sns_fi)
- nse->bss_sns_fi = ns2_sns_bss_fsm_alloc(nse, NULL);
+ return -1;
- if (!nse->bss_sns_fi)
+ nsvc = gprs_ns2_ip_bind_connect(bind, nse, remote);
+ if (!nsvc)
return -1;
return ns2_sns_bss_fsm_start(nse, nsvc, remote);