mirror of https://github.com/PentHertz/srsLTE.git
Added TUN SGi interface to SP-GW.
This commit is contained in:
parent
eac3ee26c1
commit
f9b2c6434a
|
@ -68,6 +68,7 @@ private:
|
||||||
bool m_running;
|
bool m_running;
|
||||||
srslte::byte_buffer_pool *m_pool;
|
srslte::byte_buffer_pool *m_pool;
|
||||||
|
|
||||||
|
bool m_if_up;
|
||||||
int m_sgi_if;
|
int m_sgi_if;
|
||||||
int m_sgi_sock;
|
int m_sgi_sock;
|
||||||
/*Logs*/
|
/*Logs*/
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "srslte/common/bcd_helpers.h"
|
#include "srslte/common/bcd_helpers.h"
|
||||||
#include "mme/mme.h"
|
#include "mme/mme.h"
|
||||||
#include "hss/hss.h"
|
#include "hss/hss.h"
|
||||||
|
#include "spgw/spgw.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace srsepc;
|
using namespace srsepc;
|
||||||
|
@ -49,9 +50,10 @@ typedef struct {
|
||||||
|
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
mme_args_t mme_args;
|
mme_args_t mme_args;
|
||||||
hss_args_t hss_args;
|
hss_args_t hss_args;
|
||||||
log_args_t log_args;
|
spgw_args_t spgw_args;
|
||||||
|
log_args_t log_args;
|
||||||
}all_args_t;
|
}all_args_t;
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
@ -197,6 +199,11 @@ main (int argc,char * argv[] )
|
||||||
hss_log.init("HSS ",logger);
|
hss_log.init("HSS ",logger);
|
||||||
hss_log.set_level(srslte::LOG_LEVEL_DEBUG);
|
hss_log.set_level(srslte::LOG_LEVEL_DEBUG);
|
||||||
hss_log.set_hex_limit(32);
|
hss_log.set_hex_limit(32);
|
||||||
|
|
||||||
|
srslte::log_filter spgw_log;
|
||||||
|
spgw_log.init("SPGW",logger);
|
||||||
|
spgw_log.set_level(srslte::LOG_LEVEL_DEBUG);
|
||||||
|
spgw_log.set_hex_limit(32);
|
||||||
|
|
||||||
mme *mme = mme::get_instance();
|
mme *mme = mme::get_instance();
|
||||||
if (mme->init(&args.mme_args, &s1ap_log)) {
|
if (mme->init(&args.mme_args, &s1ap_log)) {
|
||||||
|
@ -209,15 +216,24 @@ main (int argc,char * argv[] )
|
||||||
cout << "Error initializing HSS" << endl;
|
cout << "Error initializing HSS" << endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spgw *spgw = spgw::get_instance();
|
||||||
|
if (spgw->init(&args.spgw_args,&spgw_log)) {
|
||||||
|
cout << "Error initializing SP-GW" << endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
mme->start();
|
mme->start();
|
||||||
|
spgw->start();
|
||||||
while(running) {
|
while(running) {
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
mme->stop();
|
mme->stop();
|
||||||
mme->cleanup();
|
mme->cleanup();
|
||||||
|
spgw->stop();
|
||||||
cout << "--- exiting ---" << endl;
|
spgw->cleanup();
|
||||||
|
|
||||||
|
cout << std::endl <<"--- exiting ---" << endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,8 @@ spgw* spgw::m_instance = NULL;
|
||||||
boost::mutex spgw_instance_mutex;
|
boost::mutex spgw_instance_mutex;
|
||||||
|
|
||||||
spgw::spgw():
|
spgw::spgw():
|
||||||
m_running(false)
|
m_running(false),
|
||||||
|
m_if_up(false)
|
||||||
{
|
{
|
||||||
m_pool = srslte::byte_buffer_pool::get_instance();
|
m_pool = srslte::byte_buffer_pool::get_instance();
|
||||||
return;
|
return;
|
||||||
|
@ -92,6 +93,13 @@ spgw::stop()
|
||||||
m_running = false;
|
m_running = false;
|
||||||
thread_cancel();
|
thread_cancel();
|
||||||
wait_thread_finish();
|
wait_thread_finish();
|
||||||
|
|
||||||
|
//Clean up interface
|
||||||
|
if(m_if_up)
|
||||||
|
{
|
||||||
|
close(m_sgi_if);
|
||||||
|
close(m_sgi_sock);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -114,6 +122,12 @@ spgw::init_sgi_if()
|
||||||
char dev[IFNAMSIZ] = "srs_spgw_sgi";
|
char dev[IFNAMSIZ] = "srs_spgw_sgi";
|
||||||
struct ifreq ifr;
|
struct ifreq ifr;
|
||||||
|
|
||||||
|
if(m_if_up)
|
||||||
|
{
|
||||||
|
return(srslte::ERROR_ALREADY_STARTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Construct the TUN device
|
// Construct the TUN device
|
||||||
m_sgi_if = open("/dev/net/tun", O_RDWR);
|
m_sgi_if = open("/dev/net/tun", O_RDWR);
|
||||||
m_spgw_log->info("TUN file descriptor = %d\n", m_sgi_if);
|
m_spgw_log->info("TUN file descriptor = %d\n", m_sgi_if);
|
||||||
|
@ -149,10 +163,8 @@ spgw::init_sgi_if()
|
||||||
return(srslte::ERROR_CANT_START);
|
return(srslte::ERROR_CANT_START);
|
||||||
}
|
}
|
||||||
|
|
||||||
//if_up = true;
|
m_if_up = true;
|
||||||
|
|
||||||
return(srslte::ERROR_NONE);
|
return(srslte::ERROR_NONE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} //namespace srsepc
|
} //namespace srsepc
|
||||||
|
|
Loading…
Reference in New Issue