aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gprs/iu.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-01-10 23:43:24 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-03-03 16:19:08 +0100
commit8b713f817d4516f0e8682a172eeb39d1397c8d3f (patch)
tree93ad3ac6155d04ba5080dc0fe37abcf225707c00 /openbsc/src/gprs/iu.c
parentce3b41fdb6a46500fb4957688e3708bddd2327cc (diff)
generalize rab_act for ps and cs
Diffstat (limited to 'openbsc/src/gprs/iu.c')
-rw-r--r--openbsc/src/gprs/iu.c35
1 files changed, 24 insertions, 11 deletions
diff --git a/openbsc/src/gprs/iu.c b/openbsc/src/gprs/iu.c
index 8eee5ed49..6e421511c 100644
--- a/openbsc/src/gprs/iu.c
+++ b/openbsc/src/gprs/iu.c
@@ -61,24 +61,37 @@ 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)
+static int iu_rab_act(struct ue_conn_ctx *ue_ctx, struct msgb *msg)
{
- struct ue_conn_ctx *uectx;
struct osmo_scu_prim *prim;
+
+ /* wrap RANAP message in SCCP N-DATA.req */
+ prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
+ prim->u.data.conn_id = ue_ctx->conn_id;
+ osmo_prim_init(&prim->oph,
+ SCCP_SAP_USER,
+ OSMO_SCU_PRIM_N_DATA,
+ PRIM_OP_REQUEST,
+ msg);
+ return osmo_sua_user_link_down(ue_ctx->link, &prim->oph);
+}
+
+int iu_rab_act_cs(struct ue_conn_ctx *ue_ctx, uint32_t rtp_ip, uint16_t rtp_port)
+{
struct msgb *msg;
- uectx = mm->iu.ue_ctx;
+ msg = ranap_new_msg_rab_assign_voice(1, rtp_ip, rtp_port);
+ msg->l2h = msg->data;
+ iu_rab_act(ue_ctx, msg);
+}
+
+int iu_rab_act_ps(struct ue_conn_ctx *ue_ctx, uint32_t gtp_ip, uint32_t gtp_tei)
+{
+ struct msgb *msg;
msg = ranap_new_msg_rab_assign_data(1, gtp_ip, gtp_tei);
msg->l2h = msg->data;
-
- /* wrap RANAP message in SCCP N-DATA.req */
- prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
- prim->u.data.conn_id = uectx->conn_id;
- osmo_prim_init(&prim->oph, SCCP_SAP_USER,
- OSMO_SCU_PRIM_N_DATA,
- PRIM_OP_REQUEST, msg);
- osmo_sua_user_link_down(uectx->link, &prim->oph);
+ iu_rab_act(ue_ctx, msg);
}
int gprs_iu_rab_deact(struct sgsn_mm_ctx *mm)