laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-hlr/+/21183 )

Change subject: USSD: add special 'idle' handler to IUSE for testing
......................................................................

USSD: add special 'idle' handler to IUSE for testing

Change-Id: I0d566a60e95ce2da951f22ad47c6155c5b6a338c
---
M doc/manuals/chapters/ussd.adoc
M src/hlr_ussd.c
M src/hlr_vty.c
M tests/test_nodes.vty
4 files changed, 24 insertions(+), 4 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved



diff --git a/doc/manuals/chapters/ussd.adoc b/doc/manuals/chapters/ussd.adoc
index 3ab587f..6100c93 100644
--- a/doc/manuals/chapters/ussd.adoc
+++ b/doc/manuals/chapters/ussd.adoc
@@ -67,7 +67,9 @@
 can be assigned to one or more USSD request prefixes:

 * `own-msisdn` returns subscriber's MSISDN (if assigned);
-* `own-imsi` returns subscriber's IMSI.
+* `own-imsi` returns subscriber's IMSI;
+* `test-idle` keeps the session idle until the MS terminates it, or
+  the guard timer expires (may be useful for testing).

 Additional handlers can be added on request.

diff --git a/src/hlr_ussd.c b/src/hlr_ussd.c
index 399bdbc..35b74b6 100644
--- a/src/hlr_ussd.c
+++ b/src/hlr_ussd.c
@@ -379,6 +379,19 @@
        return 0;
 }

+/* This handler just keeps the session idle unless the guard timer expires. */
+static int handle_ussd_test_idle(struct ss_session *ss,
+                                const struct osmo_gsup_message *gsup,
+                                const struct ss_request *req)
+{
+       char buf[GSM0480_USSD_7BIT_STRING_LEN + 1];
+       snprintf(buf, sizeof(buf), "Keeping your session idle, it will expire "
+                "at most in %u seconds.", g_hlr->ncss_guard_timeout);
+       ss->state = OSMO_GSUP_SESSION_STATE_CONTINUE;
+       ss_tx_to_ms_ussd_7bit(ss, req->invoke_id, buf);
+       return 0;
+}
+

 static const struct hlr_iuse hlr_iuses[] = {
        {
@@ -389,6 +402,10 @@
                .name = "own-imsi",
                .handle_ussd = handle_ussd_own_imsi,
        },
+       {
+               .name = "test-idle",
+               .handle_ussd = handle_ussd_test_idle,
+       },
 };

 const struct hlr_iuse *iuse_find(const char *name)
diff --git a/src/hlr_vty.c b/src/hlr_vty.c
index a054cbe..4b91aa9 100644
--- a/src/hlr_vty.c
+++ b/src/hlr_vty.c
@@ -174,10 +174,11 @@
 #define UROUTE_STR "Routing Configuration\n"
 #define PREFIX_STR "Prefix-Matching Route\n" "USSD Prefix\n"

-#define INT_CHOICE "(own-msisdn|own-imsi)"
+#define INT_CHOICE "(own-msisdn|own-imsi|test-idle)"
 #define INT_STR "Internal USSD Handler\n" \
                "Respond with subscribers' own MSISDN\n" \
-               "Respond with subscribers' own IMSI\n"
+               "Respond with subscribers' own IMSI\n" \
+               "Keep the session idle (useful for testing)\n"

 #define EXT_STR "External USSD Handler\n" \
                "Name of External USSD Handler (IPA CCM ID)\n"
diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty
index d9971f7..cf1707a 100644
--- a/tests/test_nodes.vty
+++ b/tests/test_nodes.vty
@@ -51,7 +51,7 @@
   database PATH
   euse NAME
   no euse NAME
-  ussd route prefix PREFIX internal (own-msisdn|own-imsi)
+  ussd route prefix PREFIX internal (own-msisdn|own-imsi|test-idle)
   ussd route prefix PREFIX external EUSE
   no ussd route prefix PREFIX
   ussd default-route external EUSE

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

Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: I0d566a60e95ce2da951f22ad47c6155c5b6a338c
Gerrit-Change-Number: 21183
Gerrit-PatchSet: 3
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-MessageType: merged

Reply via email to