srsue/extnas: add a possibility to enable the external NAS interface
The new configuration section '[extnas]' allows to disable the built-in NAS implementation, and provide the interface (UNIX domain socket) to an external entity. The interface itself will be implemented in the follow up commits.
This commit is contained in:
parent
900ad92912
commit
74b2c5c711
|
@ -68,6 +68,7 @@ typedef struct {
|
||||||
usim_args_t usim;
|
usim_args_t usim;
|
||||||
rrc_args_t rrc;
|
rrc_args_t rrc;
|
||||||
std::string ue_category_str;
|
std::string ue_category_str;
|
||||||
|
nas_ext_args_t nas_ext;
|
||||||
nas_args_t nas;
|
nas_args_t nas;
|
||||||
gw_args_t gw;
|
gw_args_t gw;
|
||||||
uint32_t sync_queue_size; // Max allowed difference between PHY and Stack clocks (in TTI)
|
uint32_t sync_queue_size; // Max allowed difference between PHY and Stack clocks (in TTI)
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#include "srslte/upper/pdcp.h"
|
#include "srslte/upper/pdcp.h"
|
||||||
#include "srslte/upper/rlc.h"
|
#include "srslte/upper/rlc.h"
|
||||||
#include "upper/nas.h"
|
#include "upper/nas.h"
|
||||||
|
#include "upper/nas_ext.h"
|
||||||
#include "upper/usim.h"
|
#include "upper/usim.h"
|
||||||
|
|
||||||
#include "srslte/common/buffer_pool.h"
|
#include "srslte/common/buffer_pool.h"
|
||||||
|
|
|
@ -139,6 +139,9 @@ static int parse_args(all_args_t* args, int argc, char* argv[])
|
||||||
("nas.eia", bpo::value<string>(&args->stack.nas.eia)->default_value("1,2,3"), "List of integrity algorithms included in UE capabilities")
|
("nas.eia", bpo::value<string>(&args->stack.nas.eia)->default_value("1,2,3"), "List of integrity algorithms included in UE capabilities")
|
||||||
("nas.eea", bpo::value<string>(&args->stack.nas.eea)->default_value("0,1,2,3"), "List of ciphering algorithms included in UE capabilities")
|
("nas.eea", bpo::value<string>(&args->stack.nas.eea)->default_value("0,1,2,3"), "List of ciphering algorithms included in UE capabilities")
|
||||||
|
|
||||||
|
("extnas.enable", bpo::value<bool>(&args->stack.nas_ext.enable)->default_value(false), "Disable the built-in NAS implementation, provide external interface")
|
||||||
|
("extnas.sock_path", bpo::value<string>(&args->stack.nas_ext.sock_path)->default_value("/tmp/ue_extnas.sock"), "UNIX socket path of the external interface")
|
||||||
|
|
||||||
("pcap.enable", bpo::value<bool>(&args->stack.pcap.enable)->default_value(false), "Enable MAC packet captures for wireshark")
|
("pcap.enable", bpo::value<bool>(&args->stack.pcap.enable)->default_value(false), "Enable MAC packet captures for wireshark")
|
||||||
("pcap.filename", bpo::value<string>(&args->stack.pcap.filename)->default_value("ue.pcap"), "MAC layer capture filename")
|
("pcap.filename", bpo::value<string>(&args->stack.pcap.filename)->default_value("ue.pcap"), "MAC layer capture filename")
|
||||||
("pcap.nas_enable", bpo::value<bool>(&args->stack.pcap.nas_enable)->default_value(false), "Enable NAS packet captures for wireshark")
|
("pcap.nas_enable", bpo::value<bool>(&args->stack.pcap.nas_enable)->default_value(false), "Enable NAS packet captures for wireshark")
|
||||||
|
|
|
@ -106,9 +106,13 @@ int ue_stack_lte::init(const stack_args_t& args_, srslte::logger* logger_)
|
||||||
extif_log->set_hex_limit(args.log.extif_hex_limit);
|
extif_log->set_hex_limit(args.log.extif_hex_limit);
|
||||||
|
|
||||||
// Should we use the built-in NAS implementation
|
// Should we use the built-in NAS implementation
|
||||||
// TODO: or provide an external interface (RRCTL)?
|
if (!args.nas_ext.enable) {
|
||||||
std::unique_ptr<srsue::nas> nas_impl(new srsue::nas(&task_sched, args.nas));
|
std::unique_ptr<srsue::nas> nas_impl(new srsue::nas(&task_sched, args.nas));
|
||||||
nas = std::move(nas_impl);
|
nas = std::move(nas_impl);
|
||||||
|
} else { // ... or provide an external interface (RRCTL)?
|
||||||
|
std::unique_ptr<srsue::nas_ext> nas_impl(new srsue::nas_ext(&task_sched, args.nas_ext));
|
||||||
|
nas = std::move(nas_impl);
|
||||||
|
}
|
||||||
|
|
||||||
// Set up pcap
|
// Set up pcap
|
||||||
if (args.pcap.enable) {
|
if (args.pcap.enable) {
|
||||||
|
|
|
@ -163,6 +163,16 @@ imei = 353490069873319
|
||||||
#eia = 1,2
|
#eia = 1,2
|
||||||
#eea = 0,1,2
|
#eea = 0,1,2
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# External NAS interface configuration
|
||||||
|
#
|
||||||
|
# enable: Disable the built-in NAS implementation, provide external interface
|
||||||
|
# sock_path: UNIX socket path of the external interface
|
||||||
|
#####################################################################
|
||||||
|
[extnas]
|
||||||
|
#enable = false
|
||||||
|
#sock_path = /tmp/ue_extnas.sock
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# GW configuration
|
# GW configuration
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue