aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2019-10-08 14:30:59 +0200
committerlaforge <laforge@osmocom.org>2019-10-08 20:31:25 +0000
commitafadd102bf1b3a187218a9d79687c4750a035100 (patch)
treed99c190335381ec710a384f87dac725c3d01c2a5 /src
parent12235310af015fe3f4645ffbfc18950e89d23aa0 (diff)
ranap: add non-spec X1001
When the SGSN releases a RANAP connection, it sends a Release Command and waits for a Release Complete. Use X1001 to release the Iu connection when the Release Complete is lost/never received. Change-Id: I39a0169c22a4ac430b3d6f3c281d1f381eaa4756
Diffstat (limited to 'src')
-rw-r--r--src/sgsn/gprs_ranap.c9
-rw-r--r--src/sgsn/sgsn_vty.c5
2 files changed, 11 insertions, 3 deletions
diff --git a/src/sgsn/gprs_ranap.c b/src/sgsn/gprs_ranap.c
index 9c7a5dbb..7a334919 100644
--- a/src/sgsn/gprs_ranap.c
+++ b/src/sgsn/gprs_ranap.c
@@ -25,6 +25,7 @@
#include <gtp.h>
#include <osmocom/core/rate_ctr.h>
+#include <osmocom/core/tdef.h>
#include <osmocom/ranap/ranap_common.h>
@@ -162,8 +163,6 @@ int sgsn_ranap_iu_event(struct ranap_ue_conn_ctx *ctx, enum ranap_iu_event_type
return rc;
}
-/* TODO: use timers */
-#define TIMEOUT_RANAP_RELEASE_SEC 5
void sgsn_ranap_iu_free(struct sgsn_mm_ctx *ctx)
{
if (!ctx)
@@ -179,15 +178,19 @@ void sgsn_ranap_iu_free(struct sgsn_mm_ctx *ctx)
void sgsn_ranap_iu_release_free(struct sgsn_mm_ctx *ctx,
const struct RANAP_Cause *cause)
{
+ unsigned long X1001;
+
if (!ctx)
return;
if (!ctx->iu.ue_ctx)
return;
+ X1001 = osmo_tdef_get(sgsn->cfg.T_defs, -1001, OSMO_TDEF_S, -1);
+
ranap_iu_tx_release_free(ctx->iu.ue_ctx,
cause,
- TIMEOUT_RANAP_RELEASE_SEC);
+ (int) X1001);
ctx->iu.ue_ctx = NULL;
}
diff --git a/src/sgsn/sgsn_vty.c b/src/sgsn/sgsn_vty.c
index 17b64c89..14248d1d 100644
--- a/src/sgsn/sgsn_vty.c
+++ b/src/sgsn/sgsn_vty.c
@@ -90,6 +90,9 @@ const struct value_string sgsn_auth_pol_strs[] = {
#define GSM0408_T3395_SECS 8 /* wait for DEACT PDP CTX ACK */
#define GSM0408_T3397_SECS 8 /* wait for DEACT AA PDP CTX ACK */
+/* Non spec timer */
+#define NONSPEC_X1001_SECS 5 /* wait for a RANAP Release Complete */
+
static struct osmo_tdef sgsn_T_defs[] = {
{ .T=3312, .default_val=GSM0408_T3312_SECS, .desc="Periodic RA Update timer (s)" },
@@ -105,6 +108,8 @@ static struct osmo_tdef sgsn_T_defs[] = {
{ .T=3395, .default_val=GSM0408_T3395_SECS, .desc="Wait for DEACT PDP CTX ACK timer (s)" },
{ .T=3397, .default_val=GSM0408_T3397_SECS, .desc="Wait for DEACT AA PDP CTX ACK timer (s)" },
/* non spec timers */
+ { .T=-1001, .default_val=NONSPEC_X1001_SECS, .desc="RANAP Release timeout. Wait for RANAP Release Complete."
+ "On expiry release Iu connection (s)" },
{ .T=-3314, .default_val=GSM0408_T3314_SECS, .desc="Iu User inactivity timer. On expiry release Iu connection (s)" },
{}
};