From 103361deb97cd192450686335373170a3dd7fa99 Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Tue, 28 Nov 2017 17:52:57 +0000 Subject: [PATCH] Fixed SPGW initialization bug. --- lib/src/asn1/gtpc.cc | 2 +- srsepc/hdr/mme/mme.h | 1 + srsepc/hdr/mme/mme_gtpc.h | 2 +- srsepc/src/mme/mme.cc | 14 ++++++++++++-- srsepc/src/mme/mme_gtpc.cc | 4 +++- srsepc/src/spgw/spgw.cc | 2 +- 6 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/src/asn1/gtpc.cc b/lib/src/asn1/gtpc.cc index d5c7320de..ac0116840 100644 --- a/lib/src/asn1/gtpc.cc +++ b/lib/src/asn1/gtpc.cc @@ -31,7 +31,7 @@ namespace srslte{ int -gtpc_pack_create_session_request(gtpc_create_session_request_t, srslte::byte_buffer_t) +gtpc_pack_create_session_request(struct gtpc_create_session_request *cs_req, srslte::byte_buffer_t) { //FIXME return 0; diff --git a/srsepc/hdr/mme/mme.h b/srsepc/hdr/mme/mme.h index 555d39d58..6016ebb75 100644 --- a/srsepc/hdr/mme/mme.h +++ b/srsepc/hdr/mme/mme.h @@ -77,6 +77,7 @@ private: virtual ~mme(); static mme *m_instance; s1ap *m_s1ap; + mme_gtpc *m_mme_gtpc; bool m_running; srslte::byte_buffer_pool *m_pool; diff --git a/srsepc/hdr/mme/mme_gtpc.h b/srsepc/hdr/mme/mme_gtpc.h index db886f137..3b8ed3901 100644 --- a/srsepc/hdr/mme/mme_gtpc.h +++ b/srsepc/hdr/mme/mme_gtpc.h @@ -43,7 +43,7 @@ public: static mme_gtpc* get_instance(void); static void cleanup(void); - void init(); + bool init(); uint64_t get_new_ctrl_teid(); void send_create_session_request(uint64_t imsi, uint32_t mme_s1ap_id); diff --git a/srsepc/src/mme/mme.cc b/srsepc/src/mme/mme.cc index 443ef84b3..07016b66d 100644 --- a/srsepc/src/mme/mme.cc +++ b/srsepc/src/mme/mme.cc @@ -73,6 +73,9 @@ int mme::init(mme_args_t* args, srslte::log_filter *s1ap_log) { + /*Init logger*/ + m_s1ap_log = s1ap_log; + /*Init S1AP*/ m_s1ap = s1ap::get_instance(); if(m_s1ap->init(args->s1ap_args, s1ap_log)){ @@ -80,8 +83,15 @@ mme::init(mme_args_t* args, srslte::log_filter *s1ap_log) exit(-1); } - /*Init logger*/ - m_s1ap_log = s1ap_log; + /*Init GTP-C*/ + m_mme_gtpc = mme_gtpc::get_instance(); + if(!m_mme_gtpc->init()) + { + m_s1ap_log->console("Error initializing GTP-C\n"); + exit(-1); + } + + /*Log successful initialization*/ m_s1ap_log->info("MME Initialized. MCC: %d, MNC: %d\n",args->s1ap_args.mcc, args->s1ap_args.mnc); m_s1ap_log->console("MME Initialized. \n"); return 0; diff --git a/srsepc/src/mme/mme_gtpc.cc b/srsepc/src/mme/mme_gtpc.cc index 58c1d3ef2..7e5c87d7b 100644 --- a/srsepc/src/mme/mme_gtpc.cc +++ b/srsepc/src/mme/mme_gtpc.cc @@ -65,12 +65,14 @@ mme_gtpc::cleanup(void) } -void +bool mme_gtpc::init() { m_s1ap = s1ap::get_instance(); m_mme_gtpc_ip = inet_addr("127.0.0.1");//FIXME At the moment, the GTP-C messages are not sent over the wire. So this parameter is not used. m_spgw = spgw::get_instance(); + + return true; } uint64_t diff --git a/srsepc/src/spgw/spgw.cc b/srsepc/src/spgw/spgw.cc index 5c1675ef9..a9e833b18 100644 --- a/srsepc/src/spgw/spgw.cc +++ b/srsepc/src/spgw/spgw.cc @@ -51,7 +51,6 @@ spgw::spgw(): m_next_ctrl_teid(1), m_next_user_teid(1) { - m_pool = srslte::byte_buffer_pool::get_instance(); return; } @@ -84,6 +83,7 @@ int spgw::init(spgw_args_t* args, srslte::log_filter *spgw_log) { srslte::error_t err; + m_pool = srslte::byte_buffer_pool::get_instance(); //Init log m_spgw_log = spgw_log;