diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index a3beb27b2d2b7504231a208ca05081db0ed43051..804c8aecdbaf5b23d353a2ef3e28fd14680dea1a 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -18,7 +18,6 @@ int *ocplmn = NULL; int *fplmn = NULL; int *ehplmn = NULL; -int hplmn_index = 0; int plmn_nb = 0; int ucplmn_nb = 0; int oplmn_nb = 0; diff --git a/openair3/NAS/TOOLS/conf2uedata.h b/openair3/NAS/TOOLS/conf2uedata.h index 7ae326bf1c49ab56cd2d7cdb124c003236b07e5c..ed74ccf288b63b23d0e334e4f47eefbbb045cf42 100644 --- a/openair3/NAS/TOOLS/conf2uedata.h +++ b/openair3/NAS/TOOLS/conf2uedata.h @@ -49,7 +49,6 @@ extern int *ocplmn; extern int *fplmn; extern int *ehplmn; -extern int hplmn_index; extern int plmn_nb; extern int ucplmn_nb; extern int oplmn_nb; diff --git a/openair3/NAS/TOOLS/conf_emm.c b/openair3/NAS/TOOLS/conf_emm.c index ad877e32efcf145be065ca42849ed41fb2012021..de696592de92c52c6d8e0d09d3400c58ed5fda40 100644 --- a/openair3/NAS/TOOLS/conf_emm.c +++ b/openair3/NAS/TOOLS/conf_emm.c @@ -6,11 +6,10 @@ #include "fs.h" void gen_emm_data(emm_nvdata_t *emm_data, const char *hplmn, const char *msin) { - 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.parity = get_msin_parity(msin, user_plmn_list[hplmn_index].mcc, user_plmn_list[hplmn_index].mnc); 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]; @@ -69,9 +68,9 @@ int write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data) { 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 get_msin_parity(const char * msin, const char *mcc, const char *mnc) { + int imsi_size = strlen(msin) + strlen(mcc) + + strlen(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 index 80562aba55470a3f781ce1761478839c1a68d0d8..996e63ca05c1ab6d5d388fa93c43a972a36e81da 100644 --- a/openair3/NAS/TOOLS/conf_emm.h +++ b/openair3/NAS/TOOLS/conf_emm.h @@ -5,6 +5,6 @@ void gen_emm_data(emm_nvdata_t *emm_data, const char *hplmn, const char *msin); int write_emm_data(const char *directory, int user_id, emm_nvdata_t *emm_data); -int get_msin_parity(const char * msin); +int get_msin_parity(const char * msin, const char *mcc, const char *mnc); #endif diff --git a/openair3/NAS/TOOLS/conf_usim.c b/openair3/NAS/TOOLS/conf_usim.c index ee8ed8e0d0b0fbced8714ff0d4ce96ee892968b6..345309996fc2bba01078105b284c135fc670a226 100644 --- a/openair3/NAS/TOOLS/conf_usim.c +++ b/openair3/NAS/TOOLS/conf_usim.c @@ -41,9 +41,12 @@ int parse_ue_sim_param(config_setting_t *ue_setting, int user_id, usim_data_conf } void gen_usim_data(usim_data_conf_t *u, usim_data_t *usim_data) { + int hplmn_index = get_plmn_index(u->hplmn); memset(usim_data, 0, sizeof(usim_data_t)); usim_data->imsi.length = 8; - usim_data->imsi.u.num.parity = get_msin_parity(u->msin); + usim_data->imsi.u.num.parity = get_msin_parity(u->msin, + user_plmn_list[hplmn_index].mcc, + user_plmn_list[hplmn_index].mnc); usim_data->imsi.u.num.digit1 = user_plmn_list[hplmn_index].mcc[0]; usim_data->imsi.u.num.digit2 = user_plmn_list[hplmn_index].mcc[1];