diff --git a/cmake_targets/nas_sim_tools/CMakeLists.txt b/cmake_targets/nas_sim_tools/CMakeLists.txt index 966c928a2b531f0d46374bd2adc43c66e0584a71..025c35c441879624e97ca6daa8a7ade386a0b936 100644 --- a/cmake_targets/nas_sim_tools/CMakeLists.txt +++ b/cmake_targets/nas_sim_tools/CMakeLists.txt @@ -22,6 +22,7 @@ set(conf2uedata_SRC ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_usim.c ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_network.c ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_user_plmn.c + ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_parser.c ${OPENAIR_DIR}/openair3/NAS/TOOLS/fs.c ${OPENAIR_DIR}/openair3/NAS/TOOLS/display.c ${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.c diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index 338d1b11ef0a39effd47da01f21c893616093b13..b162979dc22f372b41353f18295f63a2549b920f 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -4,13 +4,8 @@ #include <getopt.h> #include "conf2uedata.h" -#include "memory.h" -#include "utils.h" #include "display.h" -#include "fs.h" -#include "conf_emm.h" -#include "conf_user_data.h" -#include "conf_usim.h" +#include "conf_parser.h" int main(int argc, char**argv) { int option; @@ -56,108 +51,6 @@ int main(int argc, char**argv) { exit(0); } -bool parse_config_file(const char *output_dir, const char *conf_filename) { - int rc = true; - int ret; - int ue_nb = 0; - config_setting_t *root_setting = NULL; - config_setting_t *ue_setting = NULL; - config_setting_t *all_plmn_setting = NULL; - char user[10]; - config_t cfg; - - networks_t networks;; - - ret = get_config_from_file(conf_filename, &cfg); - if (ret == false) { - exit(1); - } - - root_setting = config_root_setting(&cfg); - ue_nb = config_setting_length(root_setting) - 1; - - all_plmn_setting = config_setting_get_member(root_setting, PLMN); - if (all_plmn_setting == NULL) { - printf("NO PLMN SECTION...EXITING...\n"); - return (false); - } - - if ( parse_plmns(all_plmn_setting, &networks) == false ) { - return false; - } - - for (int i = 0; i < ue_nb; i++) { - emm_nvdata_t emm_data; - - user_nvdata_t user_data; - user_data_conf_t user_data_conf; - - usim_data_t usim_data; - usim_data_conf_t usim_data_conf; - - user_plmns_t user_plmns; - - sprintf(user, "%s%d", UE, i); - - ue_setting = config_setting_get_member(root_setting, user); - if (ue_setting == NULL) { - printf("Check UE%d settings\n", i); - return false; - } - - if ( parse_user_plmns_conf(ue_setting, i, &user_plmns, &usim_data_conf.hplmn, networks) == false ) { - return false; - } - - rc = parse_ue_user_data(ue_setting, i, &user_data_conf); - if (rc != true) { - printf("Problem in USER section for UE%d. EXITING...\n", i); - return false; - } - gen_user_data(&user_data_conf, &user_data); - write_user_data(output_dir, i, &user_data); - - rc = parse_ue_sim_param(ue_setting, i, &usim_data_conf); - if (rc != true) { - printf("Problem in SIM section for UE%d. EXITING...\n", i); - return false; - } - gen_usim_data(&usim_data_conf, &usim_data, &user_plmns, networks); - write_usim_data(output_dir, i, &usim_data); - - gen_emm_data(&emm_data, usim_data_conf.hplmn, usim_data_conf.msin, - user_plmns.equivalents_home.size, networks); - write_emm_data(output_dir, i, &emm_data); - - user_plmns_free(&user_plmns); - - } - free(networks.items); - networks.size=0; - config_destroy(&cfg); - return(true); -} - -bool get_config_from_file(const char *filename, config_t *config) { - config_init(config); - if (filename == NULL) { - // XXX write error message ? - return(false); - } - - /* Read the file. If there is an error, report it and exit. */ - if (!config_read_file(config, filename)) { - fprintf(stderr, "Cant read config file '%s': %s\n", filename, - config_error_text(config)); - if ( config_error_type(config) == CONFIG_ERR_PARSE ) { - fprintf(stderr, "This is line %d\n", config_error_line(config)); - } - config_destroy(config); - return (false); - } - return true; -} - /* * Displays command line usage */ diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h index b97116eaa9ee443a69f3704ca230b88a7e4ff265..ed56a22718fb96ba16c892d089d0ba1560a77a3b 100644 --- a/openair3/NAS/TOOLS/conf2uedata.h +++ b/openair3/NAS/TOOLS/conf2uedata.h @@ -1,16 +1,6 @@ #ifndef _CONF2UEDATA_H #define _CONF2UEDATA_H -#include <libconfig.h> - -#include "usim_api.h" -#include "conf_network.h" - -#define UE "UE" - -bool get_config_from_file(const char *filename, config_t *config); -bool parse_config_file(const char *output_dir, const char *filename); - void _display_usage(void); #endif // _CONF2UEDATA_H diff --git a/openair3/NAS/TOOLS/conf_emm.h b/openair3/NAS/TOOLS/conf_emm.h index 32506acdb5c9c7472023a2aa6f307b1c4b524c88..a7b97c5da27e34bd8a20861e272eb4f4c3b1e20b 100644 --- a/openair3/NAS/TOOLS/conf_emm.h +++ b/openair3/NAS/TOOLS/conf_emm.h @@ -1,8 +1,8 @@ #ifndef _CONF_EMM_H #define _CONF_EMM_H -#include "conf2uedata.h" #include "emmData.h" +#include "conf_network.h" void gen_emm_data(emm_nvdata_t *emm_data, const char *hplmn, const char *msin, int ehplmn_count, const networks_t networks); bool write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data); diff --git a/openair3/NAS/TOOLS/conf_parser.c b/openair3/NAS/TOOLS/conf_parser.c new file mode 100644 index 0000000000000000000000000000000000000000..816c5c6ec9e8838dab5468d12c216e757d27184b --- /dev/null +++ b/openair3/NAS/TOOLS/conf_parser.c @@ -0,0 +1,110 @@ +#include "conf_parser.h" + +#include "conf_network.h" +#include "conf_emm.h" +#include "conf_usim.h" +#include "conf_user_data.h" +#include "conf_user_plmn.h" + +bool parse_config_file(const char *output_dir, const char *conf_filename) { + int rc = true; + int ret; + int ue_nb = 0; + config_setting_t *root_setting = NULL; + config_setting_t *ue_setting = NULL; + config_setting_t *all_plmn_setting = NULL; + char user[10]; + config_t cfg; + + networks_t networks;; + + ret = get_config_from_file(conf_filename, &cfg); + if (ret == false) { + exit(1); + } + + root_setting = config_root_setting(&cfg); + ue_nb = config_setting_length(root_setting) - 1; + + all_plmn_setting = config_setting_get_member(root_setting, PLMN); + if (all_plmn_setting == NULL) { + printf("NO PLMN SECTION...EXITING...\n"); + return (false); + } + + if ( parse_plmns(all_plmn_setting, &networks) == false ) { + return false; + } + + for (int i = 0; i < ue_nb; i++) { + emm_nvdata_t emm_data; + + user_nvdata_t user_data; + user_data_conf_t user_data_conf; + + usim_data_t usim_data; + usim_data_conf_t usim_data_conf; + + user_plmns_t user_plmns; + + sprintf(user, "%s%d", UE, i); + + ue_setting = config_setting_get_member(root_setting, user); + if (ue_setting == NULL) { + printf("Check UE%d settings\n", i); + return false; + } + + if ( parse_user_plmns_conf(ue_setting, i, &user_plmns, &usim_data_conf.hplmn, networks) == false ) { + return false; + } + + rc = parse_ue_user_data(ue_setting, i, &user_data_conf); + if (rc != true) { + printf("Problem in USER section for UE%d. EXITING...\n", i); + return false; + } + gen_user_data(&user_data_conf, &user_data); + write_user_data(output_dir, i, &user_data); + + rc = parse_ue_sim_param(ue_setting, i, &usim_data_conf); + if (rc != true) { + printf("Problem in SIM section for UE%d. EXITING...\n", i); + return false; + } + gen_usim_data(&usim_data_conf, &usim_data, &user_plmns, networks); + write_usim_data(output_dir, i, &usim_data); + + gen_emm_data(&emm_data, usim_data_conf.hplmn, usim_data_conf.msin, + user_plmns.equivalents_home.size, networks); + write_emm_data(output_dir, i, &emm_data); + + user_plmns_free(&user_plmns); + + } + free(networks.items); + networks.size=0; + config_destroy(&cfg); + return(true); +} + +bool get_config_from_file(const char *filename, config_t *config) { + config_init(config); + if (filename == NULL) { + // XXX write error message ? + return(false); + } + + /* Read the file. If there is an error, report it and exit. */ + if (!config_read_file(config, filename)) { + fprintf(stderr, "Cant read config file '%s': %s\n", filename, + config_error_text(config)); + if ( config_error_type(config) == CONFIG_ERR_PARSE ) { + fprintf(stderr, "This is line %d\n", config_error_line(config)); + } + config_destroy(config); + return (false); + } + return true; +} + diff --git a/openair3/NAS/TOOLS/conf_parser.h b/openair3/NAS/TOOLS/conf_parser.h new file mode 100644 index 0000000000000000000000000000000000000000..4e160ab73ab957885e717a0a152fc786b26687d0 --- /dev/null +++ b/openair3/NAS/TOOLS/conf_parser.h @@ -0,0 +1,12 @@ +#ifndef _CONF_PARSER_H +#define _CONF_PARSER_H + +#include <stdbool.h> +#include <libconfig.h> + +#define UE "UE" + +bool get_config_from_file(const char *filename, config_t *config); +bool parse_config_file(const char *output_dir, const char *filename); + +#endif diff --git a/openair3/NAS/TOOLS/conf_usim.c b/openair3/NAS/TOOLS/conf_usim.c index 5418f01932209b8d9850fd0007af4b9ad908d0c4..50043632759cc9afda4b52cf30bb05f2484a32fc 100644 --- a/openair3/NAS/TOOLS/conf_usim.c +++ b/openair3/NAS/TOOLS/conf_usim.c @@ -5,7 +5,6 @@ #include "utils.h" #include "conf_emm.h" #include "fs.h" -#include "conf2uedata.h" #include "conf_usim.h" bool parse_ue_sim_param(config_setting_t *ue_setting, int user_id, usim_data_conf_t *u) {