Change in ...osmo-msc[master]: add ipa keepalive for gsup connections to the hlr

Hoernchen gerrit-no-reply at lists.osmocom.org
Thu Jul 11 12:22:19 UTC 2019


Hoernchen has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-msc/+/14753


Change subject: add ipa keepalive for gsup connections to the hlr
......................................................................

add ipa keepalive for gsup connections to the hlr

Change-Id: I7d0beb9357ab9b1baeb030d726f312008f2fc533
---
M doc/manuals/vty/msc_vty_reference.xml
M include/osmocom/msc/gsm_data.h
M include/osmocom/msc/gsup_client_mux.h
M src/libmsc/gsup_client_mux.c
M src/libmsc/msc_net_init.c
M src/libmsc/msc_vty.c
6 files changed, 36 insertions(+), 4 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/53/14753/1

diff --git a/doc/manuals/vty/msc_vty_reference.xml b/doc/manuals/vty/msc_vty_reference.xml
index 0e5d04d..7f7b753 100644
--- a/doc/manuals/vty/msc_vty_reference.xml
+++ b/doc/manuals/vty/msc_vty_reference.xml
@@ -2796,6 +2796,13 @@
         <param name='NAME' doc='A unique name for this MSC. For example: PLMN + redundancy server number: MSC-901-70-0. This name is used for GSUP routing and must be set if more than one MSC is connected to the HLR. The default is 'MSC-00-00-00-00-00-00'.' />
       </params>
     </command>
+    <command id='keepalive <0-300> <1-300>'>
+      <params>
+        <param name='keepalive' doc='Enable keepalive probing' />
+        <param name='<0-300>' doc='Idle interval in seconds before probes are sent, 0 disables keepalive' />
+        <param name='<1-300>' doc='Timeout waiting for PONG response' />
+      </params>
+    </command>
   </node>
   <node id='config-sgs'>
     <name>config-sgs</name>
diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index f6e3ed9..20176ad 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -235,6 +235,8 @@
 
 	/* Whether we want to use Osmux against BSCs. Controlled via VTY */
 	enum osmux_usage use_osmux;
+
+	struct ipa_keepalive_params *ka_params;
 };
 
 struct osmo_esme;
diff --git a/include/osmocom/msc/gsup_client_mux.h b/include/osmocom/msc/gsup_client_mux.h
index 07f17c2..46dfee9 100644
--- a/include/osmocom/msc/gsup_client_mux.h
+++ b/include/osmocom/msc/gsup_client_mux.h
@@ -5,6 +5,7 @@
 
 struct gsup_client_mux;
 struct ipaccess_unit;
+struct ipa_keepalive_params;
 
 struct gsup_client_mux_rx_cb {
 	int (* func )(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg);
@@ -25,7 +26,7 @@
 
 struct gsup_client_mux *gsup_client_mux_alloc(void *talloc_ctx);
 int gsup_client_mux_start(struct gsup_client_mux *gcm, const char *gsup_server_addr_str, uint16_t gsup_server_port,
-			  struct ipaccess_unit *ipa_dev);
+			  struct ipaccess_unit *ipa_dev, struct ipa_keepalive_params *kap);
 
 int gsup_client_mux_tx(struct gsup_client_mux *gcm, const struct osmo_gsup_message *gsup_msg);
 void gsup_client_mux_tx_error_reply(struct gsup_client_mux *gcm, const struct osmo_gsup_message *gsup_orig,
diff --git a/src/libmsc/gsup_client_mux.c b/src/libmsc/gsup_client_mux.c
index e425651..b9ee285 100644
--- a/src/libmsc/gsup_client_mux.c
+++ b/src/libmsc/gsup_client_mux.c
@@ -108,12 +108,12 @@
 
 /* Start a GSUP client to serve this gsup_client_mux. */
 int gsup_client_mux_start(struct gsup_client_mux *gcm, const char *gsup_server_addr_str, uint16_t gsup_server_port,
-			  struct ipaccess_unit *ipa_dev)
+			  struct ipaccess_unit *ipa_dev, struct ipa_keepalive_params *kap)
 {
 	gcm->gsup_client = osmo_gsup_client_create2(gcm, ipa_dev,
 						    gsup_server_addr_str,
 						    gsup_server_port,
-						    &gsup_client_mux_rx, NULL);
+						    &gsup_client_mux_rx, NULL, kap);
 	if (!gcm->gsup_client)
 		return -ENOMEM;
 	gcm->gsup_client->data = gcm;
diff --git a/src/libmsc/msc_net_init.c b/src/libmsc/msc_net_init.c
index 4a752bf..3b05e65 100644
--- a/src/libmsc/msc_net_init.c
+++ b/src/libmsc/msc_net_init.c
@@ -122,5 +122,5 @@
 		},
 	};
 
-	return gsup_client_mux_start(net->gcm, net->gsup_server_addr_str, net->gsup_server_port, ipa_dev);
+	return gsup_client_mux_start(net->gcm, net->gsup_server_addr_str, net->gsup_server_port, ipa_dev, net->ka_params);
 }
diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c
index 8a976cb..1068de1 100644
--- a/src/libmsc/msc_vty.c
+++ b/src/libmsc/msc_vty.c
@@ -34,6 +34,8 @@
 #include <osmocom/gsm/protocol/gsm_04_14.h>
 #include <osmocom/gsm/protocol/gsm_08_08.h>
 
+#include <osmocom/abis/ipa.h>
+
 #include <osmocom/sigtran/sccp_helpers.h>
 
 #include <osmocom/vty/command.h>
@@ -1846,6 +1848,22 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_hlr_gsup_keepalive,
+	  cfg_hlr_gsup_keepalive_cmd,
+	  "keepalive <0-300> <1-300>",
+	  "Enable keepalive probing\n"
+	  "Idle interval in seconds before probes are sent, 0 disables keepalive\n"
+	  "Timeout waiting for PONG response\n")
+{
+	if (atoi(argv[0]) > 0) {
+		gsmnet->ka_params = talloc_zero(gsmnet, struct ipa_keepalive_params);
+		gsmnet->ka_params->interval = atoi(argv[0]);
+		gsmnet->ka_params->wait_for_resp = atoi(argv[1]);
+	}
+
+	return CMD_SUCCESS;
+}
+
 static int config_write_hlr(struct vty *vty)
 {
 	vty_out(vty, "hlr%s", VTY_NEWLINE);
@@ -1855,6 +1873,9 @@
 		gsmnet->gsup_server_port, VTY_NEWLINE);
 	if (gsmnet->msc_ipa_name)
 		vty_out(vty, " ipa-name %s%s", gsmnet->msc_ipa_name, VTY_NEWLINE);
+	if (gsmnet->ka_params)
+		vty_out(vty, " keepalive %d %d%s", gsmnet->ka_params->interval,
+				gsmnet->ka_params->wait_for_resp, VTY_NEWLINE);
 	return CMD_SUCCESS;
 }
 
@@ -1956,4 +1977,5 @@
 	install_element(HLR_NODE, &cfg_hlr_remote_ip_cmd);
 	install_element(HLR_NODE, &cfg_hlr_remote_port_cmd);
 	install_element(HLR_NODE, &cfg_hlr_ipa_name_cmd);
+	install_element(HLR_NODE, &cfg_hlr_gsup_keepalive_cmd);
 }

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/14753
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I7d0beb9357ab9b1baeb030d726f312008f2fc533
Gerrit-Change-Number: 14753
Gerrit-PatchSet: 1
Gerrit-Owner: Hoernchen <ewild at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190711/1e53e5dc/attachment-0001.html>


More information about the gerrit-log mailing list