From fcb857e50830a0860655a2f86807e2b8dc2b2bd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Leroy?= <frederic.leroy@b-com.com> Date: Tue, 23 Aug 2016 11:58:29 +0200 Subject: [PATCH] refactor(conf2uedata): add parse_Xplmn() to read *plmns --- openair3/NAS/TOOLS/conf2uedata.c | 172 ++++++------------------------- openair3/NAS/TOOLS/conf2uedata.h | 8 +- 2 files changed, 37 insertions(+), 143 deletions(-) diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index 804c8aecdba..a9eb8ef797e 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -227,11 +227,10 @@ int parse_plmns(config_setting_t *all_plmn_setting) { } int parse_ue_plmn_param(config_setting_t *ue_setting, int user_id, const char **h) { - int rc = EXIT_SUCCESS; + int nb_errors = 0; const char *hplmn; - config_setting_t *setting = NULL; - rc = config_setting_lookup_string(ue_setting, HPLMN, h); - if (rc != 1) { + + if ( config_setting_lookup_string(ue_setting, HPLMN, h) != 1 ) { printf("Check HPLMN section for UE%d. Exiting\n", user_id); return EXIT_FAILURE; } @@ -241,147 +240,41 @@ int parse_ue_plmn_param(config_setting_t *ue_setting, int user_id, const char ** user_id); return EXIT_FAILURE; } - setting = config_setting_get_member(ue_setting, UCPLMN); - if (setting == NULL) { - printf("Check UCPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = fill_ucplmn(setting, user_id); - if (rc != EXIT_SUCCESS) { - printf("Check UCPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - setting = config_setting_get_member(ue_setting, OPLMN); - if (setting == NULL) { - printf("Check OPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = fill_oplmn(setting, user_id); - if (rc != EXIT_SUCCESS) { - printf("Check OPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - setting = config_setting_get_member(ue_setting, OCPLMN); - if (setting == NULL) { - printf("Check OCPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = fill_ocplmn(setting, user_id); - if (rc != EXIT_SUCCESS) { - printf("Check OCPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - setting = config_setting_get_member(ue_setting, FPLMN); - if (setting == NULL) { - printf("Check FPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = fill_fplmn(setting, user_id); - if (rc != EXIT_SUCCESS) { - printf("Check FPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - setting = config_setting_get_member(ue_setting, EHPLMN); - if (setting == NULL) { - printf("Check EHPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = fill_ehplmn(setting, user_id); - if (rc != EXIT_SUCCESS) { - printf("Check EHPLMN section for UE%d. Exiting\n", user_id); + + if ( parse_Xplmn(ue_setting, UCPLMN, user_id, &ucplmn_nb, &ucplmn) == EXIT_FAILURE ) + nb_errors++; + if ( parse_Xplmn(ue_setting, OPLMN, user_id, &oplmn_nb, &oplmn) == EXIT_FAILURE ) + nb_errors++; + if ( parse_Xplmn(ue_setting, OCPLMN, user_id, &ocplmn_nb, &ocplmn) == EXIT_FAILURE ) + nb_errors++; + if ( parse_Xplmn(ue_setting, FPLMN, user_id, &fplmn_nb, &fplmn) == EXIT_FAILURE ) + nb_errors++; + if ( parse_Xplmn(ue_setting, EHPLMN, user_id, &ehplmn_nb, &ehplmn) == EXIT_FAILURE ) + nb_errors++; + + if ( nb_errors > 0 ) return EXIT_FAILURE; - } return EXIT_SUCCESS; } -int fill_ucplmn(config_setting_t* setting, int user_id) { - int rc; - ucplmn_nb = config_setting_length(setting); - ucplmn = malloc(ucplmn_nb * sizeof(int)); - for (int i = 0; i < ucplmn_nb; i++) { - const char *mccmnc = config_setting_get_string_elem(setting, i); - if (mccmnc == NULL) { - printf("Check UCPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = get_plmn_index(mccmnc); - if (rc == -1) { - printf("The PLMN %s is not defined in PLMN section. Exiting...\n", - mccmnc); - return EXIT_FAILURE; - } - ucplmn[i] = rc; - } - return EXIT_SUCCESS; -} -int fill_oplmn(config_setting_t* setting, int user_id) { - int rc; - oplmn_nb = config_setting_length(setting); - oplmn = malloc(oplmn_nb * sizeof(int)); - for (int i = 0; i < oplmn_nb; i++) { - const char *mccmnc = config_setting_get_string_elem(setting, i); - if (mccmnc == NULL) { - printf("Check OPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = get_plmn_index(mccmnc); - if (rc == -1) { - printf("The PLMN %s is not defined in PLMN section. Exiting...\n", - mccmnc); - return EXIT_FAILURE; - } - oplmn[i] = rc; - } - return EXIT_SUCCESS; -} -int fill_ocplmn(config_setting_t* setting, int user_id) { - int rc; - ocplmn_nb = config_setting_length(setting); - ocplmn = malloc(ocplmn_nb * sizeof(int)); - for (int i = 0; i < ocplmn_nb; i++) { - const char *mccmnc = config_setting_get_string_elem(setting, i); - if (mccmnc == NULL) { - printf("Check OCPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = get_plmn_index(mccmnc); - if (rc == -1) { - printf("The PLMN %s is not defined in PLMN section. Exiting...\n", - mccmnc); - return EXIT_FAILURE; - } - ocplmn[i] = rc; - } - return EXIT_SUCCESS; -} -int fill_fplmn(config_setting_t* setting, int user_id) { +int parse_Xplmn(config_setting_t *ue_setting, const char *section, + int user_id, int *plmns_count, int **plmns ) { int rc; - fplmn_nb = config_setting_length(setting); - fplmn = malloc(fplmn_nb * sizeof(int)); - for (int i = 0; i < fplmn_nb; i++) { - const char *mccmnc = config_setting_get_string_elem(setting, i); - if (mccmnc == NULL) { - printf("Check FPLMN section for UE%d. Exiting\n", user_id); - return EXIT_FAILURE; - } - rc = get_plmn_index(mccmnc); - if (rc == -1) { - printf("The PLMN %s is not defined in PLMN section. Exiting...\n", - mccmnc); - return EXIT_FAILURE; - } - fplmn[i] = rc; + int item_count; + config_setting_t *setting; + + setting = config_setting_get_member(ue_setting, section); + if (setting == NULL) { + printf("Check %s section for UE%d. Exiting\n", section, user_id); + return EXIT_FAILURE; } - return EXIT_SUCCESS; -} -int fill_ehplmn(config_setting_t* setting, int user_id) { - int rc; - ehplmn_nb = config_setting_length(setting); - ehplmn = malloc(ehplmn_nb * sizeof(int)); - for (int i = 0; i < ehplmn_nb; i++) { + + item_count = config_setting_length(setting); + int *datas = malloc(item_count * sizeof(int)); + for (int i = 0; i < item_count; i++) { const char *mccmnc = config_setting_get_string_elem(setting, i); if (mccmnc == NULL) { - printf("Check EHPLMN section for UE%d. Exiting\n", user_id); + printf("Check %s section for UE%d. Exiting\n", section, user_id); return EXIT_FAILURE; } rc = get_plmn_index(mccmnc); @@ -390,8 +283,11 @@ int fill_ehplmn(config_setting_t* setting, int user_id) { mccmnc); return EXIT_FAILURE; } - ehplmn[i] = rc; + datas[i] = rc; } + + *plmns_count = item_count; + *plmns = datas; return EXIT_SUCCESS; } diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h index ed74ccf288b..9fd1cb53a93 100644 --- a/openair3/NAS/TOOLS/conf2uedata.h +++ b/openair3/NAS/TOOLS/conf2uedata.h @@ -69,10 +69,8 @@ int parse_plmn_param(config_setting_t *plmn_setting, int index); int parse_plmns(config_setting_t *all_plmn_setting); int get_plmn_index(const char * mccmnc); int parse_ue_plmn_param(config_setting_t *ue_setting, int user_id, const char **hplmn); -int fill_ucplmn(config_setting_t* setting, int use_id); -int fill_oplmn(config_setting_t* setting, int use_id); -int fill_ocplmn(config_setting_t* setting, int use_id); -int fill_fplmn(config_setting_t* setting, int use_id); -int fill_ehplmn(config_setting_t* setting, int use_id); +int parse_Xplmn(config_setting_t *ue_setting, const char *section, + int user_id, int *plmns_count, int **plmns ); + #endif // _CONF2UEDATA_H -- GitLab