diff options
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/gprs/gprs_gmm.c | 17 | ||||
-rw-r--r-- | openbsc/src/gprs/gprs_sgsn.c | 2 |
2 files changed, 12 insertions, 7 deletions
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c index 389123d05..711981680 100644 --- a/openbsc/src/gprs/gprs_gmm.c +++ b/openbsc/src/gprs/gprs_gmm.c @@ -1689,16 +1689,21 @@ static int gsm0408_rcv_gsm(struct sgsn_mm_ctx *mmctx, struct msgb *msg, return rc; } -int gsm0408_gprs_force_reattach(struct msgb *msg, struct sgsn_mm_ctx *mmctx) +int gsm0408_gprs_force_reattach_oldmsg(struct msgb *msg) { + int rc; gprs_llgmm_reset_oldmsg(msg, GPRS_SAPI_GMM); - if (!mmctx) - return gsm48_tx_gmm_detach_req_oldmsg( - msg, GPRS_DET_T_MT_REATT_REQ, GMM_CAUSE_IMPL_DETACHED); + rc = gsm48_tx_gmm_detach_req_oldmsg( + msg, GPRS_DET_T_MT_REATT_REQ, GMM_CAUSE_IMPL_DETACHED); + + return rc; +} - /* Mark MM state as deregistered initiated */ - mmctx->mm_state = GMM_DEREGISTERED_INIT; +int gsm0408_gprs_force_reattach(struct sgsn_mm_ctx *mmctx) +{ + int rc; + gprs_llgmm_reset(mmctx->llme); /* Delete all existing PDP contexts for this MS */ delete_pdp_contexts(mmctx, "forced reattach"); diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c index 15f475394..c4ff3c27d 100644 --- a/openbsc/src/gprs/gprs_sgsn.c +++ b/openbsc/src/gprs/gprs_sgsn.c @@ -448,6 +448,6 @@ int drop_all_pdp_for_ggsn(struct sgsn_ggsn_ctx *ggsn) int sgsn_force_reattach_oldmsg(struct msgb *oldmsg) { - return gsm0408_gprs_force_reattach(oldmsg, NULL); + return gsm0408_gprs_force_reattach_oldmsg(oldmsg); } |