From 515b08bf9a69564dd73cdd8408ab2ce33be68cfe Mon Sep 17 00:00:00 2001 From: Lionel Gauthier <lionel.gauthier@eurecom.fr> Date: Wed, 5 Feb 2014 10:34:33 +0000 Subject: [PATCH] For network config git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5030 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair2/ENB_APP/enb_config.c | 85 +++++++++++++++++++++++++---------- 1 file changed, 62 insertions(+), 23 deletions(-) diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c index 9f8634ba2f..eaa277cf55 100755 --- a/openair2/ENB_APP/enb_config.c +++ b/openair2/ENB_APP/enb_config.c @@ -168,24 +168,25 @@ static int enb_check_band_frequencies(char* lib_config_file_name_pP, const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { config_t cfg; - config_setting_t *setting; - config_setting_t *setting_mme_addresses; - config_setting_t *setting_mme_address; - config_setting_t *setting_enb; - int num_enb_properties = 0; - int enb_properties_index = 0; + config_setting_t *setting = NULL; + config_setting_t *subsetting = NULL; + config_setting_t *setting_mme_addresses = NULL; + config_setting_t *setting_mme_address = NULL; + config_setting_t *setting_enb = NULL; + int num_enb_properties = 0; + int enb_properties_index = 0; int num_enbs; int num_mme_address; int i; int j; - int parse_errors = 0; - long int enb_id; - const char* cell_type; - long int tac; - const char* enb_name; - long int mcc; - long int mnc; - const char* default_drx; + int parse_errors = 0; + long int enb_id = 0; + const char* cell_type = NULL; + long int tac = 0; + const char* enb_name = NULL; + long int mcc = 0; + long int mnc = 0; + const char* default_drx = NULL; const char* frame_type; long int tdd_config; long int tdd_config_s; @@ -193,11 +194,18 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { long int eutra_band; double downlink_frequency; double uplink_frequency_offset; - char* ipv4; - char* ipv6; - char* active; - char* preference; + char* ipv4 = NULL; + char* ipv6 = NULL; + char* active = NULL; + char* preference = NULL; const char* active_enb[MAX_ENB]; + char* enb_interface_name_for_S1U = NULL; + char* enb_ipv4_address_for_S1U = NULL; + char* enb_interface_name_for_S1_MME = NULL; + char* enb_ipv4_address_for_S1_MME = NULL; + char *astring = NULL; + char *address = NULL; + char *cidr = NULL; memset((char*) (enb_properties.properties), 0 , MAX_ENB * sizeof(Enb_properties_t *)); memset((char*)active_enb, 0 , MAX_ENB * sizeof(char*)); @@ -374,11 +382,11 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { } parse_errors += enb_check_band_frequencies(lib_config_file_name_pP, - enb_properties_index, - enb_properties.properties[enb_properties_index]->eutra_band, - enb_properties.properties[enb_properties_index]->downlink_frequency, - enb_properties.properties[enb_properties_index]->uplink_frequency_offset, - enb_properties.properties[enb_properties_index]->frame_type); + enb_properties_index, + enb_properties.properties[enb_properties_index]->eutra_band, + enb_properties.properties[enb_properties_index]->downlink_frequency, + enb_properties.properties[enb_properties_index]->uplink_frequency_offset, + enb_properties.properties[enb_properties_index]->frame_type); setting_mme_addresses = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_MME_IP_ADDRESS); num_mme_address = config_setting_length(setting_mme_addresses); @@ -416,6 +424,36 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { enb_properties.properties[enb_properties_index]->mme_ip_address[j].ipv6 = 1; } } + subsetting = config_setting_get_member (setting_enb, ENB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG); + if(subsetting != NULL) { + if( ( + config_setting_lookup_string( setting, ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1_MME, + (const char **)&enb_interface_name_for_S1_MME) + && config_setting_lookup_string( setting, ENB_CONFIG_STRING_ENB_IPV4_ADDRESS_FOR_S1_MME, + (const char **)&enb_ipv4_address_for_S1_MME) + && config_setting_lookup_string( setting, ENB_CONFIG_STRING_ENB_INTERFACE_NAME_FOR_S1U, + (const char **)&enb_interface_name_for_S1U) + && config_setting_lookup_string( setting, ENB_CONFIG_STRING_ENB_IPV4_ADDR_FOR_S1U, + (const char **)&enb_ipv4_address_for_S1U) + ) + ){ + enb_properties.properties[enb_properties_index]->enb_interface_name_for_S1U = strdup(enb_interface_name_for_S1U); + cidr = enb_ipv4_address_for_S1U; + address = strtok(cidr, "/"); + if (address) { + address = strdup(address); + IPV4_STR_ADDR_TO_INT_NWBO ( address, enb_properties.properties[enb_properties_index]->enb_ipv4_address_for_S1U, "BAD IP ADDRESS FORMAT FOR eNB S1_U !\n" ); + } + + enb_properties.properties[enb_properties_index]->enb_interface_name_for_S1_MME = strdup(enb_interface_name_for_S1_MME); + cidr = enb_ipv4_address_for_S1_MME; + address = strtok(cidr, "/"); + if (address) { + address = strdup(address); + IPV4_STR_ADDR_TO_INT_NWBO ( address, enb_properties.properties[enb_properties_index]->enb_ipv4_address_for_S1_MME, "BAD IP ADDRESS FORMAT FOR eNB S1_MME !\n" ); + } + } + } enb_properties_index += 1; break; } @@ -433,6 +471,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { lib_config_file_name_pP, parse_errors, parse_errors > 1 ? "s" : ""); return &enb_properties; + } const Enb_properties_array_t *enb_config_get(void) { -- 2.26.2