After parsing the GTP packet header, the next protocol type should
be converted from RTE_GTP_TYPE_IPV4/IPV6 to RTE_ETHER_TYPE_IPV4/IPV6.
Otherwise, the next protocol cannot be parsed.

Bugzilla ID: 1672
Fixes: 64ed7f854cf4 ("net: add tunnel packet type parsing")
Cc: sta...@dpdk.org

Signed-off-by: Dengdui Huang <huangdeng...@huawei.com>
Acked-by: Jie Hai <haij...@huawei.com>
---
 lib/net/rte_net.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/net/rte_net.c b/lib/net/rte_net.c
index be24690fdf..1771588a09 100644
--- a/lib/net/rte_net.c
+++ b/lib/net/rte_net.c
@@ -231,7 +231,13 @@ ptype_tunnel_with_udp(uint16_t *proto, const struct 
rte_mbuf *m,
                 */
                if (gh->msg_type == 0xff) {
                        ip_ver = *(const uint8_t *)((const char *)gh + gtp_len);
-                       *proto = (ip_ver) & 0xf0;
+                       ip_ver = (ip_ver) & 0xf0;
+                       if (ip_ver == RTE_GTP_TYPE_IPV4)
+                               *proto = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4);
+                       else if (ip_ver == RTE_GTP_TYPE_IPV6)
+                               *proto = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6);
+                       else
+                               *proto = 0;
                } else {
                        *proto = 0;
                }
-- 
2.33.0

Reply via email to