Files
openairinterface5g/openair3/MME_APP/mme_config.c
T
Javier Morgade 365527d401 M3AP 3GPP TS 36.444 interface implemented:
1.MME entity developed to handle M3 side (new dedicated task developed: TASK_MME_APP) (these procedures should be moved to OPENAIR-CN ... just implemented to easy the E-UTRAN MBMS stuff development)
        2.MCE side M3 interface procedures (new dedicated task developed: TASK_M3AP_MCE)
        3.MME side M3 interface procedures (new dedicated task developed: TASK_M2AP_MME) (these procedures should be moved to OPENAIR-CN ... just implemented to easy the E-UTRAN MBMS stuff development)
        4.ASN1 bindings for m3ap-14.0.0.asn1 implemented and tested
        5.MME config parameters

	ACKNOWLEDGEMENT:
 	1. This commit was developed at Vicomtech (https://www.vicomtech.org) under UE project CDN-X-ALL: "CDN edge-cloud computing for efficient cache and reliable streaming aCROSS Aggregated unicast-multicast LinkS"
 	2. Project funded by Fed4FIRE+ OC5 (https://www.fed4fire.eu)

	Signed-off-by: Javier Morgade <javier.morgade@ieee.org>
2019-09-14 13:53:39 +02:00

112 lines
4.4 KiB
C

/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*
mme_config.c
-------------------
AUTHOR : Javier Morgade
COMPANY : VICOMTECH, Spain
EMAIL : javier.morgade@ieee.org
*/
#include <string.h>
#include <inttypes.h>
#include "common/utils/LOG/log.h"
#include "assertions.h"
#include "mme_config.h"
#include "UTIL/OTG/otg.h"
#include "UTIL/OTG/otg_externs.h"
#include "intertask_interface.h"
#include "s1ap_eNB.h"
#include "sctp_eNB_task.h"
#include "common/ran_context.h"
#include "sctp_default_values.h"
#include "LTE_SystemInformationBlockType2.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/MAC/mac_proto.h"
#include "PHY/phy_extern.h"
#include "PHY/INIT/phy_init.h"
#include "targets/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "nfapi_vnf.h"
#include "nfapi_pnf.h"
#include "L1_paramdef.h"
#include "MACRLC_paramdef.h"
#include "common/config/config_userapi.h"
#include "RRC_config_tools.h"
#include "enb_paramdef.h"
#include "proto_agent.h"
int RCconfig_MME(void ) {
//int num_enbs = 0;
//char *enb_interface_name_for_S1U = NULL;
char *mme_interface_name_for_m3_mce = NULL;
//char *enb_ipv4_address_for_S1U = NULL;
char *mme_ipv4_address_for_m3c = NULL;
//uint32_t enb_port_for_S1U = 0;
uint32_t mme_port_for_m3c = 0;
char *address = NULL;
char *cidr = NULL;
//char gtpupath[MAX_OPTNAME_SIZE*2 + 8];
char mmepath[MAX_OPTNAME_SIZE*2 + 8];
//paramdef_t ENBSParams[] = ENBSPARAMS_DESC;
//paramdef_t GTPUParams[] = GTPUPARAMS_DESC;
paramdef_t MMEParams[] = MME_NETPARAMS_DESC;
///* get number of active eNodeBs */
//config_get( ENBSParams,sizeof(ENBSParams)/sizeof(paramdef_t),NULL);
//num_enbs = ENBSParams[ENB_ACTIVE_ENBS_IDX].numelt;
//AssertFatal (num_enbs >0,
// "Failed to parse config file no active eNodeBs in %s \n", ENB_CONFIG_STRING_ACTIVE_ENBS);
//sprintf(gtpupath,"%s.[%i].%s",ENB_CONFIG_STRING_ENB_LIST,0,ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
sprintf(mmepath,"%s.[%i].%s","MMEs",0,MME_CONFIG_STRING_NETWORK_INTERFACES_CONFIG);
//config_get( GTPUParams,sizeof(GTPUParams)/sizeof(paramdef_t),gtpupath);
config_get(MMEParams,sizeof(MMEParams)/sizeof(paramdef_t),mmepath);
//cidr = enb_ipv4_address_for_S1U;
cidr = mme_ipv4_address_for_m3c;
address = strtok(cidr, "/");
//LOG_W(MME_APP,"cidr %s\n",cidr);
//LOG_W(MME_APP,"address %s\n",address);
//LOG_W(MME_APP,"mme_interface_name_for_m3_mce %s\n",mme_interface_name_for_m3_mce);
//LOG_W(MME_APP,"mme_ipv4_address_for_m3c %s\n",mme_ipv4_address_for_m3c);
//LOG_W(MME_APP,"mme_port_for_m3c %d\n",mme_port_for_m3c);
if (address) {
MessageDef *message;
AssertFatal((message = itti_alloc_new_message(TASK_MME_APP, M3AP_MME_SCTP_REQ))!=NULL,"");
M3AP_MME_SCTP_REQ (message).mme_m3_ip_address.ipv6 = 0;
M3AP_MME_SCTP_REQ (message).mme_m3_ip_address.ipv4 = 1;
strcpy( M3AP_MME_SCTP_REQ (message).mme_m3_ip_address.ipv4_address, address);
LOG_I(MME_APP,"Configuring M3_C address : %s\n",address/*,M3AP_MME_SCTP_REQ(message).mme_m3_ip_address*/);
M3AP_MME_SCTP_REQ(message).mme_port_for_M3C = mme_port_for_m3c;
itti_send_msg_to_task (TASK_M3AP_MME, 0, message); // data model is wrong: gtpu doesn't have enb_id (or module_id)
} else
LOG_E(MCE_APP,"invalid address for M2AP\n");
return 0;
}