aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gprs/sgsn_iu.c
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2016-01-25 16:58:18 +0100
committerDaniel Willmann <dwillmann@sysmocom.de>2016-02-04 15:52:19 +0100
commit1f2f2cf0eb588b65fdc7a0d1e5a08540f45e8f76 (patch)
tree64a2d22a41cd428d90798170d6a952e5b78b857e /openbsc/src/gprs/sgsn_iu.c
parentc7290f11399d805a9130d2c4fccae2eb9bf4782b (diff)
WIP: Wait for radio bearer before sending pdp context accept
Diffstat (limited to 'openbsc/src/gprs/sgsn_iu.c')
-rw-r--r--openbsc/src/gprs/sgsn_iu.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/openbsc/src/gprs/sgsn_iu.c b/openbsc/src/gprs/sgsn_iu.c
index 6da8f7224..0782513e6 100644
--- a/openbsc/src/gprs/sgsn_iu.c
+++ b/openbsc/src/gprs/sgsn_iu.c
@@ -30,6 +30,7 @@ struct ue_conn_ctx {
struct llist_head list;
struct osmo_sua_link *link;
uint32_t conn_id;
+ struct sgsn_pdp_ctx *pdp;
};
static LLIST_HEAD(conn_ctx_list);
@@ -60,13 +61,15 @@ struct ue_conn_ctx *ue_conn_ctx_find(struct osmo_sua_link *link, uint32_t conn_i
* RANAP handling
***********************************************************************/
-int gprs_iu_rab_act(struct sgsn_mm_ctx *mm, uint32_t gtp_ip, uint32_t gtp_tei)
+int gprs_iu_rab_act(struct sgsn_pdp_ctx *pdp, uint32_t gtp_ip, uint32_t gtp_tei)
{
+ struct sgsn_mm_ctx *mm = pdp->mm;
struct ue_conn_ctx *uectx;
struct osmo_scu_prim *prim;
struct msgb *msg;
uectx = mm->iu.ue_ctx;
+ uectx->pdp = pdp;
msg = ranap_new_msg_rab_assign_data(1, gtp_ip, gtp_tei);
msg->l2h = msg->data;
@@ -217,7 +220,9 @@ static int ranap_handle_co_iu_rel_req(struct ue_conn_ctx *ctx, RANAP_Iu_ReleaseR
return 0;
}
-static int ranap_handle_co_rab_ass_resp(void *ctx, RANAP_RAB_AssignmentResponseIEs_t *ies)
+int send_act_pdp_cont_acc(struct sgsn_pdp_ctx *pctx);
+
+static int ranap_handle_co_rab_ass_resp(struct ue_conn_ctx *ctx, RANAP_RAB_AssignmentResponseIEs_t *ies)
{
int i, rc;
@@ -236,6 +241,8 @@ static int ranap_handle_co_rab_ass_resp(void *ctx, RANAP_RAB_AssignmentResponseI
LOGPC(DRANAP, LOGL_INFO, "\n");
+ send_act_pdp_cont_acc(ctx->pdp);
+
return rc;
}