Commit eeb44860 authored by Frédéric Leroy's avatar Frédéric Leroy

refactor(conf2uedata): move emm_data funcions in conf_emm.[c|h]

parent ef2dee59
...@@ -17,6 +17,7 @@ set(OPENAIR3_DIR $ENV{OPENAIR_DIR}/openair3) ...@@ -17,6 +17,7 @@ set(OPENAIR3_DIR $ENV{OPENAIR_DIR}/openair3)
set(conf2uedata_SRC set(conf2uedata_SRC
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf2uedata.c ${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/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
...@@ -30,6 +31,7 @@ set(conf2uedata_SRC ...@@ -30,6 +31,7 @@ set(conf2uedata_SRC
set(conf2uedata_HDR set(conf2uedata_HDR
${OPENAIR_DIR}/openair3/NAS/TOOLS/conf2uedata.h ${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/usim_api.h
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/aka_functions.h ${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/aka_functions.h
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.h ${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.h
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "utils.h" #include "utils.h"
#include "display.h" #include "display.h"
#include "fs.h" #include "fs.h"
#include "conf_emm.h"
const char *msin = NULL; const char *msin = NULL;
const char *usim_api_k = NULL; const char *usim_api_k = NULL;
...@@ -138,7 +139,7 @@ int parse_config_file(const char *output_dir, const char *conf_filename) { ...@@ -138,7 +139,7 @@ int parse_config_file(const char *output_dir, const char *conf_filename) {
if (rc != EXIT_SUCCESS) { if (rc != EXIT_SUCCESS) {
return EXIT_FAILURE; return EXIT_FAILURE;
} }
gen_emm_data(i, &emm_data); gen_emm_data(&emm_data);
write_emm_data(output_dir, i, &emm_data); write_emm_data(output_dir, i, &emm_data);
gen_usim_data(&usim_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){ ...@@ -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 parse_plmn_param(config_setting_t *plmn_setting, int index) {
int rc = 0; int rc = 0;
rc = config_setting_lookup_string(plmn_setting, rc = config_setting_lookup_string(plmn_setting,
...@@ -827,14 +764,6 @@ int get_plmn_index(const char * mccmnc) { ...@@ -827,14 +764,6 @@ int get_plmn_index(const char * mccmnc) {
return -1; 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() { void fill_network_record_list() {
for (int i = 0; i < plmn_nb; i++) { for (int i = 0; i < plmn_nb; i++) {
strcpy(user_network_record_list[i].fullname, strcpy(user_network_record_list[i].fullname,
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#include <libconfig.h> #include <libconfig.h>
#include "emmData.h"
#include "usim_api.h" #include "usim_api.h"
#include "userDef.h" #include "userDef.h"
...@@ -100,12 +99,10 @@ int get_config_from_file(const char *filename, config_t *config); ...@@ -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); int parse_config_file(const char *output_dir, const char *filename);
void _display_usage(void); void _display_usage(void);
void gen_emm_data(int user_id, emm_nvdata_t *emm_data);
void fill_network_record_list(void); void fill_network_record_list(void);
int parse_ue_user_param(config_setting_t *ue_setting, int user_id, user_nvdata_t *user_data); 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); 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); int write_usim_data(const char *directory, int user_id, usim_data_t *usim_data);
void gen_usim_data(usim_data_t *usim_data); void gen_usim_data(usim_data_t *usim_data);
...@@ -115,7 +112,6 @@ int _luhn(const char* cc); ...@@ -115,7 +112,6 @@ int _luhn(const char* cc);
int parse_ue_sim_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); int parse_plmn_param(config_setting_t *plmn_setting, int index);
int parse_plmns(config_setting_t *all_plmn_setting); int parse_plmns(config_setting_t *all_plmn_setting);
int get_msin_parity(const char * msin);
int get_plmn_index(const char * mccmnc); int get_plmn_index(const char * mccmnc);
int parse_ue_plmn_param(config_setting_t *ue_setting, int user_id); int parse_ue_plmn_param(config_setting_t *ue_setting, int user_id);
int fill_ucplmn(config_setting_t* setting, int use_id); int fill_ucplmn(config_setting_t* setting, int use_id);
......
#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;
}
#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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment