refactor(conf2uedata): move parser functions to conf_parser.[c|h]
This commit is contained in:
@@ -22,6 +22,7 @@ set(conf2uedata_SRC
|
|||||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_usim.c
|
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_usim.c
|
||||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_network.c
|
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_network.c
|
||||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_user_plmn.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/fs.c
|
||||||
${OPENAIR_DIR}/openair3/NAS/TOOLS/display.c
|
${OPENAIR_DIR}/openair3/NAS/TOOLS/display.c
|
||||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.c
|
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.c
|
||||||
|
|||||||
@@ -4,13 +4,8 @@
|
|||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
|
||||||
#include "conf2uedata.h"
|
#include "conf2uedata.h"
|
||||||
#include "memory.h"
|
|
||||||
#include "utils.h"
|
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "fs.h"
|
#include "conf_parser.h"
|
||||||
#include "conf_emm.h"
|
|
||||||
#include "conf_user_data.h"
|
|
||||||
#include "conf_usim.h"
|
|
||||||
|
|
||||||
int main(int argc, char**argv) {
|
int main(int argc, char**argv) {
|
||||||
int option;
|
int option;
|
||||||
@@ -56,108 +51,6 @@ int main(int argc, char**argv) {
|
|||||||
exit(0);
|
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
|
* Displays command line usage
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,16 +1,6 @@
|
|||||||
#ifndef _CONF2UEDATA_H
|
#ifndef _CONF2UEDATA_H
|
||||||
#define _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);
|
void _display_usage(void);
|
||||||
|
|
||||||
#endif // _CONF2UEDATA_H
|
#endif // _CONF2UEDATA_H
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#ifndef _CONF_EMM_H
|
#ifndef _CONF_EMM_H
|
||||||
#define _CONF_EMM_H
|
#define _CONF_EMM_H
|
||||||
|
|
||||||
#include "conf2uedata.h"
|
|
||||||
#include "emmData.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);
|
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);
|
bool write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -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
|
||||||
@@ -5,7 +5,6 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "conf_emm.h"
|
#include "conf_emm.h"
|
||||||
#include "fs.h"
|
#include "fs.h"
|
||||||
#include "conf2uedata.h"
|
|
||||||
#include "conf_usim.h"
|
#include "conf_usim.h"
|
||||||
|
|
||||||
bool parse_ue_sim_param(config_setting_t *ue_setting, int user_id, usim_data_conf_t *u) {
|
bool parse_ue_sim_param(config_setting_t *ue_setting, int user_id, usim_data_conf_t *u) {
|
||||||
|
|||||||
Reference in New Issue
Block a user