From 5012e076855936ac7d248a829cd60740cea8c9e4 Mon Sep 17 00:00:00 2001 From: Alexander Couzens Date: Sun, 6 Dec 2020 01:23:51 +0100 Subject: [PATCH] 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 --- src/bts.h | 8 +++++++- src/gprs_bssgp_pcu.cpp | 6 +++--- src/pcu_vty.c | 8 +++----- 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 #include #include #include +#include #include #include #include #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;