From eeb44860e9cef26b850b3fcefa3706af1c5c7764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Leroy?= <frederic.leroy@b-com.com> Date: Tue, 16 Aug 2016 15:58:35 +0200 Subject: [PATCH] refactor(conf2uedata): move emm_data funcions in conf_emm.[c|h] --- cmake_targets/nas_sim_tools/CMakeLists.txt | 2 + openair3/NAS/TOOLS/conf2uedata.c | 75 +------------------- openair3/NAS/TOOLS/conf2uedata.h | 4 -- openair3/NAS/TOOLS/conf_emm.c | 80 ++++++++++++++++++++++ openair3/NAS/TOOLS/conf_emm.h | 10 +++ 5 files changed, 94 insertions(+), 77 deletions(-) create mode 100644 openair3/NAS/TOOLS/conf_emm.c create mode 100644 openair3/NAS/TOOLS/conf_emm.h diff --git a/cmake_targets/nas_sim_tools/CMakeLists.txt b/cmake_targets/nas_sim_tools/CMakeLists.txt index 81583629125..9e48fd5eb39 100644 --- a/cmake_targets/nas_sim_tools/CMakeLists.txt +++ b/cmake_targets/nas_sim_tools/CMakeLists.txt @@ -17,6 +17,7 @@ set(OPENAIR3_DIR $ENV{OPENAIR_DIR}/openair3) set(conf2uedata_SRC ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf2uedata.c + ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_emm.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 @@ -30,6 +31,7 @@ set(conf2uedata_SRC set(conf2uedata_HDR ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf2uedata.h + ${OPENAIR_DIR}/openair3/NAS/TOOLS/conf_emm.h ${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.h ${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/aka_functions.h ${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.h diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index 486b7e2bff0..c14232d00d6 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -10,6 +10,7 @@ #include "utils.h" #include "display.h" #include "fs.h" +#include "conf_emm.h" const char *msin = NULL; const char *usim_api_k = NULL; @@ -138,7 +139,7 @@ int parse_config_file(const char *output_dir, const char *conf_filename) { if (rc != EXIT_SUCCESS) { return EXIT_FAILURE; } - gen_emm_data(i, &emm_data); + gen_emm_data(&emm_data); write_emm_data(output_dir, i, &emm_data); gen_usim_data(&usim_data); @@ -427,70 +428,6 @@ int write_usim_data(const char *directory, int user_id, usim_data_t *usim_data){ } -void gen_emm_data(int user_id, emm_nvdata_t *emm_data) { - hplmn_index = get_plmn_index(hplmn); - memset(emm_data, 0, sizeof(emm_nvdata_t)); - int hplmn_index = get_plmn_index(hplmn); - emm_data->imsi.length = 8; - emm_data->imsi.u.num.parity = get_msin_parity(msin); - emm_data->imsi.u.num.digit1 = user_plmn_list[hplmn_index].mcc[0]; - emm_data->imsi.u.num.digit2 = user_plmn_list[hplmn_index].mcc[1]; - emm_data->imsi.u.num.digit3 = user_plmn_list[hplmn_index].mcc[2]; - - emm_data->imsi.u.num.digit4 = user_plmn_list[hplmn_index].mnc[0]; - emm_data->imsi.u.num.digit5 = user_plmn_list[hplmn_index].mnc[1]; - - if (strlen(user_plmn_list[hplmn_index].mnc) == 3) { - emm_data->rplmn.MNCdigit3 = user_plmn_list[hplmn_index].mnc[2]; - - emm_data->imsi.u.num.digit6 = user_plmn_list[hplmn_index].mnc[2]; - emm_data->imsi.u.num.digit7 = msin[0]; - emm_data->imsi.u.num.digit8 = msin[1]; - emm_data->imsi.u.num.digit9 = msin[2]; - emm_data->imsi.u.num.digit10 = msin[3]; - emm_data->imsi.u.num.digit11 = msin[4]; - emm_data->imsi.u.num.digit12 = msin[5]; - emm_data->imsi.u.num.digit13 = msin[6]; - emm_data->imsi.u.num.digit14 = msin[7]; - emm_data->imsi.u.num.digit15 = msin[8]; - - } else { - emm_data->rplmn.MNCdigit3 = 0xf; - - emm_data->imsi.u.num.digit6 = msin[0]; - emm_data->imsi.u.num.digit7 = msin[1]; - emm_data->imsi.u.num.digit8 = msin[2]; - emm_data->imsi.u.num.digit9 = msin[3]; - emm_data->imsi.u.num.digit10 = msin[4]; - emm_data->imsi.u.num.digit11 = msin[5]; - emm_data->imsi.u.num.digit12 = msin[6]; - emm_data->imsi.u.num.digit13 = msin[7]; - emm_data->imsi.u.num.digit14 = msin[8]; - emm_data->imsi.u.num.digit15 = msin[9]; - - } - - emm_data->rplmn.MCCdigit1 = user_plmn_list[hplmn_index].mcc[0]; - emm_data->rplmn.MCCdigit2 = user_plmn_list[hplmn_index].mcc[1]; - emm_data->rplmn.MCCdigit3 = user_plmn_list[hplmn_index].mcc[2]; - emm_data->rplmn.MNCdigit1 = user_plmn_list[hplmn_index].mnc[0]; - emm_data->rplmn.MNCdigit2 = user_plmn_list[hplmn_index].mnc[1]; - - emm_data->eplmn.n_plmns = ehplmn_nb; -} - -int write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data) { - int rc; - char* filename = make_filename(directory, EMM_NVRAM_FILENAME, user_id); - rc = memory_write(filename, emm_data, sizeof(emm_nvdata_t)); - free(filename); - if (rc != RETURNok) { - perror("ERROR\t: memory_write() failed"); - exit(EXIT_FAILURE); - } - return(EXIT_SUCCESS); -} - int parse_plmn_param(config_setting_t *plmn_setting, int index) { int rc = 0; rc = config_setting_lookup_string(plmn_setting, @@ -827,14 +764,6 @@ int get_plmn_index(const char * mccmnc) { return -1; } -int get_msin_parity(const char * msin) { - int imsi_size = strlen(msin) + strlen(user_plmn_list[hplmn_index].mcc) - + strlen(user_plmn_list[hplmn_index].mnc); - int result = (imsi_size % 2 == 0) ? 0 : 1; - return result; - -} - void fill_network_record_list() { for (int i = 0; i < plmn_nb; i++) { strcpy(user_network_record_list[i].fullname, diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h index 1aee521e79a..e58f5877e39 100644 --- a/openair3/NAS/TOOLS/conf2uedata.h +++ b/openair3/NAS/TOOLS/conf2uedata.h @@ -3,7 +3,6 @@ #include <libconfig.h> -#include "emmData.h" #include "usim_api.h" #include "userDef.h" @@ -100,12 +99,10 @@ int get_config_from_file(const char *filename, config_t *config); int parse_config_file(const char *output_dir, const char *filename); void _display_usage(void); -void gen_emm_data(int user_id, emm_nvdata_t *emm_data); void fill_network_record_list(void); int parse_ue_user_param(config_setting_t *ue_setting, int user_id, user_nvdata_t *user_data); void write_user_data(const char *directory, int user_id, user_nvdata_t *data); -int write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data); int write_usim_data(const char *directory, int user_id, usim_data_t *usim_data); void gen_usim_data(usim_data_t *usim_data); @@ -115,7 +112,6 @@ int _luhn(const char* cc); int parse_ue_sim_param(config_setting_t *ue_setting, int user_id); int parse_plmn_param(config_setting_t *plmn_setting, int index); int parse_plmns(config_setting_t *all_plmn_setting); -int get_msin_parity(const char * msin); int get_plmn_index(const char * mccmnc); int parse_ue_plmn_param(config_setting_t *ue_setting, int user_id); int fill_ucplmn(config_setting_t* setting, int use_id); diff --git a/openair3/NAS/TOOLS/conf_emm.c b/openair3/NAS/TOOLS/conf_emm.c new file mode 100644 index 00000000000..a46fc5d59b4 --- /dev/null +++ b/openair3/NAS/TOOLS/conf_emm.c @@ -0,0 +1,80 @@ +#include <string.h> + +#include "conf2uedata.h" +#include "memory.h" +#include "conf_emm.h" +#include "fs.h" + +void gen_emm_data(emm_nvdata_t *emm_data) { + hplmn_index = get_plmn_index(hplmn); + memset(emm_data, 0, sizeof(emm_nvdata_t)); + int hplmn_index = get_plmn_index(hplmn); + emm_data->imsi.length = 8; + emm_data->imsi.u.num.parity = get_msin_parity(msin); + emm_data->imsi.u.num.digit1 = user_plmn_list[hplmn_index].mcc[0]; + emm_data->imsi.u.num.digit2 = user_plmn_list[hplmn_index].mcc[1]; + emm_data->imsi.u.num.digit3 = user_plmn_list[hplmn_index].mcc[2]; + + emm_data->imsi.u.num.digit4 = user_plmn_list[hplmn_index].mnc[0]; + emm_data->imsi.u.num.digit5 = user_plmn_list[hplmn_index].mnc[1]; + + if (strlen(user_plmn_list[hplmn_index].mnc) == 3) { + emm_data->rplmn.MNCdigit3 = user_plmn_list[hplmn_index].mnc[2]; + + emm_data->imsi.u.num.digit6 = user_plmn_list[hplmn_index].mnc[2]; + emm_data->imsi.u.num.digit7 = msin[0]; + emm_data->imsi.u.num.digit8 = msin[1]; + emm_data->imsi.u.num.digit9 = msin[2]; + emm_data->imsi.u.num.digit10 = msin[3]; + emm_data->imsi.u.num.digit11 = msin[4]; + emm_data->imsi.u.num.digit12 = msin[5]; + emm_data->imsi.u.num.digit13 = msin[6]; + emm_data->imsi.u.num.digit14 = msin[7]; + emm_data->imsi.u.num.digit15 = msin[8]; + + } else { + emm_data->rplmn.MNCdigit3 = 0xf; + + emm_data->imsi.u.num.digit6 = msin[0]; + emm_data->imsi.u.num.digit7 = msin[1]; + emm_data->imsi.u.num.digit8 = msin[2]; + emm_data->imsi.u.num.digit9 = msin[3]; + emm_data->imsi.u.num.digit10 = msin[4]; + emm_data->imsi.u.num.digit11 = msin[5]; + emm_data->imsi.u.num.digit12 = msin[6]; + emm_data->imsi.u.num.digit13 = msin[7]; + emm_data->imsi.u.num.digit14 = msin[8]; + emm_data->imsi.u.num.digit15 = msin[9]; + + } + + emm_data->rplmn.MCCdigit1 = user_plmn_list[hplmn_index].mcc[0]; + emm_data->rplmn.MCCdigit2 = user_plmn_list[hplmn_index].mcc[1]; + emm_data->rplmn.MCCdigit3 = user_plmn_list[hplmn_index].mcc[2]; + emm_data->rplmn.MNCdigit1 = user_plmn_list[hplmn_index].mnc[0]; + emm_data->rplmn.MNCdigit2 = user_plmn_list[hplmn_index].mnc[1]; + + emm_data->eplmn.n_plmns = ehplmn_nb; +} + +int write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data) { + int rc; + char* filename = make_filename(directory, EMM_NVRAM_FILENAME, user_id); + rc = memory_write(filename, emm_data, sizeof(emm_nvdata_t)); + free(filename); + if (rc != RETURNok) { + perror("ERROR\t: memory_write() failed"); + exit(EXIT_FAILURE); + } + return(EXIT_SUCCESS); +} + +int get_msin_parity(const char * msin) { + int imsi_size = strlen(msin) + strlen(user_plmn_list[hplmn_index].mcc) + + strlen(user_plmn_list[hplmn_index].mnc); + int result = (imsi_size % 2 == 0) ? 0 : 1; + return result; + +} + + diff --git a/openair3/NAS/TOOLS/conf_emm.h b/openair3/NAS/TOOLS/conf_emm.h new file mode 100644 index 00000000000..ddb920f5b50 --- /dev/null +++ b/openair3/NAS/TOOLS/conf_emm.h @@ -0,0 +1,10 @@ +#ifndef _CONF_EMM_H +#define _CONF_EMM_H + +#include "emmData.h" + +void gen_emm_data(emm_nvdata_t *emm_data); +int write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data); +int get_msin_parity(const char * msin); + +#endif -- GitLab