[Epic-ID: ODUHIGH-405][Task-ID: ODUHIGH-420] Fixes in RIC stub
[o-du/l2.git] / src / ric_stub / ric_stub.c
1 /*******************************************************************************
2 ################################################################################
3 #   Copyright (c) [2017-2019] [Radisys]                                        #
4 #                                                                              #
5 #   Licensed under the Apache License, Version 2.0 (the "License");            #
6 #   you may not use this file except in compliance with the License.           #
7 #   You may obtain a copy of the License at                                    #
8 #                                                                              #
9 #       http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                              #
11 #   Unless required by applicable law or agreed to in writing, software        #
12 #   distributed under the License is distributed on an "AS IS" BASIS,          #
13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
14 #   See the License for the specific language governing permissions and        #
15 #   limitations under the License.                                             #
16 ################################################################################
17 *******************************************************************************/
18
19 /* This functions contains main() for ric_app */
20 #include "common_def.h"
21 #include "ric_stub_sctp.h"
22 #include "ric_stub.h"
23
24 #ifdef O1_ENABLE
25 #include "CmInterface.h"
26 #endif
27
28 #ifdef O1_ENABLE
29 extern StartupConfig g_cfg;
30 #endif
31
32 /*******************************************************************
33  *
34  * @brief Handles SCTP notification 
35  *
36  * @details
37  *
38  *    Function : sctpNtfyInd
39  *
40  *    Functionality:
41  *         Handles SCTP notification
42  *
43  * @params[in] sctp notification
44  * @return void
45  *
46  ******************************************************************/
47 void sctpNtfyInd(CmInetSctpNotification *ntfy)
48 {
49 //TODO
50 }
51
52 void init_log()
53 {
54         openlog("RIC_STUB",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
55 }
56 /*******************************************************************
57  *
58  * @brief Main function of E2 APP
59  *
60  * @details
61  *
62  *    Function : main
63  *
64  *    Functionality:
65  *         - Reads RIC related configurations
66  *         - Initialize SCTP Parameters
67  *         - Start SCTP receiver thread
68  *
69  * @params[in] 
70  * @return ROK     - success
71  *         RFAILED - failure
72  *
73  * ****************************************************************/
74
75 uint8_t tst()
76 {
77    init_log();   
78  
79    DU_LOG("\nINFO  --> RIC : Starting RIC_STUB");
80    /* Read RIC configurations */
81    readRicCfg();
82
83    /* Start RIC-SCTP to listen on incoming connection */
84    sctpCfgReq();
85    sctpStartReq();
86
87    return ROK;
88 }
89 /*******************************************************************
90  *
91  * @brief Read RIC related configuration
92  *
93  * @details
94  *
95  *    Function : readRicCfg
96  *
97  *    Functionality:
98  *            - Read RIC related configuration
99  *
100  * @params[in] 
101  * @return ROK     - success
102  *         RFAILED - failure
103  *
104  * ****************************************************************/
105
106 void readRicCfg()
107 {
108    uint8_t *numDu;
109    uint32_t ipv4_du, ipv4_ric;
110
111    DU_LOG("\nINFO  --> RIC : Reading RIC configurations");
112
113    ricCfgParams.ricId = RIC_ID;
114    strcpy(ricCfgParams.ricName, RIC_NAME);
115 #ifdef O1_ENABLE
116    if( getStartupConfigForStub(&g_cfg) != ROK )
117    {
118       DU_LOG("\nError  -->  RIC : Could not fetch startup "\
119              "configurations from Netconf interface\n");
120       exit(1);
121    }
122
123    cmInetAddr((S8*)g_cfg.DU_IPV4_Addr,  &ipv4_du);
124    cmInetAddr((S8*)g_cfg.RIC_IPV4_Addr, &ipv4_ric);
125    
126    ricCfgParams.sctpParams.sctpAssoc[0].duIpAddr.ipV4Addr = ipv4_du;
127    ricCfgParams.sctpParams.sctpAssoc[0].duIpAddr.ipV6Pres = false;
128    ricCfgParams.sctpParams.sctpAssoc[0].duPort = g_cfg.RIC_Port;
129
130    ricCfgParams.sctpParams.sctpAssoc[0].ricIpAddr.ipV4Addr = ipv4_ric;
131    ricCfgParams.sctpParams.sctpAssoc[0].ricIpAddr.ipV6Pres = false;
132    ricCfgParams.sctpParams.sctpAssoc[0].ricPort = g_cfg.RIC_Port;
133
134    ricCfgParams.sctpParams.numDu = 1;
135
136 #else
137    ricCfgParams.sctpParams.numDu = 0;
138    numDu = &ricCfgParams.sctpParams.numDu;
139    while(*numDu < MAX_DU_SUPPORTED)
140    {   
141       /* DU IP Address and Port*/
142       memset(&ipv4_du, 0, sizeof(uint32_t));
143       cmInetAddr((S8*)DU_IP_V4_ADDR[*numDu], &ipv4_du);
144       ricCfgParams.sctpParams.sctpAssoc[*numDu].duIpAddr.ipV4Addr = ipv4_du;
145       ricCfgParams.sctpParams.sctpAssoc[*numDu].duIpAddr.ipV6Pres = false;
146       ricCfgParams.sctpParams.sctpAssoc[*numDu].duPort = DU_SCTP_PORT[*numDu];
147
148       /* RIC IP Address and Port*/
149       memset(&ipv4_du, 0, sizeof(uint32_t));
150       cmInetAddr((S8*)RIC_IP_V4_ADDR, &ipv4_ric);
151       ricCfgParams.sctpParams.sctpAssoc[*numDu].ricIpAddr.ipV4Addr = ipv4_ric;
152       ricCfgParams.sctpParams.sctpAssoc[*numDu].ricIpAddr.ipV6Pres = false;
153       ricCfgParams.sctpParams.sctpAssoc[*numDu].ricPort = RIC_SCTP_PORT_TO_DU[*numDu];
154       (*numDu)++;
155    }   
156 #endif
157
158    /*PLMN*/
159    ricCfgParams.plmn.mcc[0] = PLMN_MCC0;
160    ricCfgParams.plmn.mcc[1] = PLMN_MCC1;
161    ricCfgParams.plmn.mcc[2] = PLMN_MCC2;
162    ricCfgParams.plmn.mnc[0] = PLMN_MNC0;
163    ricCfgParams.plmn.mnc[1] = PLMN_MNC1;
164    ricCfgParams.plmn.mnc[2] = PLMN_MNC2;
165   
166 } /* End of readCuCfg */
167 /**********************************************************************
168          End of file
169 **********************************************************************/