libbsc: Create pcu-socket only as specified in config file
Since commit b4999b60d4
we created PCU
sockets at hard-coded paths in the filesystem by default for all BTSs.
This is inflexible and prevents the use of multiple BSC instances on a
single filesystem, or the placement of the sockets in a more secure
location than /tmp.
The new approach with this patch is that
* no PCU sockets are created by default
* only for those BTSs where a 'pcu-socket' is configured via VTY,
the socket will actually be created
Change-Id: Ie9079470584777dcc31f85f9bf0808f479156ccb
Closes: OS#2293
This commit is contained in:
parent
3f86c523ee
commit
8254cf75bf
|
@ -870,6 +870,7 @@ struct gsm_bts {
|
||||||
struct amr_multirate_conf mr_half;
|
struct amr_multirate_conf mr_half;
|
||||||
|
|
||||||
/* PCU socket state */
|
/* PCU socket state */
|
||||||
|
char *pcu_sock_path;
|
||||||
struct pcu_sock_state *pcu_state;
|
struct pcu_sock_state *pcu_state;
|
||||||
|
|
||||||
#endif /* ROLE_BSC */
|
#endif /* ROLE_BSC */
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
#ifndef _PCU_IF_H
|
#ifndef _PCU_IF_H
|
||||||
#define _PCU_IF_H
|
#define _PCU_IF_H
|
||||||
|
|
||||||
#define PCU_SOCK_DEFAULT "/tmp/pcu_bts"
|
|
||||||
|
|
||||||
#include <osmocom/gsm/l1sap.h>
|
#include <osmocom/gsm/l1sap.h>
|
||||||
|
|
||||||
extern int pcu_direct;
|
extern int pcu_direct;
|
||||||
|
|
|
@ -507,8 +507,6 @@ int bsc_network_configure(const char *config_file)
|
||||||
{
|
{
|
||||||
struct gsm_bts *bts;
|
struct gsm_bts *bts;
|
||||||
int rc;
|
int rc;
|
||||||
char pcu_sock_path[PATH_MAX];
|
|
||||||
char pcu_sock_path_ending[PATH_MAX];
|
|
||||||
|
|
||||||
rc = vty_read_config_file(config_file, NULL);
|
rc = vty_read_config_file(config_file, NULL);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
|
@ -536,18 +534,6 @@ int bsc_network_configure(const char *config_file)
|
||||||
LOGP(DNM, LOGL_FATAL, "Error enabling E1 input driver\n");
|
LOGP(DNM, LOGL_FATAL, "Error enabling E1 input driver\n");
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(pcu_sock_path, PCU_SOCK_DEFAULT);
|
|
||||||
sprintf(pcu_sock_path_ending,"_%i", bts->nr);
|
|
||||||
if (bts->nr > 0)
|
|
||||||
strcat(pcu_sock_path, pcu_sock_path_ending);
|
|
||||||
rc = pcu_sock_init(pcu_sock_path, bts);
|
|
||||||
|
|
||||||
if (rc < 0) {
|
|
||||||
LOGP(DNM, LOGL_FATAL,
|
|
||||||
"PCU L1 socket failed for bts %i\n", bts->nr);
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
#include <openbsc/abis_rsl.h>
|
#include <openbsc/abis_rsl.h>
|
||||||
#include <openbsc/bsc_msc_data.h>
|
#include <openbsc/bsc_msc_data.h>
|
||||||
#include <openbsc/osmo_bsc_rf.h>
|
#include <openbsc/osmo_bsc_rf.h>
|
||||||
|
#include <openbsc/pcu_if.h>
|
||||||
|
|
||||||
#include <openbsc/common_cs.h>
|
#include <openbsc/common_cs.h>
|
||||||
|
|
||||||
|
@ -280,6 +281,8 @@ static void bts_dump_vty(struct vty *vty, struct gsm_bts *bts)
|
||||||
vty_out(vty, "Early Classmark Sending: %s%s",
|
vty_out(vty, "Early Classmark Sending: %s%s",
|
||||||
bts->early_classmark_allowed ? "allowed" : "forbidden",
|
bts->early_classmark_allowed ? "allowed" : "forbidden",
|
||||||
VTY_NEWLINE);
|
VTY_NEWLINE);
|
||||||
|
if (bts->pcu_sock_path)
|
||||||
|
vty_out(vty, "PCU Socket Path: %s%s", bts->pcu_sock_path, VTY_NEWLINE);
|
||||||
if (is_ipaccess_bts(bts))
|
if (is_ipaccess_bts(bts))
|
||||||
vty_out(vty, " Unit ID: %u/%u/0, OML Stream ID 0x%02x%s",
|
vty_out(vty, " Unit ID: %u/%u/0, OML Stream ID 0x%02x%s",
|
||||||
bts->ip_access.site_id, bts->ip_access.bts_id,
|
bts->ip_access.site_id, bts->ip_access.bts_id,
|
||||||
|
@ -764,6 +767,8 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
|
||||||
vty_out(vty, " depends-on-bts %d%s", bts_nr, VTY_NEWLINE);
|
vty_out(vty, " depends-on-bts %d%s", bts_nr, VTY_NEWLINE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (bts->pcu_sock_path)
|
||||||
|
vty_out(vty, " pcu-socket %s%s", bts->pcu_sock_path, VTY_NEWLINE);
|
||||||
|
|
||||||
config_write_bts_model(vty, bts);
|
config_write_bts_model(vty, bts);
|
||||||
}
|
}
|
||||||
|
@ -2933,6 +2938,26 @@ DEFUN(cfg_bts_si5_neigh, cfg_bts_si5_neigh_cmd,
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFUN(cfg_bts_pcu_sock, cfg_bts_pcu_sock_cmd,
|
||||||
|
"pcu-socket PATH",
|
||||||
|
"PCU Socket Path for using OsmoPCU co-located with BSC (legacy BTS)\n"
|
||||||
|
"Path in the file system for the unix-domain PCU socket\n")
|
||||||
|
{
|
||||||
|
struct gsm_bts *bts = vty->index;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
bsc_replace_string(bts, &bts->pcu_sock_path, argv[0]);
|
||||||
|
pcu_sock_exit(bts);
|
||||||
|
rc = pcu_sock_init(bts->pcu_sock_path, bts);
|
||||||
|
if (rc < 0) {
|
||||||
|
vty_out(vty, "%% Error creating PCU socket `%s' for BTS %u%s",
|
||||||
|
bts->pcu_sock_path, bts->nr, VTY_NEWLINE);
|
||||||
|
return CMD_WARNING;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
#define EXCL_RFLOCK_STR "Exclude this BTS from the global RF Lock\n"
|
#define EXCL_RFLOCK_STR "Exclude this BTS from the global RF Lock\n"
|
||||||
|
|
||||||
DEFUN(cfg_bts_excl_rf_lock,
|
DEFUN(cfg_bts_excl_rf_lock,
|
||||||
|
@ -4231,6 +4256,7 @@ int bsc_vty_init(struct gsm_network *network)
|
||||||
install_element(BTS_NODE, &cfg_bts_amr_hr_hyst2_cmd);
|
install_element(BTS_NODE, &cfg_bts_amr_hr_hyst2_cmd);
|
||||||
install_element(BTS_NODE, &cfg_bts_amr_hr_hyst3_cmd);
|
install_element(BTS_NODE, &cfg_bts_amr_hr_hyst3_cmd);
|
||||||
install_element(BTS_NODE, &cfg_bts_amr_hr_start_mode_cmd);
|
install_element(BTS_NODE, &cfg_bts_amr_hr_start_mode_cmd);
|
||||||
|
install_element(BTS_NODE, &cfg_bts_pcu_sock_cmd);
|
||||||
|
|
||||||
install_element(BTS_NODE, &cfg_trx_cmd);
|
install_element(BTS_NODE, &cfg_trx_cmd);
|
||||||
install_node(&trx_node, dummy_config_write);
|
install_node(&trx_node, dummy_config_write);
|
||||||
|
|
Loading…
Reference in New Issue