aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libiu
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2016-02-03 15:17:42 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-03-03 16:19:10 +0100
commit4371ff8cce45071e9b0fa684938677d696f4c207 (patch)
tree66680c7f87f6484afd81a3646e135e7e5897fd90 /openbsc/src/libiu
parent92223cc32e55b884fdf36afc4fb82c1bd227041b (diff)
sgsn: Get gtp ip and teid from pdp context in gprs_iu_rab_act()
Diffstat (limited to 'openbsc/src/libiu')
-rw-r--r--openbsc/src/libiu/iu.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/openbsc/src/libiu/iu.c b/openbsc/src/libiu/iu.c
index 356f0888e..41425df3a 100644
--- a/openbsc/src/libiu/iu.c
+++ b/openbsc/src/libiu/iu.c
@@ -21,6 +21,8 @@
#include <openbsc/iu.h>
#include <openbsc/debug.h>
+#include <pdp.h>
+
#include <osmocom/ranap/ranap_ies_defs.h>
#include <osmocom/ranap/ranap_common.h>
#include <osmocom/ranap/ranap_common_cn.h>
@@ -91,17 +93,23 @@ int iu_rab_act_cs(struct ue_conn_ctx *ue_ctx, uint32_t rtp_ip, uint16_t rtp_port
return iu_rab_act(ue_ctx, msg);
}
-int iu_rab_act_ps(struct sgsn_pdp_ctx *pdp, uint32_t gtp_ip, uint32_t gtp_tei)
+int iu_rab_act_ps(struct sgsn_pdp_ctx *pdp)
{
struct msgb *msg;
struct sgsn_mm_ctx *mm = pdp->mm;
struct ue_conn_ctx *uectx;
+ uint32_t ggsn_ip;
uectx = mm->iu.ue_ctx;
uectx->pdp = pdp;
+
+ /* Get the IP address for ggsn user plane */
+ memcpy(&ggsn_ip, pdp->lib->gsnru.v, pdp->lib->gsnru.l);
+ ggsn_ip = htonl(ggsn_ip);
+
/* FIXME: Generate unique RAB ID per UE */
- msg = ranap_new_msg_rab_assign_data(1, gtp_ip, gtp_tei);
+ msg = ranap_new_msg_rab_assign_data(1, ggsn_ip, pdp->lib->teid_own);
msg->l2h = msg->data;
return iu_rab_act(uectx, msg);
}