aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-06-02 12:41:34 +0200
committerHarald Welte <laforge@gnumonks.org>2010-06-02 12:41:34 +0200
commite300d0021c50326ead433f60ce5bb62dc6949984 (patch)
tree246b68196d6b6317a7190feed0cd43a07da118a1 /openbsc
parent614445206891ebdf33a7d88c6a304f4f6b713d4f (diff)
[GPRS] SGSN: Allow vty-based configuration of local listen/bind IP for GTP
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/gprs/sgsn_vty.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c
index 34dd8c646..8bbeae33b 100644
--- a/openbsc/src/gprs/sgsn_vty.c
+++ b/openbsc/src/gprs/sgsn_vty.c
@@ -49,11 +49,13 @@ static struct cmd_node sgsn_node = {
static int config_write_sgsn(struct vty *vty)
{
- struct in_addr ia;
struct sgsn_ggsn_ctx *gctx;
vty_out(vty, "sgsn%s", VTY_NEWLINE);
+ vty_out(vty, " gtp local-ip %s%s",
+ inet_ntoa(g_cfg->gtp_listenaddr.sin_addr), VTY_NEWLINE);
+
llist_for_each_entry(gctx, &sgsn_ggsn_ctxts, list) {
vty_out(vty, " ggsn %u remote-ip %s%s", gctx->id,
inet_ntoa(gctx->remote_addr), VTY_NEWLINE);
@@ -64,15 +66,26 @@ static int config_write_sgsn(struct vty *vty)
return CMD_SUCCESS;
}
-DEFUN(cfg_sgsn,
- cfg_sgsn_cmd,
- "sgsn",
- "Configure the SGSN")
+#define SGSN_STR "Configure the SGSN"
+
+DEFUN(cfg_sgsn, cfg_sgsn_cmd,
+ "sgsn",
+ SGSN_STR)
{
vty->node = SGSN_NODE;
return CMD_SUCCESS;
}
+DEFUN(cfg_sgsn_bind_addr, cfg_sgsn_bind_addr_cmd,
+ "gtp local-ip A.B.C.D",
+ "GTP Parameters\n"
+ "Set the IP address for the local GTP bind\n")
+{
+ inet_aton(argv[0], &g_cfg->gtp_listenaddr.sin_addr);
+
+ return CMD_SUCCESS;
+}
+
DEFUN(cfg_ggsn_remote_ip, cfg_ggsn_remote_ip_cmd,
"ggsn <0-255> remote-ip A.B.C.D",
"")
@@ -254,6 +267,7 @@ int sgsn_vty_init(void)
install_default(SGSN_NODE);
install_element(SGSN_NODE, &ournode_exit_cmd);
install_element(SGSN_NODE, &ournode_end_cmd);
+ install_element(SGSN_NODE, &cfg_sgsn_bind_addr_cmd);
install_element(SGSN_NODE, &cfg_ggsn_remote_ip_cmd);
//install_element(SGSN_NODE, &cfg_ggsn_remote_port_cmd);
install_element(SGSN_NODE, &cfg_ggsn_gtp_version_cmd);