From 483f4b2d1b35e535fee9e8b83c92e88ba68334a4 Mon Sep 17 00:00:00 2001
From: "masayuki.harada" <masayuki.harada@jp.fujitsu.com>
Date: Wed, 28 Oct 2020 04:21:41 +0900
Subject: [PATCH] Fix merge miss.

---
 openair2/GNB_APP/gnb_config.c | 21 +++++++++++++++++++++
 openair2/RRC/NR/rrc_gNB.c     |  8 --------
 openair3/NGAP/ngap_gNB.c      | 10 ----------
 3 files changed, 21 insertions(+), 18 deletions(-)

diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c
index 207a89a360..ce3a980e91 100644
--- a/openair2/GNB_APP/gnb_config.c
+++ b/openair2/GNB_APP/gnb_config.c
@@ -789,11 +789,16 @@ int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) {
           if (strcmp(GNBSParams[GNB_ACTIVE_GNBS_IDX].strlistptr[j], *(GNBParamList.paramarray[k][GNB_GNB_NAME_IDX].strptr)) == 0) {
             paramdef_t PLMNParams[] = GNBPLMNPARAMS_DESC;
             paramlist_def_t PLMNParamList = {GNB_CONFIG_STRING_PLMN_LIST, NULL, 0};
+            paramdef_t SNSSAIParams[] = GNBSNSSAIPARAMS_DESC;
+            paramlist_def_t SNSSAIParamList = {GNB_CONFIG_STRING_SNSSAI_LIST, NULL, 0};
             /* map parameter checking array instances to parameter definition array instances */
             checkedparam_t config_check_PLMNParams [] = PLMNPARAMS_CHECK;
+            checkedparam_t config_check_SNSSAIParams [] = SNSSAIPARAMS_CHECK;
 
             for (int I = 0; I < sizeof(PLMNParams) / sizeof(paramdef_t); ++I)
               PLMNParams[I].chkPptr = &(config_check_PLMNParams[I]);
+            for (int J = 0; J < sizeof(SNSSAIParams) / sizeof(paramdef_t); ++J)
+              SNSSAIParams[J].chkPptr = &(config_check_SNSSAIParams[J]);
 
             paramdef_t NGParams[]  = GNBNGPARAMS_DESC;
             paramlist_def_t NGParamList = {GNB_CONFIG_STRING_AMF_IP_ADDRESS,NULL,0};
@@ -835,6 +840,9 @@ int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) {
             NGAP_REGISTER_GNB_REQ(msg_p).num_plmn = PLMNParamList.numelt;
 
             for (int l = 0; l < PLMNParamList.numelt; ++l) {
+              char snssaistr[MAX_OPTNAME_SIZE*2 + 8];
+              sprintf(snssaistr, "%s.[%i].%s.[%i]", GNB_CONFIG_STRING_GNB_LIST, k, GNB_CONFIG_STRING_PLMN_LIST, l);
+              config_getlist(&SNSSAIParamList, SNSSAIParams, sizeof(SNSSAIParams)/sizeof(paramdef_t), snssaistr);
 
               NGAP_REGISTER_GNB_REQ (msg_p).mcc[l]              = *PLMNParamList.paramarray[l][GNB_MOBILE_COUNTRY_CODE_IDX].uptr;
               NGAP_REGISTER_GNB_REQ (msg_p).mnc[l]              = *PLMNParamList.paramarray[l][GNB_MOBILE_NETWORK_CODE_IDX].uptr;
@@ -844,6 +852,19 @@ int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) {
                           (NGAP_REGISTER_GNB_REQ (msg_p).mnc_digit_length[l] == 3),
                           "BAD MNC DIGIT LENGTH %d",
                           NGAP_REGISTER_GNB_REQ (msg_p).mnc_digit_length[l]);
+              
+              NGAP_REGISTER_GNB_REQ (msg_p).num_nssai[l] = SNSSAIParamList.numelt;
+              for (int s = 0; s < SNSSAIParamList.numelt; ++s) {
+              
+                NGAP_REGISTER_GNB_REQ (msg_p).s_nssai[l][s].sST = *SNSSAIParamList.paramarray[s][GNB_SLICE_SERIVE_TYPE_IDX].uptr;
+                NGAP_REGISTER_GNB_REQ (msg_p).s_nssai[l][s].sD_flag = 0;
+                if(*SNSSAIParamList.paramarray[s][GNB_SLICE_DIFFERENTIATOR_IDX].uptr != 0) {
+                  NGAP_REGISTER_GNB_REQ (msg_p).s_nssai[l][s].sD_flag = 1;
+                  NGAP_REGISTER_GNB_REQ (msg_p).s_nssai[l][s].sD[0] = (*SNSSAIParamList.paramarray[s][GNB_SLICE_DIFFERENTIATOR_IDX].uptr & 0xFF0000) >> 16;
+                  NGAP_REGISTER_GNB_REQ (msg_p).s_nssai[l][s].sD[1] = (*SNSSAIParamList.paramarray[s][GNB_SLICE_DIFFERENTIATOR_IDX].uptr & 0x00FF00) >> 8;
+                  NGAP_REGISTER_GNB_REQ (msg_p).s_nssai[l][s].sD[2] = (*SNSSAIParamList.paramarray[s][GNB_SLICE_DIFFERENTIATOR_IDX].uptr & 0x0000FF);
+                }
+              }
             }
             sprintf(aprefix,"%s.[%i]",GNB_CONFIG_STRING_GNB_LIST,k);
             config_getlist( &NGParamList,NGParams,sizeof(NGParams)/sizeof(paramdef_t),aprefix); 
diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c
index f9a41ec92b..9aa884cf4f 100644
--- a/openair2/RRC/NR/rrc_gNB.c
+++ b/openair2/RRC/NR/rrc_gNB.c
@@ -1337,14 +1337,6 @@ void *rrc_gnb_task(void *args_p) {
                             NR_RRC_DCCH_DATA_IND(msg_p).dcch_index,
                             NR_RRC_DCCH_DATA_IND(msg_p).sdu_p,
                             NR_RRC_DCCH_DATA_IND(msg_p).sdu_size);
-        // Message buffer has been processed, free it now.
-        result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), NR_RRC_DCCH_DATA_IND(msg_p).sdu_p);
-
-        if (result != EXIT_SUCCESS) {
-            LOG_I(NR_RRC, "Failed to free memory (%d)!\n", result);
-            break;
-        }
-
         break;
 
       /*
diff --git a/openair3/NGAP/ngap_gNB.c b/openair3/NGAP/ngap_gNB.c
index d603229572..70446eea5f 100644
--- a/openair3/NGAP/ngap_gNB.c
+++ b/openair3/NGAP/ngap_gNB.c
@@ -213,16 +213,6 @@ void ngap_gNB_handle_register_gNB(instance_t instance, ngap_register_gnb_req_t *
 
     memcpy(new_instance->s_nssai, ngap_register_gNB->s_nssai, sizeof(ngap_register_gNB->s_nssai));
 
-    // config add? TBD
-    if(1) {
-      new_instance->num_nssai[0] = 1;
-      new_instance->s_nssai[0][0].sST = 1;
-      new_instance->s_nssai[0][0].sD_flag = 1;
-      new_instance->s_nssai[0][0].sD[0] = 1;
-      new_instance->s_nssai[0][0].sD[1] = 2;
-      new_instance->s_nssai[0][0].sD[2] = 3;
-    }
-    
     /* Add the new instance to the list of gNB (meaningfull in virtual mode) */
     ngap_gNB_insert_new_instance(new_instance);
     NGAP_INFO("Registered new gNB[%d] and %s gNB id %u\n",
-- 
2.26.2