bugfix: http_decoder and glimpse_detector use new API get packet layer

This commit is contained in:
luwenpeng
2024-08-21 18:40:19 +08:00
parent 3636406c91
commit 7f96ae196a
2 changed files with 18 additions and 23 deletions

View File

@@ -287,24 +287,23 @@ void httpd_session_get_addr(const struct session *sess, struct httpd_session_add
return;
}
struct layer pkt_layer = {};
PACKET_FOREACH_LAYER_REVERSE(raw_pkt, pkt_layer)
int count = packet_get_layer_count(raw_pkt);
for (int i = count - 1; i >= 0; i--)
{
if (pkt_layer.proto == LAYER_PROTO_TCP)
const struct layer *layer = packet_get_layer_by_idx(raw_pkt, i);
if (layer->proto == LAYER_PROTO_TCP)
{
httpd_set_tcp_addr(pkt_layer.hdr.tcp, addr, fdir);
httpd_set_tcp_addr(layer->hdr.tcp, addr, fdir);
}
else if (pkt_layer.proto == LAYER_PROTO_IPV4)
else if (layer->proto == LAYER_PROTO_IPV4)
{
httpd_set_ipv4_addr(pkt_layer.hdr.ip4, addr, fdir);
httpd_set_ipv4_addr(layer->hdr.ip4, addr, fdir);
break;
}
else if (pkt_layer.proto == LAYER_PROTO_IPV6)
else if (layer->proto == LAYER_PROTO_IPV6)
{
httpd_set_ipv6_addr(pkt_layer.hdr.ip6, addr, fdir);
httpd_set_ipv6_addr(layer->hdr.ip6, addr, fdir);
break;
}
}
return;
}