Change in osmo-hlr[master]: Add vty `imsi unknown cause` to set the reject cause

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

lynxis lazus gerrit-no-reply at lists.osmocom.org
Sun Jan 12 04:30:55 UTC 2020


lynxis lazus has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-hlr/+/16808 )


Change subject: Add vty `imsi unknown cause` to set the reject cause
......................................................................

Add vty `imsi unknown cause` to set the reject cause

Allow to set the reject cause when an IMSI is unknown to the HLR.
Most common on reject causes are GMM_CAUSE_IMSI_UNKNOWN (2) or
CAUSE_ROAMING_NOTALLOWED (11).

Change-Id: Icea39020c23fbbea9e92847df76af8986fdbf48a
---
M doc/examples/osmo-hlr.cfg
M include/osmocom/hlr/hlr.h
M src/hlr.c
M src/hlr_vty.c
4 files changed, 33 insertions(+), 1 deletion(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/08/16808/1

diff --git a/doc/examples/osmo-hlr.cfg b/doc/examples/osmo-hlr.cfg
index a685858..cf78e74 100644
--- a/doc/examples/osmo-hlr.cfg
+++ b/doc/examples/osmo-hlr.cfg
@@ -24,3 +24,4 @@
   bind ip 127.0.0.1
  ussd route prefix *#100# internal own-msisdn
  ussd route prefix *#101# internal own-imsi
+ imsi unknown cause 2
diff --git a/include/osmocom/hlr/hlr.h b/include/osmocom/hlr/hlr.h
index 0564518..ae3ce39 100644
--- a/include/osmocom/hlr/hlr.h
+++ b/include/osmocom/hlr/hlr.h
@@ -23,6 +23,7 @@
 #pragma once
 
 #include <stdbool.h>
+#include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
 #include <osmocom/core/linuxlist.h>
 
 #define HLR_DEFAULT_DB_FILE_PATH "hlr.db"
@@ -46,6 +47,7 @@
 
 	struct llist_head euse_list;
 	struct hlr_euse *euse_default;
+	enum gsm48_gmm_cause imsi_unknown_cause;
 
 	/* NCSS (call independent) session guard timeout value */
 	int ncss_guard_timeout;
diff --git a/src/hlr.c b/src/hlr.c
index 656f0a4..966267b 100644
--- a/src/hlr.c
+++ b/src/hlr.c
@@ -268,7 +268,7 @@
 			break;
 		case -ENOENT:
 			LOGP(DAUC, LOGL_NOTICE, "%s: IMSI not known\n", gsup->imsi);
-			gsup_out.cause = GMM_CAUSE_IMSI_UNKNOWN;
+			gsup_out.cause = g_hlr->imsi_unknown_cause;
 			break;
 		default:
 			LOGP(DAUC, LOGL_ERROR, "%s: failure to look up IMSI in db\n", gsup->imsi);
@@ -849,6 +849,7 @@
 	INIT_LLIST_HEAD(&g_hlr->ss_sessions);
 	INIT_LLIST_HEAD(&g_hlr->ussd_routes);
 	g_hlr->db_file_path = talloc_strdup(g_hlr, HLR_DEFAULT_DB_FILE_PATH);
+	g_hlr->imsi_unknown_cause = GMM_CAUSE_IMSI_UNKNOWN;
 
 	/* Init default (call independent) SS session guard timeout value */
 	g_hlr->ncss_guard_timeout = NCSS_GUARD_TIMEOUT_DEFAULT;
diff --git a/src/hlr_vty.c b/src/hlr_vty.c
index 6701cd9..9b1dac3 100644
--- a/src/hlr_vty.c
+++ b/src/hlr_vty.c
@@ -25,7 +25,10 @@
  *
  */
 
+#include <errno.h>
+
 #include <osmocom/core/talloc.h>
+#include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
 #include <osmocom/vty/vty.h>
 #include <osmocom/vty/stats.h>
 #include <osmocom/vty/command.h>
@@ -73,6 +76,7 @@
 static int config_write_hlr(struct vty *vty)
 {
 	vty_out(vty, "hlr%s", VTY_NEWLINE);
+	vty_out(vty, " imsi unknown cause %d%s", g_hlr->imsi_unknown_cause, VTY_NEWLINE);
 	if (g_hlr->store_imei)
 		vty_out(vty, " store-imei%s", VTY_NEWLINE);
 	if (g_hlr->db_file_path && strcmp(g_hlr->db_file_path, HLR_DEFAULT_DB_FILE_PATH))
@@ -337,6 +341,29 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_imsi_not_found_cause, cfg_imsi_not_found_cause_cmd,
+      "imsi unknown cause CAUSE",
+      "Define the GSUP cause to be send in case the IMSI could not found in the database."
+      "Default is 2 (GMM_CAUSE_IMSI_UNKNOWN). A good alternative is 13 (GMM_CAUSE_ROAMING_NOTALLOWED)."
+      )
+{
+	long int cause = 0;
+	char *endptr = NULL;
+
+	errno = 0;
+	cause = strtol(argv[0], &endptr, 0);
+	if (errno)
+		return -errno;
+	else if (*endptr)
+		return -EINVAL;
+
+	if (get_value_string_or_null(gsm48_gmm_cause_names, (uint32_t) cause) == NULL)
+		return -EINVAL;
+
+	g_hlr->imsi_unknown_cause = (enum gsm48_gmm_cause) cause;
+	return CMD_SUCCESS;
+}
+
 DEFUN(cfg_store_imei, cfg_store_imei_cmd,
 	"store-imei",
 	"Save the IMEI in the database when receiving Check IMEI requests. Note that an MSC does not necessarily send"
@@ -460,6 +487,7 @@
 	install_element(HLR_NODE, &cfg_no_store_imei_cmd);
 	install_element(HLR_NODE, &cfg_subscr_create_on_demand_cmd);
 	install_element(HLR_NODE, &cfg_no_subscr_create_on_demand_cmd);
+	install_element(HLR_NODE, &cfg_imsi_not_found_cause_cmd);
 
 	hlr_vty_subscriber_init();
 }

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

Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: Icea39020c23fbbea9e92847df76af8986fdbf48a
Gerrit-Change-Number: 16808
Gerrit-PatchSet: 1
Gerrit-Owner: lynxis lazus <lynxis at fe80.eu>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200112/13f97f49/attachment.htm>


More information about the gerrit-log mailing list