aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2020-12-06 01:23:51 +0100
committerHarald Welte <laforge@osmocom.org>2020-12-16 12:50:50 +0100
commit5012e076855936ac7d248a829cd60740cea8c9e4 (patch)
tree5cc265cdd3759d7c6922ea04c0c25566932b0aa8 /src
parent398f60e11cce6c71d7f6dc9269943ba93bec1861 (diff)
ns2: follow ns2 dialect changes
NS2 introduce a ns dialect to differentiate between the 4 possible dialects. Related: OS#4472, OS#4890 Depends: libosmocore.git Ia118bb6f994845d84db09de7a94856f5ca573404 Change-Id: I16dc82c38eb75c2b9d1197640a955fec7df84efc
Diffstat (limited to 'src')
-rw-r--r--src/bts.h8
-rw-r--r--src/gprs_bssgp_pcu.cpp6
-rw-r--r--src/pcu_vty.c8
3 files changed, 13 insertions, 9 deletions
diff --git a/src/bts.h b/src/bts.h
index fd520671..055b131d 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -23,17 +23,23 @@
#ifdef __cplusplus
extern "C" {
+#endif
+
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/rate_ctr.h>
#include <osmocom/core/stat_item.h>
#include <osmocom/core/tdef.h>
+#include <osmocom/gprs/gprs_ns2.h>
#include <osmocom/gsm/l1sap.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
#include <osmocom/gsm/gsm48.h>
#include "mslot_class.h"
#include "gsm_rlcmac.h"
+#ifdef __cplusplus
}
+#endif
+#ifdef __cplusplus
#include "poll_controller.h"
#include "sba.h"
#include "tbf.h"
@@ -170,7 +176,7 @@ struct gprs_rlcmac_bts {
char *pcu_sock_path;
/* Are we talking Gb with IP-SNS (true) or classic Gb? */
- bool gb_dialect_sns;
+ enum gprs_ns2_dialect ns_dialect;
/* Packet Application Information (3GPP TS 44.060 11.2.47, usually ETWS primary message). We don't need to store
* more than one message, because they get sent so rarely. */
diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp
index 934d8fc5..4d24d2e0 100644
--- a/src/gprs_bssgp_pcu.cpp
+++ b/src/gprs_bssgp_pcu.cpp
@@ -984,7 +984,7 @@ static int ns_create_nsvc(struct gprs_rlcmac_bts *bts,
bts->nse = gprs_ns2_nse_by_nsei(bts->nsi, nsei);
if (!bts->nse)
bts->nse = gprs_ns2_create_nse(bts->nsi, nsei,
- GPRS_NS2_LL_UDP);
+ GPRS_NS2_LL_UDP, bts->ns_dialect);
if (!bts->nse) {
LOGP(DBSSGP, LOGL_ERROR, "Failed to create NSE\n");
@@ -997,7 +997,7 @@ static int ns_create_nsvc(struct gprs_rlcmac_bts *bts,
continue;
/* FIXME: for SNS we just use the first successful NS-VC instead of all for the initial connect */
- if (bts->gb_dialect_sns) {
+ if (bts->ns_dialect == NS2_DIALECT_SNS) {
rc = gprs_ns2_ip_connect_sns(bind[i], &remote[i], nsei);
if (!rc)
return rc;
@@ -1066,7 +1066,7 @@ int gprs_ns_config(struct gprs_rlcmac_bts *bts, uint16_t nsei,
gprs_ns2_free_nses(bts->nsi);
gprs_ns2_free_binds(bts->nsi);
rc = ns_create_nsvc(bts, nsei, local, remote, nsvci, valid);
- } else if (bts->gb_dialect_sns) {
+ } else if (bts->ns_dialect == NS2_DIALECT_SNS) {
/* SNS: check if the initial nsvc is the same, if not recreate it */
const struct osmo_sockaddr *initial = gprs_ns2_nse_sns_remote(bts->nse);
for (unsigned int i = 0; i < PCU_IF_NUM_NSVC; i++) {
diff --git a/src/pcu_vty.c b/src/pcu_vty.c
index bf456863..800079ca 100644
--- a/src/pcu_vty.c
+++ b/src/pcu_vty.c
@@ -246,7 +246,7 @@ static int config_write_pcu(struct vty *vty)
}
}
- if (bts->gb_dialect_sns)
+ if (bts->ns_dialect == NS2_DIALECT_SNS)
vty_out(vty, " gb-dialect ip-sns%s", VTY_NEWLINE);
else
vty_out(vty, " gb-dialect classic%s", VTY_NEWLINE);
@@ -1131,11 +1131,9 @@ DEFUN_USRATTR(cfg_pcu_gb_dialect,
struct gprs_rlcmac_bts *bts = bts_main_data();
if (!strcmp(argv[0], "ip-sns")) {
- bts->gb_dialect_sns = true;
- gprs_ns2_vty_force_vc_mode(true, NS2_VC_MODE_ALIVE, "gb-dialect is ip-sns");
+ bts->ns_dialect = NS2_DIALECT_SNS;
} else {
- bts->gb_dialect_sns = false;
- gprs_ns2_vty_force_vc_mode(false, 0, NULL);
+ bts->ns_dialect = NS2_DIALECT_IPACCESS;
}
return CMD_SUCCESS;