From fd0851d6d1b1a829f0094711f1afb237efd46a6a Mon Sep 17 00:00:00 2001 From: Lionel Gauthier <lionel.gauthier@eurecom.fr> Date: Wed, 3 Jun 2015 12:40:39 +0000 Subject: [PATCH] Bug teid git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7522 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair-cn/GTPV1-U/GTPUAH/xt_GTPUAH.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/openair-cn/GTPV1-U/GTPUAH/xt_GTPUAH.c b/openair-cn/GTPV1-U/GTPUAH/xt_GTPUAH.c index 9e5d9bc49f..1da3edbdb2 100755 --- a/openair-cn/GTPV1-U/GTPUAH/xt_GTPUAH.c +++ b/openair-cn/GTPV1-U/GTPUAH/xt_GTPUAH.c @@ -596,24 +596,30 @@ _gtpuah_tg4_add(struct sk_buff *old_skb_pP, const struct xt_action_param *par_pP //---------------------------------------------------------------------------- ct = nf_ct_get(old_skb_pP, &ctinfo); if (ct == NULL) { - PR_INFO(MODULE_NAME": _gtpuah_target_add force info_pP mark %u to skb_pP mark %u\n", - old_skb_pP->mark, - ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->rtun); - old_skb_pP->mark = ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->rtun; + PR_INFO(MODULE_NAME": _gtpuah_target_add force targinfo ltun %u to skb_pP mark %u\n", + ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->ltun, + old_skb_pP->mark); + newmark = ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->ltun; } else { //XT_CONNMARK_RESTORE: - newmark = old_skb_pP->mark ^ ct->mark; + newmark = old_skb_pP->mark ^ ct->mark; - PR_INFO(MODULE_NAME": _gtpuah_target_add restore mark %u (skb mark %u ct mark %u) len %u sgw addr %x\n", + PR_INFO(MODULE_NAME": _gtpuah_target_add restore mark %u (skb mark %u ct mark %u) len %u sgw addr %x\n", newmark, old_skb_pP->mark, ct->mark, orig_iplen, ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->raddr); + if (newmark != ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->ltun) { + pr_warn(MODULE_NAME": _gtpuah_target_add restore mark 0x%x mismatch ltun 0x%x (rtun 0x%x)", + newmark, ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->ltun, + ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->rtun); + } } + /* Add GTPu header */ gtpuh.flags = 0x30; /* v1 and Protocol-type=GTP */ gtpuh.msgtype = 0xff; /* T-PDU */ gtpuh.length = htons(orig_iplen); - gtpuh.tunid = htonl(newmark); + gtpuh.tunid = htonl(((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->rtun); _gtpuah_sock.addr_send.sin_addr.s_addr = ((const struct xt_gtpuah_target_info *)(par_pP->targinfo))->raddr; _gtpuah_ksocket_send(_gtpuah_sock.sock, &_gtpuah_sock.addr_send, (unsigned char*)>puh, sizeof(gtpuh), (unsigned char*)old_iph_p, orig_iplen); -- GitLab