aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith <keith@rhizomatica.org>2023-01-09 23:45:02 +0100
committerKeith Whyte <keith@rhizomatica.org>2023-11-23 01:39:36 +0000
commit08b6fe7e80af5144e74487fbf8991753ca255efc (patch)
tree11411376c43108add9c4776f7d777700cea6ed3a
parent60b4eab233c97c2a522e29cc266c393234f5d63a (diff)
Make local attach max age VTY configurable
-rw-r--r--include/osmocom/hlr/dgsm.h1
-rw-r--r--src/dgsm.c2
-rw-r--r--src/dgsm_vty.c15
3 files changed, 17 insertions, 1 deletions
diff --git a/include/osmocom/hlr/dgsm.h b/include/osmocom/hlr/dgsm.h
index 1114fbe..12a827e 100644
--- a/include/osmocom/hlr/dgsm.h
+++ b/include/osmocom/hlr/dgsm.h
@@ -25,6 +25,7 @@
#include <osmocom/gsupclient/cni_peer_id.h>
#include <osmocom/gsupclient/gsup_req.h>
+#define OSMO_DGSM_DEFAULT_LOCAL_ATTACH_MAX_AGE 60 * 60
#define OSMO_DGSM_DEFAULT_RESULT_TIMEOUT_MS 2000
#define LOG_DGSM(imsi, level, fmt, args...) \
LOGP(DDGSM, level, "(IMSI-%s) " fmt, imsi, ##args)
diff --git a/src/dgsm.c b/src/dgsm.c
index a798512..82f3203 100644
--- a/src/dgsm.c
+++ b/src/dgsm.c
@@ -183,7 +183,7 @@ void dgsm_init(void *ctx)
dgsm_ctx = talloc_named_const(ctx, 0, "dgsm");
INIT_LLIST_HEAD(&g_hlr->mslookup.server.local_site_services);
- g_hlr->mslookup.server.local_attach_max_age = 60 * 60;
+ g_hlr->mslookup.server.local_attach_max_age = OSMO_DGSM_DEFAULT_LOCAL_ATTACH_MAX_AGE;
g_hlr->mslookup.client.result_timeout_milliseconds = OSMO_DGSM_DEFAULT_RESULT_TIMEOUT_MS;
diff --git a/src/dgsm_vty.c b/src/dgsm_vty.c
index d204a4a..049a78d 100644
--- a/src/dgsm_vty.c
+++ b/src/dgsm_vty.c
@@ -190,6 +190,17 @@ DEFUN(cfg_mslookup_server_no_mdns_bind,
return CMD_SUCCESS;
}
+DEFUN(cfg_mslookup_server_max_age,
+ cfg_mslookup_server_max_age_cmd,
+ "max-age <1-21600>",
+ "How old can the Last Location Update be for the mslookup server to respond\n"
+ "max age in seconds\n")
+{
+ uint32_t val = atol(argv[0]);
+ g_hlr->mslookup.server.local_attach_max_age = val;
+ return CMD_SUCCESS;
+}
+
DEFUN(cfg_mslookup_auth_imsi_only,
cfg_mslookup_auth_imsi_only_cmd,
"authorized-imsi-only",
@@ -511,6 +522,9 @@ int config_write_mslookup(struct vty *vty)
vty_out(vty, " msc ipa-name %s%s", osmo_ipa_name_to_str(&msc->name), VTY_NEWLINE);
config_write_msc_services(vty, " ", msc);
}
+ if (g_hlr->mslookup.server.local_attach_max_age != OSMO_DGSM_DEFAULT_LOCAL_ATTACH_MAX_AGE)
+ vty_out(vty, " max-age %u%s",
+ g_hlr->mslookup.server.local_attach_max_age, VTY_NEWLINE);
/* If the server is disabled, still output the above to not lose the service config. */
if (!g_hlr->mslookup.server.enable)
@@ -725,6 +739,7 @@ void dgsm_vty_init(void)
install_element(MSLOOKUP_SERVER_NODE, &cfg_mslookup_server_msc_service_cmd);
install_element(MSLOOKUP_SERVER_NODE, &cfg_mslookup_server_msc_no_service_cmd);
install_element(MSLOOKUP_SERVER_NODE, &cfg_mslookup_server_msc_no_service_addr_cmd);
+ install_element(MSLOOKUP_SERVER_NODE, &cfg_mslookup_server_max_age_cmd);
install_element(MSLOOKUP_SERVER_NODE, &cfg_mslookup_server_msc_cmd);
install_node(&mslookup_server_msc_node, NULL);