diff options
author | Alexander Couzens <lynxis@fe80.eu> | 2020-12-06 03:03:03 +0100 |
---|---|---|
committer | lynxis lazus <lynxis@fe80.eu> | 2020-12-15 11:46:45 +0000 |
commit | 93ad4998322dce1b67391c4bad135308d81cae36 (patch) | |
tree | 1ec89cbd1a1aab8aa22c4cb620c6da6ef722c404 | |
parent | d923cff170904e4d22ef00dd410b0d6256f95068 (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.c | 19 |
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); |