diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2017-08-08 15:03:50 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2017-08-09 12:17:39 +0200 |
commit | c4178e55ea5a0ac480f11e3352a3579cdb78025a (patch) | |
tree | ee80ac629621f921ce2363396bb0be36a96640d5 | |
parent | 0cd8e4eadea3fc4ec709b102e428f7a47836a7e3 (diff) |
Add pcu-socket vty config
osmo-bts already supports configuring a different path for the bts<->pcu
socket by using the 'pcu-socket' config field.
Change-Id: I9b3e1171da467519750b201849ec892a1e318129
-rw-r--r-- | include/osmocom/pcu/pcuif_proto.h | 2 | ||||
-rw-r--r-- | src/bts.h | 3 | ||||
-rw-r--r-- | src/osmobts_sock.cpp | 3 | ||||
-rw-r--r-- | src/pcu_main.cpp | 2 | ||||
-rw-r--r-- | src/pcu_vty.c | 21 |
5 files changed, 30 insertions, 1 deletions
diff --git a/include/osmocom/pcu/pcuif_proto.h b/include/osmocom/pcu/pcuif_proto.h index 88dc09ec..39103ee2 100644 --- a/include/osmocom/pcu/pcuif_proto.h +++ b/include/osmocom/pcu/pcuif_proto.h @@ -3,6 +3,8 @@ #include <osmocom/gsm/l1sap.h> +#define PCU_SOCK_DEFAULT "/tmp/pcu_bts" + #define PCU_IF_VERSION 0x07 #define TXT_MAX_LEN 128 @@ -233,6 +233,9 @@ struct gprs_rlcmac_bts { * period. */ struct BTS *bts; + + /* Path to be used for the pcu-bts socket */ + char *pcu_sock_path; }; #ifdef __cplusplus diff --git a/src/osmobts_sock.cpp b/src/osmobts_sock.cpp index d7e55e7c..e9b85ab7 100644 --- a/src/osmobts_sock.cpp +++ b/src/osmobts_sock.cpp @@ -223,6 +223,7 @@ int pcu_l1if_open(void) struct sockaddr_un local; unsigned int namelen; int rc; + struct gprs_rlcmac_bts *bts = bts_main_data(); LOGP(DL1IF, LOGL_INFO, "Opening OsmoPCU L1 interface to OsmoBTS\n"); @@ -244,7 +245,7 @@ int pcu_l1if_open(void) } local.sun_family = AF_UNIX; - strncpy(local.sun_path, "/tmp/pcu_bts", sizeof(local.sun_path)); + strncpy(local.sun_path, bts->pcu_sock_path, sizeof(local.sun_path)); local.sun_path[sizeof(local.sun_path) - 1] = '\0'; /* we use the same magic that X11 uses in Xtranssock.c for diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp index b69e446b..8e7cde80 100644 --- a/src/pcu_main.cpp +++ b/src/pcu_main.cpp @@ -216,6 +216,8 @@ int main(int argc, char *argv[]) */ bts->dl_arq_type = EGPRS_ARQ1; + bts->pcu_sock_path = talloc_strdup(tall_pcu_ctx, PCU_SOCK_DEFAULT); + msgb_talloc_ctx_init(tall_pcu_ctx, 0); osmo_init_logging(&gprs_log_info); diff --git a/src/pcu_vty.c b/src/pcu_vty.c index cd22e38c..68d2f556 100644 --- a/src/pcu_vty.c +++ b/src/pcu_vty.c @@ -9,6 +9,7 @@ #include <osmocom/vty/misc.h> #include <osmocom/core/linuxlist.h> #include <osmocom/core/rate_ctr.h> +#include <osmocom/pcu/pcuif_proto.h> #include "pcu_vty.h" #include "gprs_rlcmac.h" #include "bts.h" @@ -233,6 +234,8 @@ static int config_write_pcu(struct vty *vty) if (bts->dl_tbf_idle_msec) vty_out(vty, " dl-tbf-idle-time %d%s", bts->dl_tbf_idle_msec, VTY_NEWLINE); + if (strcmp(bts->pcu_sock_path, PCU_SOCK_DEFAULT)) + vty_out(vty, " pcu-socket %s%s", bts->pcu_sock_path, VTY_NEWLINE); for (i = 0; i < 32; i++) { unsigned int cs = (1 << i); @@ -966,6 +969,23 @@ DEFUN(cfg_pcu_cs_lqual_ranges, return CMD_SUCCESS; } +DEFUN(cfg_pcu_sock, + cfg_pcu_sock_cmd, + "pcu-socket PATH", + "Configure the osmo-bts PCU socket file/path name\n" + "Path of the socket to connect to\n") +{ + struct gprs_rlcmac_bts *bts = bts_main_data(); + + if (bts->pcu_sock_path) { + /* FIXME: close the interface? */ + talloc_free(bts->pcu_sock_path); + } + bts->pcu_sock_path = talloc_strdup(tall_pcu_ctx, argv[0]); + /* FIXME: re-open the interface? */ + + return CMD_SUCCESS; +} DEFUN(show_tbf, show_tbf_cmd, @@ -1096,6 +1116,7 @@ int pcu_vty_init(const struct log_info *cat) install_element(PCU_NODE, &cfg_pcu_no_ms_idle_time_cmd); install_element(PCU_NODE, &cfg_pcu_gsmtap_categ_cmd); install_element(PCU_NODE, &cfg_pcu_no_gsmtap_categ_cmd); + install_element(PCU_NODE, &cfg_pcu_sock_cmd); install_element_ve(&show_bts_stats_cmd); install_element_ve(&show_tbf_cmd); |