Commit e190aee7 authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Apply clang-format for AMF_APP

parent d0080142
...@@ -379,9 +379,11 @@ void amf_config::display() { ...@@ -379,9 +379,11 @@ void amf_config::display() {
Logger::config().info(" port .................: %d", n11.port); Logger::config().info(" port .................: %d", n11.port);
Logger::config().info("- NRF:"); Logger::config().info("- NRF:");
Logger::config().info(" IP addr ..............: %s", inet_ntoa(nrf_addr.ipv4_addr)); Logger::config().info(
" IP addr ..............: %s", inet_ntoa(nrf_addr.ipv4_addr));
Logger::config().info(" Port .................: %d", nrf_addr.port); Logger::config().info(" Port .................: %d", nrf_addr.port);
Logger::config().info(" Api version ..........: %s", nrf_addr.api_version.c_str()); Logger::config().info(
" Api version ..........: %s", nrf_addr.api_version.c_str());
// Logger::config().info(" HTTP2 port ............: %d", n11_http2_port); // Logger::config().info(" HTTP2 port ............: %d", n11_http2_port);
......
...@@ -36,43 +36,46 @@ ...@@ -36,43 +36,46 @@
namespace config { namespace config {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int amf_modules::load(const std::string &config_file) { int amf_modules::load(const std::string& config_file) {
Logger::amf_app().debug("\nLoad AMF module configuration file (%s)", Logger::amf_app().debug(
config_file.c_str()); "\nLoad AMF module configuration file (%s)", config_file.c_str());
Config cfg; Config cfg;
try { try {
cfg.readFile(config_file.c_str()); cfg.readFile(config_file.c_str());
} catch (const FileIOException &fioex) { } catch (const FileIOException& fioex) {
Logger::amf_app().error("I/O error while reading file %s - %s", Logger::amf_app().error(
config_file.c_str(), fioex.what()); "I/O error while reading file %s - %s", config_file.c_str(),
fioex.what());
throw; throw;
} catch (const ParseException &pex) { } catch (const ParseException& pex) {
Logger::amf_app().error("Parse error at %s:%d - %s", pex.getFile(), Logger::amf_app().error(
pex.getLine(), pex.getError()); "Parse error at %s:%d - %s", pex.getFile(), pex.getLine(),
pex.getError());
throw; throw;
} }
const Setting &root = cfg.getRoot(); const Setting& root = cfg.getRoot();
try { try {
const Setting &modules = root[MODULES_CONFIG_STRING_AMF_MODULES]; const Setting& modules = root[MODULES_CONFIG_STRING_AMF_MODULES];
} catch (const SettingNotFoundException &nfex) { } catch (const SettingNotFoundException& nfex) {
Logger::amf_app().error("%s : %s", nfex.what(), nfex.getPath()); Logger::amf_app().error("%s : %s", nfex.what(), nfex.getPath());
return -1; return -1;
} }
const Setting &modules = root[MODULES_CONFIG_STRING_AMF_MODULES]; const Setting& modules = root[MODULES_CONFIG_STRING_AMF_MODULES];
const Setting &msg = modules[MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE]; const Setting& msg = modules[MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE];
int count = msg.getLength(); int count = msg.getLength();
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
const Setting &item = msg[i]; const Setting& item = msg[i];
std::string typeOfMessage; std::string typeOfMessage;
int procedure_code; int procedure_code;
item.lookupValue(MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_NAME, item.lookupValue(
msgName); MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_NAME, msgName);
item.lookupValue( item.lookupValue(
MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_PROCEDURECODE, MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_PROCEDURECODE,
procedure_code); procedure_code);
item.lookupValue(MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_TYPEOFMSG, item.lookupValue(
typeOfMessage); MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_TYPEOFMSG,
procedureCode = (Ngap_ProcedureCode_t)procedure_code; typeOfMessage);
procedureCode = (Ngap_ProcedureCode_t) procedure_code;
if (!(typeOfMessage.compare("initialMessage"))) { if (!(typeOfMessage.compare("initialMessage"))) {
typeOfMsg = Ngap_NGAP_PDU_PR_initiatingMessage; typeOfMsg = Ngap_NGAP_PDU_PR_initiatingMessage;
} else if (!(typeOfMessage.compare("successfuloutcome"))) { } else if (!(typeOfMessage.compare("successfuloutcome"))) {
...@@ -89,8 +92,9 @@ int amf_modules::load(const std::string &config_file) { ...@@ -89,8 +92,9 @@ int amf_modules::load(const std::string &config_file) {
void amf_modules::display() { void amf_modules::display() {
Logger::config().info("======= AMF Registered Modules ======="); Logger::config().info("======= AMF Registered Modules =======");
Logger::config().info("NGAP Message Modules:"); Logger::config().info("NGAP Message Modules:");
Logger::config().info("- %s(Procedure code %d, Type of Msg %d)\n", Logger::config().info(
msgName.c_str(), procedureCode, typeOfMsg); "- %s(Procedure code %d, Type of Msg %d)\n", msgName.c_str(),
procedureCode, typeOfMsg);
} }
} // namespace config } // namespace config
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
#define MODULES_CONFIG_STRING_AMF_MODULES "MODULES" #define MODULES_CONFIG_STRING_AMF_MODULES "MODULES"
#define MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE "NGAP_MESSAGE" #define MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE "NGAP_MESSAGE"
#define MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_NAME "MSG_NAME" #define MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_NAME "MSG_NAME"
#define MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_PROCEDURECODE \ #define MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_PROCEDURECODE \
"ProcedureCode" "ProcedureCode"
#define MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_TYPEOFMSG "TypeOfMessage" #define MODULES_CONFIG_STRING_AMF_MODULES_NGAP_MESSAGE_TYPEOFMSG "TypeOfMessage"
...@@ -50,7 +50,7 @@ namespace config { ...@@ -50,7 +50,7 @@ namespace config {
class amf_modules { class amf_modules {
public: public:
int load(const std::string &config_file); int load(const std::string& config_file);
void display(); void display();
void makeModulesAlive(); void makeModulesAlive();
......
This diff is collapsed.
...@@ -348,7 +348,8 @@ void amf_n11::send_pdu_session_update_sm_context_request( ...@@ -348,7 +348,8 @@ void amf_n11::send_pdu_session_update_sm_context_request(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n11::handle_pdu_session_initial_request( void amf_n11::handle_pdu_session_initial_request(
std::string supi, std::shared_ptr<pdu_session_context> psc, std::string supi, std::shared_ptr<pdu_session_context> psc,
std::string smf_addr, std::string smf_api_version, bstring sm_msg, std::string dnn) { std::string smf_addr, std::string smf_api_version, bstring sm_msg,
std::string dnn) {
Logger::amf_n11().debug( Logger::amf_n11().debug(
"Handle PDU Session Establishment Request (SUPI %s, PDU Session ID %d)", "Handle PDU Session Establishment Request (SUPI %s, PDU Session ID %d)",
supi.c_str(), psc.get()->pdu_session_id); supi.c_str(), psc.get()->pdu_session_id);
...@@ -437,7 +438,8 @@ void amf_n11::set_supi_to_pdu_ctx( ...@@ -437,7 +438,8 @@ void amf_n11::set_supi_to_pdu_ctx(
// SMF selection // SMF selection
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool amf_n11::smf_selection_from_configuration(std::string& smf_addr, std::string& smf_api_version) { bool amf_n11::smf_selection_from_configuration(
std::string& smf_addr, std::string& smf_api_version) {
for (int i = 0; i < amf_cfg.smf_pool.size(); i++) { for (int i = 0; i < amf_cfg.smf_pool.size(); i++) {
if (amf_cfg.smf_pool[i].selected) { if (amf_cfg.smf_pool[i].selected) {
smf_addr = amf_cfg.smf_pool[i].ipv4 + ":" + amf_cfg.smf_pool[i].port; smf_addr = amf_cfg.smf_pool[i].ipv4 + ":" + amf_cfg.smf_pool[i].port;
...@@ -449,7 +451,8 @@ bool amf_n11::smf_selection_from_configuration(std::string& smf_addr, std::strin ...@@ -449,7 +451,8 @@ bool amf_n11::smf_selection_from_configuration(std::string& smf_addr, std::strin
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool amf_n11::smf_selection_from_context(std::string& smf_addr, std::string& smf_api_version) { bool amf_n11::smf_selection_from_context(
std::string& smf_addr, std::string& smf_api_version) {
// TODO: // TODO:
} }
......
...@@ -46,7 +46,8 @@ class amf_n11 { ...@@ -46,7 +46,8 @@ class amf_n11 {
void handle_itti_message(itti_smf_services_consumer&); void handle_itti_message(itti_smf_services_consumer&);
void handle_pdu_session_initial_request( void handle_pdu_session_initial_request(
std::string supi, std::shared_ptr<pdu_session_context> psc, std::string supi, std::shared_ptr<pdu_session_context> psc,
std::string smf_addr, std::string smf_api_version, bstring sm_msg, std::string dnn); std::string smf_addr, std::string smf_api_version, bstring sm_msg,
std::string dnn);
void handle_itti_message(itti_nsmf_pdusession_update_sm_context& itti_msg); void handle_itti_message(itti_nsmf_pdusession_update_sm_context& itti_msg);
void handle_itti_message(itti_nsmf_pdusession_release_sm_context& itti_msg); void handle_itti_message(itti_nsmf_pdusession_release_sm_context& itti_msg);
void handle_itti_message(itti_pdu_session_resource_setup_response& itti_msg); void handle_itti_message(itti_pdu_session_resource_setup_response& itti_msg);
...@@ -64,8 +65,10 @@ class amf_n11 { ...@@ -64,8 +65,10 @@ class amf_n11 {
const std::string& supi, std::shared_ptr<pdu_session_context> psc); const std::string& supi, std::shared_ptr<pdu_session_context> psc);
std::map<uint8_t, std::string> pduid2supi; std::map<uint8_t, std::string> pduid2supi;
bool smf_selection_from_configuration(std::string& smf_addr, std::string& smf_api_version); bool smf_selection_from_configuration(
bool smf_selection_from_context(std::string& smf_addr, std::string& smf_api_version); std::string& smf_addr, std::string& smf_api_version);
bool smf_selection_from_context(
std::string& smf_addr, std::string& smf_api_version);
void handle_post_sm_context_response_error_400(); void handle_post_sm_context_response_error_400();
void handle_post_sm_context_response_error( void handle_post_sm_context_response_error(
long code, std::string cause, bstring n1sm, std::string supi, long code, std::string cause, bstring n1sm, std::string supi,
......
This diff is collapsed.
...@@ -43,34 +43,34 @@ namespace amf_application { ...@@ -43,34 +43,34 @@ namespace amf_application {
class amf_n2 : public ngap::ngap_app { class amf_n2 : public ngap::ngap_app {
public: public:
amf_n2(const std::string &address, const uint16_t port_num); amf_n2(const std::string& address, const uint16_t port_num);
~amf_n2(); ~amf_n2();
void handle_itti_message(itti_new_sctp_association &new_assoc); void handle_itti_message(itti_new_sctp_association& new_assoc);
void handle_itti_message(itti_ng_setup_request &ngsetupreq); void handle_itti_message(itti_ng_setup_request& ngsetupreq);
void handle_itti_message(itti_initial_ue_message &init_ue_msg); void handle_itti_message(itti_initial_ue_message& init_ue_msg);
void handle_itti_message(itti_ul_nas_transport &ul_nas_transport); void handle_itti_message(itti_ul_nas_transport& ul_nas_transport);
void handle_itti_message(itti_dl_nas_transport &dl_nas_transport); void handle_itti_message(itti_dl_nas_transport& dl_nas_transport);
void handle_itti_message(itti_initial_context_setup_request &itti_msg); void handle_itti_message(itti_initial_context_setup_request& itti_msg);
void handle_itti_message(itti_pdu_session_resource_setup_request &itti_msg); void handle_itti_message(itti_pdu_session_resource_setup_request& itti_msg);
void handle_itti_message(itti_ue_context_release_request &itti_msg); void handle_itti_message(itti_ue_context_release_request& itti_msg);
void handle_itti_message(itti_ue_radio_capability_indication &itti_msg); void handle_itti_message(itti_ue_radio_capability_indication& itti_msg);
void handle_itti_message(itti_ue_context_release_command &itti_msg); void handle_itti_message(itti_ue_context_release_command& itti_msg);
void handle_itti_message(itti_pdu_session_resource_release_command &itti_msg); void handle_itti_message(itti_pdu_session_resource_release_command& itti_msg);
void handle_itti_message(itti_handover_required &itti_msg); void handle_itti_message(itti_handover_required& itti_msg);
void handle_itti_message(itti_handover_request_Ack &itti_msg); void handle_itti_message(itti_handover_request_Ack& itti_msg);
void handle_itti_message(itti_handover_notify &itti_msg); void handle_itti_message(itti_handover_notify& itti_msg);
void handle_itti_message(itti_uplinkranstatsutransfer &itti_msg); void handle_itti_message(itti_uplinkranstatsutransfer& itti_msg);
bool verifyPlmn(std::vector<SupportedItem_t> list); bool verifyPlmn(std::vector<SupportedItem_t> list);
std::vector<SupportedItem_t> get_common_plmn( std::vector<SupportedItem_t> get_common_plmn(
std::vector<SupportedItem_t> list); std::vector<SupportedItem_t> list);
std::shared_ptr<ue_ngap_context> ran_ue_id_2_ue_ngap_context( std::shared_ptr<ue_ngap_context> ran_ue_id_2_ue_ngap_context(
const uint32_t &ran_ue_ngap_id) const; const uint32_t& ran_ue_ngap_id) const;
bool is_ran_ue_id_2_ue_ngap_context(const uint32_t &ran_ue_ngap_id) const; bool is_ran_ue_id_2_ue_ngap_context(const uint32_t& ran_ue_ngap_id) const;
void set_ran_ue_ngap_id_2_ue_ngap_context( void set_ran_ue_ngap_id_2_ue_ngap_context(
const uint32_t &ran_ue_ngap_id, std::shared_ptr<ue_ngap_context> unc); const uint32_t& ran_ue_ngap_id, std::shared_ptr<ue_ngap_context> unc);
private: private:
std::map<uint32_t, std::shared_ptr<ue_ngap_context>> std::map<uint32_t, std::shared_ptr<ue_ngap_context>>
......
...@@ -79,7 +79,7 @@ void statistics::display() { ...@@ -79,7 +79,7 @@ void statistics::display() {
"UE NGAP ID | AMF UE ID | PLMN |Cell ID|"); "UE NGAP ID | AMF UE ID | PLMN |Cell ID|");
int i = 0; int i = 0;
for (auto const &ue : ue_infos) { for (auto const& ue : ue_infos) {
Logger::amf_app().info( Logger::amf_app().info(
"|%7d|%22s|%18s|%15s|%16d|%11d|%9s|%7d|", i + 1, "|%7d|%22s|%18s|%15s|%16d|%11d|%9s|%7d|", i + 1,
ue.second.registerStatus.c_str(), ue.second.imsi.c_str(), ue.second.registerStatus.c_str(), ue.second.imsi.c_str(),
...@@ -96,12 +96,12 @@ void statistics::display() { ...@@ -96,12 +96,12 @@ void statistics::display() {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
statistics::statistics() { statistics::statistics() {
gNB_connected = 0; gNB_connected = 0;
UE_connected = 0; UE_connected = 0;
UE_registred = 0; UE_registred = 0;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void statistics::update_ue_info(const ue_info_t &ue_info) { void statistics::update_ue_info(const ue_info_t& ue_info) {
if (!(ue_info.imsi.size() > 0)) { if (!(ue_info.imsi.size() > 0)) {
Logger::amf_app().warn("Update UE Info with invalid IMSI"); Logger::amf_app().warn("Update UE Info with invalid IMSI");
} }
...@@ -109,28 +109,29 @@ void statistics::update_ue_info(const ue_info_t &ue_info) { ...@@ -109,28 +109,29 @@ void statistics::update_ue_info(const ue_info_t &ue_info) {
if (ue_infos.count(ue_info.imsi) > 0) { if (ue_infos.count(ue_info.imsi) > 0) {
ue_infos.erase(ue_info.imsi); ue_infos.erase(ue_info.imsi);
ue_infos.insert(std::pair<std::string, ue_info_t>(ue_info.imsi, ue_info)); ue_infos.insert(std::pair<std::string, ue_info_t>(ue_info.imsi, ue_info));
Logger::amf_app().debug("Update UE Info (IMSI %s) success", Logger::amf_app().debug(
ue_info.imsi.c_str()); "Update UE Info (IMSI %s) success", ue_info.imsi.c_str());
} else { } else {
ue_infos.insert(std::pair<std::string, ue_info_t>(ue_info.imsi, ue_info)); ue_infos.insert(std::pair<std::string, ue_info_t>(ue_info.imsi, ue_info));
Logger::amf_app().debug("Add UE Info (IMSI %s) success", Logger::amf_app().debug(
ue_info.imsi.c_str()); "Add UE Info (IMSI %s) success", ue_info.imsi.c_str());
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void statistics::update_5gmm_state(const std::string &imsi, void statistics::update_5gmm_state(
const std::string &state) { const std::string& imsi, const std::string& state) {
if (ue_infos.count(imsi) > 0) { if (ue_infos.count(imsi) > 0) {
ue_info_t ue_info = ue_infos.at(imsi); ue_info_t ue_info = ue_infos.at(imsi);
ue_info.registerStatus = state; ue_info.registerStatus = state;
ue_infos.erase(ue_info.imsi); ue_infos.erase(ue_info.imsi);
ue_infos.insert(std::pair<std::string, ue_info_t>(imsi, ue_info)); ue_infos.insert(std::pair<std::string, ue_info_t>(imsi, ue_info));
Logger::amf_app().debug("Update UE State (IMSI %s, State %s) success", Logger::amf_app().debug(
imsi.c_str(), state.c_str()); "Update UE State (IMSI %s, State %s) success", imsi.c_str(),
state.c_str());
} else { } else {
Logger::amf_app().warn("Update UE State (IMSI %s), UE does not exist!", Logger::amf_app().warn(
imsi.c_str()); "Update UE State (IMSI %s), UE does not exist!", imsi.c_str());
} }
} }
......
...@@ -63,8 +63,8 @@ class statistics { ...@@ -63,8 +63,8 @@ class statistics {
void display(); void display();
statistics(); statistics();
~statistics(); ~statistics();
void update_ue_info(const ue_info_t &ue_info); void update_ue_info(const ue_info_t& ue_info);
void update_5gmm_state(const std::string &imsi, const std::string &state); void update_5gmm_state(const std::string& imsi, const std::string& state);
public: public:
uint32_t gNB_connected; uint32_t gNB_connected;
......
...@@ -38,9 +38,9 @@ extern amf_config amf_cfg; ...@@ -38,9 +38,9 @@ extern amf_config amf_cfg;
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool amf_n1::get_mysql_auth_info( bool amf_n1::get_mysql_auth_info(
std::string imsi, std::string imsi,
mysql_auth_info_t mysql_auth_info_t&
&resp) { // openair-cn/tree/v0.5.0/src/oai_hss/db/db_connector.c resp) { // openair-cn/tree/v0.5.0/src/oai_hss/db/db_connector.c
MYSQL_RES *res; MYSQL_RES* res;
MYSQL_ROW row; MYSQL_ROW row;
std::string query; std::string query;
...@@ -54,8 +54,8 @@ bool amf_n1::get_mysql_auth_info( ...@@ -54,8 +54,8 @@ bool amf_n1::get_mysql_auth_info(
pthread_mutex_lock(&db_desc->db_cs_mutex); pthread_mutex_lock(&db_desc->db_cs_mutex);
if (mysql_query(db_desc->db_conn, query.c_str())) { if (mysql_query(db_desc->db_conn, query.c_str())) {
pthread_mutex_unlock(&db_desc->db_cs_mutex); pthread_mutex_unlock(&db_desc->db_cs_mutex);
Logger::amf_n1().error("Query execution failed: %s\n", Logger::amf_n1().error(
mysql_error(db_desc->db_conn)); "Query execution failed: %s\n", mysql_error(db_desc->db_conn));
return false; return false;
} }
res = mysql_store_result(db_desc->db_conn); res = mysql_store_result(db_desc->db_conn);
...@@ -71,13 +71,13 @@ bool amf_n1::get_mysql_auth_info( ...@@ -71,13 +71,13 @@ bool amf_n1::get_mysql_auth_info(
} }
memcpy(resp.key, row[0], KEY_LENGTH); memcpy(resp.key, row[0], KEY_LENGTH);
uint64_t sqn = 0; uint64_t sqn = 0;
sqn = atoll(row[1]); sqn = atoll(row[1]);
resp.sqn[0] = (sqn & (255UL << 40)) >> 40; resp.sqn[0] = (sqn & (255UL << 40)) >> 40;
resp.sqn[1] = (sqn & (255UL << 32)) >> 32; resp.sqn[1] = (sqn & (255UL << 32)) >> 32;
resp.sqn[2] = (sqn & (255UL << 24)) >> 24; resp.sqn[2] = (sqn & (255UL << 24)) >> 24;
resp.sqn[3] = (sqn & (255UL << 16)) >> 16; resp.sqn[3] = (sqn & (255UL << 16)) >> 16;
resp.sqn[4] = (sqn & (255UL << 8)) >> 8; resp.sqn[4] = (sqn & (255UL << 8)) >> 8;
resp.sqn[5] = (sqn & 0xff); resp.sqn[5] = (sqn & 0xff);
memcpy(resp.rand, row[2], RAND_LENGTH); memcpy(resp.rand, row[2], RAND_LENGTH);
memcpy(resp.opc, row[3], KEY_LENGTH); memcpy(resp.opc, row[3], KEY_LENGTH);
} }
...@@ -88,24 +88,25 @@ bool amf_n1::get_mysql_auth_info( ...@@ -88,24 +88,25 @@ bool amf_n1::get_mysql_auth_info(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool amf_n1::connect_to_mysql() { bool amf_n1::connect_to_mysql() {
const int mysql_reconnect_val = 1; const int mysql_reconnect_val = 1;
db_desc = (database_t *)calloc(1, sizeof(database_t)); db_desc = (database_t*) calloc(1, sizeof(database_t));
if (!db_desc) { if (!db_desc) {
Logger::amf_n1().error( Logger::amf_n1().error(
"An error occurs when allocating memory for DB_DESC"); "An error occurs when allocating memory for DB_DESC");
return false; return false;
} }
pthread_mutex_init(&db_desc->db_cs_mutex, NULL); pthread_mutex_init(&db_desc->db_cs_mutex, NULL);
db_desc->server = amf_cfg.auth_para.mysql_server; db_desc->server = amf_cfg.auth_para.mysql_server;
db_desc->user = amf_cfg.auth_para.mysql_user; db_desc->user = amf_cfg.auth_para.mysql_user;
db_desc->password = amf_cfg.auth_para.mysql_pass; db_desc->password = amf_cfg.auth_para.mysql_pass;
db_desc->database = amf_cfg.auth_para.mysql_db; db_desc->database = amf_cfg.auth_para.mysql_db;
db_desc->db_conn = mysql_init(NULL); db_desc->db_conn = mysql_init(NULL);
mysql_options(db_desc->db_conn, MYSQL_OPT_RECONNECT, &mysql_reconnect_val); mysql_options(db_desc->db_conn, MYSQL_OPT_RECONNECT, &mysql_reconnect_val);
if (!mysql_real_connect(db_desc->db_conn, db_desc->server.c_str(), if (!mysql_real_connect(
db_desc->user.c_str(), db_desc->password.c_str(), db_desc->db_conn, db_desc->server.c_str(), db_desc->user.c_str(),
db_desc->database.c_str(), 0, NULL, 0)) { db_desc->password.c_str(), db_desc->database.c_str(), 0, NULL, 0)) {
Logger::amf_n1().error("An error occurred while connecting to db: %s", Logger::amf_n1().error(
mysql_error(db_desc->db_conn)); "An error occurred while connecting to db: %s",
mysql_error(db_desc->db_conn));
mysql_thread_end(); mysql_thread_end();
return false; return false;
} }
...@@ -114,12 +115,12 @@ bool amf_n1::connect_to_mysql() { ...@@ -114,12 +115,12 @@ bool amf_n1::connect_to_mysql() {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p, void amf_n1::mysql_push_rand_sqn(
uint8_t *sqn) { std::string imsi, uint8_t* rand_p, uint8_t* sqn) {
int status = 0; int status = 0;
MYSQL_RES *res; MYSQL_RES* res;
char query[1000]; char query[1000];
int query_length = 0; int query_length = 0;
uint64_t sqn_decimal = 0; uint64_t sqn_decimal = 0;
if (!db_desc->db_conn) { if (!db_desc->db_conn) {
Logger::amf_n1().error("Cannot connect to MySQL DB"); Logger::amf_n1().error("Cannot connect to MySQL DB");
...@@ -129,8 +130,8 @@ void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p, ...@@ -129,8 +130,8 @@ void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p,
Logger::amf_n1().error("Need sqn and rand"); Logger::amf_n1().error("Need sqn and rand");
return; return;
} }
sqn_decimal = ((uint64_t)sqn[0] << 40) | ((uint64_t)sqn[1] << 32) | sqn_decimal = ((uint64_t) sqn[0] << 40) | ((uint64_t) sqn[1] << 32) |
((uint64_t)sqn[2] << 24) | (sqn[3] << 16) | (sqn[4] << 8) | ((uint64_t) sqn[2] << 24) | (sqn[3] << 16) | (sqn[4] << 8) |
sqn[5]; sqn[5];
query_length = sprintf(query, "UPDATE `users` SET `rand`=UNHEX('"); query_length = sprintf(query, "UPDATE `users` SET `rand`=UNHEX('");
for (int i = 0; i < RAND_LENGTH; i++) { for (int i = 0; i < RAND_LENGTH; i++) {
...@@ -144,8 +145,8 @@ void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p, ...@@ -144,8 +145,8 @@ void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p,
pthread_mutex_lock(&db_desc->db_cs_mutex); pthread_mutex_lock(&db_desc->db_cs_mutex);
if (mysql_query(db_desc->db_conn, query)) { if (mysql_query(db_desc->db_conn, query)) {
pthread_mutex_unlock(&db_desc->db_cs_mutex); pthread_mutex_unlock(&db_desc->db_cs_mutex);
Logger::amf_n1().error("Query execution failed: %s", Logger::amf_n1().error(
mysql_error(db_desc->db_conn)); "Query execution failed: %s", mysql_error(db_desc->db_conn));
return; return;
} }
do { do {
...@@ -154,8 +155,9 @@ void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p, ...@@ -154,8 +155,9 @@ void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p,
mysql_free_result(res); mysql_free_result(res);
} else { } else {
if (mysql_field_count(db_desc->db_conn) == 0) { if (mysql_field_count(db_desc->db_conn) == 0) {
Logger::amf_n1().error("[MySQL] %lld rows affected", Logger::amf_n1().error(
mysql_affected_rows(db_desc->db_conn)); "[MySQL] %lld rows affected",
mysql_affected_rows(db_desc->db_conn));
} else { /* some error occurred */ } else { /* some error occurred */
Logger::amf_n1().error("Could not retrieve result set"); Logger::amf_n1().error("Could not retrieve result set");
break; break;
...@@ -171,22 +173,22 @@ void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p, ...@@ -171,22 +173,22 @@ void amf_n1::mysql_push_rand_sqn(std::string imsi, uint8_t *rand_p,
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n1::mysql_increment_sqn(std::string imsi) { void amf_n1::mysql_increment_sqn(std::string imsi) {
int status; int status;
MYSQL_RES *res; MYSQL_RES* res;
char query[1000]; char query[1000];
if (db_desc->db_conn == NULL) { if (db_desc->db_conn == NULL) {
Logger::amf_n1().error("Cannot connect to MySQL DB"); Logger::amf_n1().error("Cannot connect to MySQL DB");
return; return;
} }
sprintf(query, sprintf(
"UPDATE `users` SET `sqn` = `sqn` + 32 WHERE `users`.`imsi`='%s'", query, "UPDATE `users` SET `sqn` = `sqn` + 32 WHERE `users`.`imsi`='%s'",
imsi.c_str()); imsi.c_str());
pthread_mutex_lock(&db_desc->db_cs_mutex); pthread_mutex_lock(&db_desc->db_cs_mutex);
if (mysql_query(db_desc->db_conn, query)) { if (mysql_query(db_desc->db_conn, query)) {
pthread_mutex_unlock(&db_desc->db_cs_mutex); pthread_mutex_unlock(&db_desc->db_cs_mutex);
Logger::amf_n1().error("Query execution failed: %s", Logger::amf_n1().error(
mysql_error(db_desc->db_conn)); "Query execution failed: %s", mysql_error(db_desc->db_conn));
return; return;
} }
do { do {
...@@ -195,8 +197,9 @@ void amf_n1::mysql_increment_sqn(std::string imsi) { ...@@ -195,8 +197,9 @@ void amf_n1::mysql_increment_sqn(std::string imsi) {
mysql_free_result(res); mysql_free_result(res);
} else { } else {
if (mysql_field_count(db_desc->db_conn) == 0) { if (mysql_field_count(db_desc->db_conn) == 0) {
Logger::amf_n1().error("[MySQL] %lld rows affected", Logger::amf_n1().error(
mysql_affected_rows(db_desc->db_conn)); "[MySQL] %lld rows affected",
mysql_affected_rows(db_desc->db_conn));
} else { } else {
Logger::amf_n1().error("Could not retrieve result set"); Logger::amf_n1().error("Could not retrieve result set");
break; break;
......
...@@ -45,7 +45,7 @@ typedef struct { ...@@ -45,7 +45,7 @@ typedef struct {
typedef struct { typedef struct {
// mysql reference connector object // mysql reference connector object
MYSQL *db_conn; MYSQL* db_conn;
std::string server; std::string server;
std::string user; std::string user;
std::string password; std::string password;
......
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