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 
&apos;MSC-00-00-00-00-00-00&apos;.' />
       </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 <[email protected]>
Gerrit-MessageType: newchange

Reply via email to