refactor: update packet get layer/tunnel API

This commit is contained in:
luwenpeng
2024-08-21 11:55:06 +08:00
parent 1aece166cd
commit a0fb57e843
7 changed files with 151 additions and 171 deletions

View File

@@ -270,31 +270,32 @@ static inline void packet_exdata_init(const struct packet *pkt, enum flow_direct
pkt_exdata->flow_dir = dir;
int get_inner_addr = 0;
struct layer layer;
PACKET_FOREACH_LAYER_REVERSE(pkt, layer)
int count = packet_get_layer_count(pkt);
for (int i = count - 1; i >= 0; i--)
{
switch (layer.proto)
const struct layer *layer = packet_get_layer_by_idx(pkt, i);
switch (layer->proto)
{
case LAYER_PROTO_TCP:
pkt_exdata->src_port = ntohs(layer.hdr.tcp->th_sport);
pkt_exdata->dst_port = ntohs(layer.hdr.tcp->th_dport);
pkt_exdata->tcp_seq = ntohl(layer.hdr.tcp->th_seq);
pkt_exdata->tcp_ack = ntohl(layer.hdr.tcp->th_ack);
pkt_exdata->tcp_flags = layer.hdr.tcp->th_flags;
pkt_exdata->src_port = ntohs(layer->hdr.tcp->th_sport);
pkt_exdata->dst_port = ntohs(layer->hdr.tcp->th_dport);
pkt_exdata->tcp_seq = ntohl(layer->hdr.tcp->th_seq);
pkt_exdata->tcp_ack = ntohl(layer->hdr.tcp->th_ack);
pkt_exdata->tcp_flags = layer->hdr.tcp->th_flags;
pkt_exdata->tcp_payload_len = packet_get_payload_len(pkt);
break;
case LAYER_PROTO_UDP:
pkt_exdata->src_port = ntohs(layer.hdr.udp->uh_sport);
pkt_exdata->dst_port = ntohs(layer.hdr.udp->uh_dport);
pkt_exdata->src_port = ntohs(layer->hdr.udp->uh_sport);
pkt_exdata->dst_port = ntohs(layer->hdr.udp->uh_dport);
break;
case LAYER_PROTO_IPV4:
pkt_exdata->src_addr.v4 = layer.hdr.ip4->ip_src;
pkt_exdata->dst_addr.v4 = layer.hdr.ip4->ip_dst;
pkt_exdata->src_addr.v4 = layer->hdr.ip4->ip_src;
pkt_exdata->dst_addr.v4 = layer->hdr.ip4->ip_dst;
get_inner_addr = 1;
break;
case LAYER_PROTO_IPV6:
pkt_exdata->src_addr.v6 = layer.hdr.ip6->ip6_src;
pkt_exdata->dst_addr.v6 = layer.hdr.ip6->ip6_dst;
pkt_exdata->src_addr.v6 = layer->hdr.ip6->ip6_src;
pkt_exdata->dst_addr.v6 = layer->hdr.ip6->ip6_dst;
get_inner_addr = 1;
break;
default: