feature: add GTP utils, support overwrite message length of GTP header

This commit is contained in:
luwenpeng
2024-07-09 11:17:03 +08:00
parent b435ec2ea1
commit c87ad330e0
28 changed files with 1676 additions and 648 deletions

View File

@@ -4,8 +4,8 @@
#include "tuple.h"
#include "tcp_utils.h"
#include "udp_utils.h"
#include "ipv4_utils.h"
#include "ipv6_utils.h"
#include "ip4_utils.h"
#include "ip6_utils.h"
#include "packet_def.h"
#include "packet_utils.h"
@@ -145,16 +145,16 @@ int packet_get_innermost_tuple2(const struct packet *pkt, struct tuple2 *tuple)
{
const struct ip *ip4_hdr = (const struct ip *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V4;
tuple->src_addr.v4 = ipv4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ipv4_hdr_get_dst_in_addr(ip4_hdr);
tuple->src_addr.v4 = ip4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ip4_hdr_get_dst_in_addr(ip4_hdr);
return 0;
}
if (layer->proto == LAYER_PROTO_IPV6)
{
const struct ip6_hdr *ip6_hdr = (const struct ip6_hdr *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V6;
tuple->src_addr.v6 = ipv6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ipv6_hdr_get_dst_in6_addr(ip6_hdr);
tuple->src_addr.v6 = ip6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ip6_hdr_get_dst_in6_addr(ip6_hdr);
return 0;
}
}
@@ -177,16 +177,16 @@ int packet_get_outermost_tuple2(const struct packet *pkt, struct tuple2 *tuple)
{
const struct ip *ip4_hdr = (const struct ip *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V4;
tuple->src_addr.v4 = ipv4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ipv4_hdr_get_dst_in_addr(ip4_hdr);
tuple->src_addr.v4 = ip4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ip4_hdr_get_dst_in_addr(ip4_hdr);
return 0;
}
if (layer->proto == LAYER_PROTO_IPV6)
{
const struct ip6_hdr *ip6_hdr = (const struct ip6_hdr *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V6;
tuple->src_addr.v6 = ipv6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ipv6_hdr_get_dst_in6_addr(ip6_hdr);
tuple->src_addr.v6 = ip6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ip6_hdr_get_dst_in6_addr(ip6_hdr);
return 0;
}
}
@@ -230,8 +230,8 @@ int packet_get_innermost_tuple4(const struct packet *pkt, struct tuple4 *tuple)
{
const struct ip *ip4_hdr = (const struct ip *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V4;
tuple->src_addr.v4 = ipv4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ipv4_hdr_get_dst_in_addr(ip4_hdr);
tuple->src_addr.v4 = ip4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ip4_hdr_get_dst_in_addr(ip4_hdr);
layer_l3 = layer;
break;
}
@@ -239,8 +239,8 @@ int packet_get_innermost_tuple4(const struct packet *pkt, struct tuple4 *tuple)
{
const struct ip6_hdr *ip6_hdr = (const struct ip6_hdr *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V6;
tuple->src_addr.v6 = ipv6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ipv6_hdr_get_dst_in6_addr(ip6_hdr);
tuple->src_addr.v6 = ip6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ip6_hdr_get_dst_in6_addr(ip6_hdr);
layer_l3 = layer;
break;
}
@@ -274,8 +274,8 @@ int packet_get_outermost_tuple4(const struct packet *pkt, struct tuple4 *tuple)
{
const struct ip *ip4_hdr = (const struct ip *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V4;
tuple->src_addr.v4 = ipv4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ipv4_hdr_get_dst_in_addr(ip4_hdr);
tuple->src_addr.v4 = ip4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ip4_hdr_get_dst_in_addr(ip4_hdr);
layer_l3 = layer;
continue;
}
@@ -283,8 +283,8 @@ int packet_get_outermost_tuple4(const struct packet *pkt, struct tuple4 *tuple)
{
const struct ip6_hdr *ip6_hdr = (const struct ip6_hdr *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V6;
tuple->src_addr.v6 = ipv6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ipv6_hdr_get_dst_in6_addr(ip6_hdr);
tuple->src_addr.v6 = ip6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ip6_hdr_get_dst_in6_addr(ip6_hdr);
layer_l3 = layer;
continue;
}
@@ -356,8 +356,8 @@ int packet_get_innermost_tuple6(const struct packet *pkt, struct tuple6 *tuple)
{
const struct ip *ip4_hdr = (const struct ip *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V4;
tuple->src_addr.v4 = ipv4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ipv4_hdr_get_dst_in_addr(ip4_hdr);
tuple->src_addr.v4 = ip4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ip4_hdr_get_dst_in_addr(ip4_hdr);
layer_l3 = layer;
break;
}
@@ -365,8 +365,8 @@ int packet_get_innermost_tuple6(const struct packet *pkt, struct tuple6 *tuple)
{
const struct ip6_hdr *ip6_hdr = (const struct ip6_hdr *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V6;
tuple->src_addr.v6 = ipv6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ipv6_hdr_get_dst_in6_addr(ip6_hdr);
tuple->src_addr.v6 = ip6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ip6_hdr_get_dst_in6_addr(ip6_hdr);
layer_l3 = layer;
break;
}
@@ -401,8 +401,8 @@ int packet_get_outermost_tuple6(const struct packet *pkt, struct tuple6 *tuple)
{
const struct ip *ip4_hdr = (const struct ip *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V4;
tuple->src_addr.v4 = ipv4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ipv4_hdr_get_dst_in_addr(ip4_hdr);
tuple->src_addr.v4 = ip4_hdr_get_src_in_addr(ip4_hdr);
tuple->dst_addr.v4 = ip4_hdr_get_dst_in_addr(ip4_hdr);
layer_l3 = layer;
continue;
}
@@ -410,8 +410,8 @@ int packet_get_outermost_tuple6(const struct packet *pkt, struct tuple6 *tuple)
{
const struct ip6_hdr *ip6_hdr = (const struct ip6_hdr *)layer->hdr_ptr;
tuple->ip_type = IP_TYPE_V6;
tuple->src_addr.v6 = ipv6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ipv6_hdr_get_dst_in6_addr(ip6_hdr);
tuple->src_addr.v6 = ip6_hdr_get_src_in6_addr(ip6_hdr);
tuple->dst_addr.v6 = ip6_hdr_get_dst_in6_addr(ip6_hdr);
layer_l3 = layer;
continue;
}