refactor: update packet get layer/tunnel API
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user