mirror of https://github.com/PentHertz/srsLTE.git
enb: add bind address for s1ap connection (#128)
add s1c_bind_addr config option to specify the local bind address used for S1AP connections instead of using the GTP address. This allows operation on setups with split S1U and S1C networks.
This commit is contained in:
parent
50742195b5
commit
23cc0ab011
|
@ -25,12 +25,12 @@ tac = 0x0007
|
|||
mcc = 001
|
||||
mnc = 01
|
||||
mme_addr = 127.0.1.100
|
||||
gtp_bind_addr = 127.0.0.1
|
||||
gtp_bind_addr = 127.0.1.1
|
||||
s1c_bind_addr = 127.0.1.1
|
||||
n_prb = 50
|
||||
#tm = 4
|
||||
#nof_ports = 2
|
||||
|
||||
|
||||
#####################################################################
|
||||
# eNB configuration files
|
||||
#
|
||||
|
|
|
@ -49,6 +49,7 @@ typedef struct {
|
|||
uint16_t mnc; // BCD-coded with 0xF filler
|
||||
std::string mme_addr;
|
||||
std::string gtp_bind_addr;
|
||||
std::string s1c_bind_addr;
|
||||
std::string enb_name;
|
||||
}s1ap_args_t;
|
||||
|
||||
|
|
|
@ -77,6 +77,7 @@ void parse_args(all_args_t *args, int argc, char* argv[]) {
|
|||
("enb.mnc", bpo::value<string>(&mnc)->default_value("01"), "Mobile Network Code")
|
||||
("enb.mme_addr", bpo::value<string>(&args->enb.s1ap.mme_addr)->default_value("127.0.0.1"),"IP address of MME for S1 connnection")
|
||||
("enb.gtp_bind_addr", bpo::value<string>(&args->enb.s1ap.gtp_bind_addr)->default_value("192.168.3.1"), "Local IP address to bind for GTP connection")
|
||||
("enb.s1c_bind_addr", bpo::value<string>(&args->enb.s1ap.s1c_bind_addr)->default_value("192.168.3.1"), "Local IP address to bind for S1AP connection")
|
||||
("enb.phy_cell_id", bpo::value<uint32_t>(&args->enb.pci)->default_value(0), "Physical Cell Identity (PCI)")
|
||||
("enb.n_prb", bpo::value<uint32_t>(&args->enb.n_prb)->default_value(25), "Number of PRB")
|
||||
("enb.nof_ports", bpo::value<uint32_t>(&args->enb.nof_ports)->default_value(1), "Number of ports")
|
||||
|
|
|
@ -274,8 +274,8 @@ bool s1ap::connect_mme()
|
|||
memset(&local_addr, 0, sizeof(struct sockaddr_in));
|
||||
local_addr.sin_family = ADDR_FAMILY;
|
||||
local_addr.sin_port = 0; // Any local port will do
|
||||
if(inet_pton(AF_INET, args.gtp_bind_addr.c_str(), &(local_addr.sin_addr)) != 1) {
|
||||
s1ap_log->error("Error converting IP address (%s) to sockaddr_in structure\n", args.gtp_bind_addr.c_str());
|
||||
if(inet_pton(AF_INET, args.s1c_bind_addr.c_str(), &(local_addr.sin_addr)) != 1) {
|
||||
s1ap_log->error("Error converting IP address (%s) to sockaddr_in structure\n", args.s1c_bind_addr.c_str());
|
||||
return false;
|
||||
}
|
||||
bind(socket_fd, (struct sockaddr *)&local_addr, sizeof(local_addr));
|
||||
|
|
Loading…
Reference in New Issue