diff --git a/openair3/NAS/TOOLS/conf2uedata.c b/openair3/NAS/TOOLS/conf2uedata.c index 2e9317dc1ca3a5125e1aebabcc5b0fd37173cf7b..197c6394548be8cecea66883ed178976d2b23848 100644 --- a/openair3/NAS/TOOLS/conf2uedata.c +++ b/openair3/NAS/TOOLS/conf2uedata.c @@ -300,27 +300,40 @@ int get_plmn_index(const char * mccmnc) { return -1; } + +plmn_t make_plmn_from_conf(const plmn_conf_param_t *plmn_conf) { + plmn_t plmn; + char num[6]; + + memset(&plmn, 0xff, sizeof(plmn)); + + snprintf(num, 6, "%s%s", plmn_conf->mcc, plmn_conf->mnc); + + plmn.MCCdigit2 = plmn_conf->mcc[1]; + plmn.MCCdigit1 = plmn_conf->mcc[0]; + plmn.MCCdigit3 = plmn_conf->mcc[2]; + plmn.MNCdigit2 = plmn_conf->mnc[1]; + plmn.MNCdigit1 = plmn_conf->mnc[0]; + if (strlen(plmn_conf->mnc) > 2) { + plmn.MNCdigit3 = plmn_conf->mnc[2]; + } + return plmn; +} + void fill_network_record_list() { for (int i = 0; i < plmn_nb; i++) { strcpy(user_network_record_list[i].fullname, user_plmn_list[i].fullname); strcpy(user_network_record_list[i].shortname, user_plmn_list[i].shortname); + char num[6]; sprintf(num, "%s%s", user_plmn_list[i].mcc, user_plmn_list[i].mnc); user_network_record_list[i].num = atoi(num); - user_network_record_list[i].plmn.MCCdigit2 = user_plmn_list[i].mcc[1]; - user_network_record_list[i].plmn.MCCdigit1 = user_plmn_list[i].mcc[0]; - user_network_record_list[i].plmn.MCCdigit3 = user_plmn_list[i].mcc[2]; - user_network_record_list[i].plmn.MNCdigit2 = user_plmn_list[i].mnc[1]; - user_network_record_list[i].plmn.MNCdigit1 = user_plmn_list[i].mnc[0]; + + user_network_record_list[i].plmn = make_plmn_from_conf(&user_plmn_list[i]); user_network_record_list[i].tac_end = 0xfffd; user_network_record_list[i].tac_start = 0x0001; - if (strlen(user_plmn_list[i].mnc) > 2) { - user_network_record_list[i].plmn.MNCdigit3 = - user_plmn_list[i].mnc[2]; - } - } }