diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index 3d4c416eccd837f7f15414fdd7a92417a67bf2e9..e6d9554b0c77436b9e6d0a88970ae2284eb5c482 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -69,6 +69,8 @@ int main(int argc, char**argv) { exit(EXIT_FAILURE); } + display_data_from_directory(output_dir); + exit(EXIT_SUCCESS); } @@ -116,7 +118,6 @@ int parse_config_file(const char *filename) { printf("Problem in USER section for UE%d. EXITING...\n", i); return EXIT_FAILURE; } - _display_ue_data(i); rc = parse_ue_sim_param(ue_setting, i); if (rc != EXIT_SUCCESS) { @@ -129,10 +130,7 @@ int parse_config_file(const char *filename) { return EXIT_FAILURE; } gen_emm_data(i); - _display_emm_data(i); - gen_usim_data(i); - _display_usim_data(i); } config_destroy(&cfg); return(EXIT_SUCCESS); @@ -854,17 +852,12 @@ int _luhn(const char* cc) { return 10 - (sum % 10); } -void _display_usim_data(int user_id) { +void display_usim_data(const char *filename) { int rc; usim_data_t data = { }; - /* - * Read USIM application data - */ - memset(&data, 0, sizeof(usim_data_t)); - char *path = make_filename(output_dir, USIM_API_NVRAM_FILENAME, user_id); - rc = usim_api_read(path, &data); - free(path); + + rc = usim_api_read(filename, &data); if (rc != RETURNok) { perror("ERROR\t: usim_api_read() failed"); @@ -1046,16 +1039,14 @@ void _display_usim_data(int user_id) { } -void _display_ue_data(int user_id) { +void display_ue_data(const char *filename) { user_nvdata_t data; int rc; - char* path = make_filename(output_dir, USER_NVRAM_FILENAME, user_id); /* * Read UE's non-volatile data */ memset(&data, 0, sizeof(user_nvdata_t)); - rc = memory_read(path, &data, sizeof(user_nvdata_t)); - free(path); + rc = memory_read(filename, &data, sizeof(user_nvdata_t)); if (rc != RETURNok) { perror("ERROR\t: memory_read() failed"); @@ -1075,18 +1066,16 @@ void _display_ue_data(int user_id) { /* * Displays UE's non-volatile EMM data */ -void _display_emm_data(int user_id) { +void display_emm_data(const char *filename) { int rc; emm_nvdata_t data; - char* path = make_filename(output_dir, EMM_NVRAM_FILENAME, user_id); /* * Read EMM non-volatile data */ memset(&data, 0, sizeof(emm_nvdata_t)); - rc = memory_read(path, &data, sizeof(emm_nvdata_t)); - free(path); + rc = memory_read(filename, &data, sizeof(emm_nvdata_t)); if (rc != RETURNok) { perror("ERROR\t: memory_read() failed "); exit(EXIT_FAILURE); @@ -1166,8 +1155,53 @@ void _display_usage(void) { fprintf(stderr, "\t[-h]\tDisplay this usage\n"); } +void display_data_from_directory(const char *directory) { + int user_id = 0; + char *filename; + + filename = get_ue_filename(directory, user_id); + while ( file_exist_and_is_readable(filename) ) { + + display_ue_data(filename); + free(filename); + + filename = get_emm_filename(directory, user_id); + display_emm_data(filename); + free(filename); + + filename = get_usim_filename(directory, user_id); + display_usim_data(filename); + free(filename); + + + user_id += 1; + filename = get_ue_filename(directory, user_id); + } + free(filename); +} + +bool file_exist_and_is_readable(const char *filename) { + FILE *file ; + file = fopen(filename, "r"); + if ( file == NULL ) + return false; + fclose(file); + return true; +} + +char *get_ue_filename(const char *output_dir, int user_id) { + return make_filename(output_dir, USER_NVRAM_FILENAME, user_id); +} + +char *get_emm_filename(const char *output_dir, int user_id) { + return make_filename(output_dir, EMM_NVRAM_FILENAME, user_id); +} + +char *get_usim_filename(const char *output_dir, int user_id) { + return make_filename(output_dir, USIM_API_NVRAM_FILENAME, user_id); +} -char * make_filename(const char *output_dir, const char *filename, int ueid) { +char *make_filename(const char *output_dir, const char *filename, int ueid) { size_t size; char *str_ueid, *str; diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h index c2571860c0fc6991979d2d69d126663e7f7c36f1..0fba9aa960031091ccb4a97a92fb1091e3de7fbd 100644 --- a/openair3/NAS/TOOLS/conf2uedata.h +++ b/openair3/NAS/TOOLS/conf2uedata.h @@ -119,11 +119,9 @@ extern int ehplmn_nb; extern plmn_conf_param_t* user_plmn_list; extern network_record_t* user_network_record_list; -char *make_filename(const char *output_dir, const char *filename, int ueid); int get_config_from_file(const char *filename, config_t *config); int parse_config_file(const char *filename); -void _display_usim_data(int user_id); void _display_usage(void); void gen_emm_data(int user_id) ; @@ -132,9 +130,17 @@ void fill_network_record_list(void); int _luhn(const char* cc); -void _display_ue_data(int user_id); +void display_data_from_directory(const char *directory); +void display_ue_data(const char *filename); +void display_emm_data(const char *filename); +void display_usim_data(const char *filename); + +bool file_exist_and_is_readable(const char *filename); +char *get_ue_filename(const char *output_dir, int user_id); +char *get_emm_filename(const char *output_dir, int user_id); +char *get_usim_filename(const char *output_dir, int user_id); +char *make_filename(const char *output_dir, const char *filename, int ueid); -void _display_emm_data(int user_id); int parse_ue_user_param(config_setting_t *ue_setting, int user_id); int parse_ue_sim_param(config_setting_t *ue_setting, int user_id); int parse_plmn_param(config_setting_t *plmn_setting, int index);