jolly has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-msc/+/33674 )


Change subject: ASCI: Add option to switch on or off ASCI support
......................................................................

ASCI: Add option to switch on or off ASCI support

Switching ASCI support is controled via VTY. This added in a later
patch. (Chg-Id: I5bd034a62fc8b483f550d29103c2f7587198f590)

Change-Id: Id68deb69f7395f0f8f50b3820e9d51052a34f753
Related: OS#4854
---
M include/osmocom/msc/gsm_data.h
M include/osmocom/msc/msc_a.h
M src/libmsc/gsm_04_08.c
M src/libmsc/msc_a.c
4 files changed, 29 insertions(+), 7 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/74/33674/1

diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index 6c0dac9..119f093 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -272,6 +272,7 @@

        /* ASCI feature support */
        struct {
+               bool enable;
                struct llist_head gcr_lists;
        } asci;
 };
diff --git a/include/osmocom/msc/msc_a.h b/include/osmocom/msc/msc_a.h
index bef7417..0276d62 100644
--- a/include/osmocom/msc/msc_a.h
+++ b/include/osmocom/msc/msc_a.h
@@ -217,7 +217,7 @@
 int msc_a_ensure_cn_local_rtp(struct msc_a *msc_a, struct gsm_trans *cc_trans);
 int msc_a_try_call_assignment(struct gsm_trans *cc_trans);

-const char *msc_a_cm_service_type_to_use(enum osmo_cm_service_type 
cm_service_type);
+const char *msc_a_cm_service_type_to_use(struct msc_a *msc_a, enum 
osmo_cm_service_type cm_service_type);

 void msc_a_release_cn(struct msc_a *msc_a);
 void msc_a_release_mo(struct msc_a *msc_a, enum gsm48_gsm_cause gsm_cause);
diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c
index bd7cfe0..10c4a57 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -798,13 +798,13 @@
                return msc_gsm48_tx_mm_serv_rej(msc_a, 
GSM48_REJECT_INCORRECT_MESSAGE);
        }

-       if (!msc_a_cm_service_type_to_use(req->cm_service_type))
+       if (!msc_a_cm_service_type_to_use(msc_a, req->cm_service_type))
                return msc_gsm48_tx_mm_serv_rej(msc_a, 
GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);

        /* At this point, the CM Service Request message is being accepted.
         * Increment the matching use token, and from here on use 
msc_vlr_tx_cm_serv_rej() to respond in case of
         * failure. */
-       msc_a_get(msc_a, msc_a_cm_service_type_to_use(req->cm_service_type));
+       msc_a_get(msc_a, msc_a_cm_service_type_to_use(msc_a, 
req->cm_service_type));

        if (msc_a_is_accepted(msc_a))
                return cm_serv_reuse_conn(msc_a, &mi, req->cm_service_type);
@@ -1531,7 +1531,7 @@
 {
        struct msc_a *msc_a = msc_conn_ref;
        msc_gsm48_tx_mm_serv_rej(msc_a, cause);
-       msc_a_put(msc_a, msc_a_cm_service_type_to_use(cm_service_type));
+       msc_a_put(msc_a, msc_a_cm_service_type_to_use(msc_a, cm_service_type));
        return 0;
 }

diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c
index 7013176..9f2420e 100644
--- a/src/libmsc/msc_a.c
+++ b/src/libmsc/msc_a.c
@@ -2085,8 +2085,10 @@
  * Given a CM Service type, return a matching token intended for 
osmo_use_count.
  * For unknown service type, return NULL.
  */
-const char *msc_a_cm_service_type_to_use(enum osmo_cm_service_type 
cm_service_type)
+const char *msc_a_cm_service_type_to_use(struct msc_a *msc_a, enum 
osmo_cm_service_type cm_service_type)
 {
+       struct gsm_network *net = msc_a_net(msc_a);
+
        switch (cm_service_type) {
        case GSM48_CMSERV_MO_CALL_PACKET:
        case GSM48_CMSERV_EMERGENCY:
@@ -2099,10 +2101,16 @@
                return MSC_A_USE_CM_SERVICE_SS;
 
        case GSM48_CMSERV_VGCS:
-               return MSC_A_USE_CM_SERVICE_GCC;
+               if (net->asci.enable)
+                       return MSC_A_USE_CM_SERVICE_GCC;
+               else
+                       return NULL;

        case GSM48_CMSERV_VBS:
-               return MSC_A_USE_CM_SERVICE_BCC;
+               if (net->asci.enable)
+                       return MSC_A_USE_CM_SERVICE_BCC;
+               else
+                       return NULL;

        default:
                return NULL;

--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/33674
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: Id68deb69f7395f0f8f50b3820e9d51052a34f753
Gerrit-Change-Number: 33674
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <[email protected]>
Gerrit-MessageType: newchange

Reply via email to