diff options
author | Philippe Antoine <contact@catenacyber.fr> | 2020-04-21 15:32:54 +0200 |
---|---|---|
committer | Philippe Antoine <contact@catenacyber.fr> | 2020-04-21 15:34:53 +0200 |
commit | 1b73f7372e0ddbdef9549c92cd56ba59746bd14d (patch) | |
tree | a63b497cdde573b741525765f47c136ffb5f8254 /example/reader_util.c | |
parent | e60354996737df132ef4a2a681839e1bf403c296 (diff) |
Gets right protocol after IPv6 header
Diffstat (limited to 'example/reader_util.c')
-rw-r--r-- | example/reader_util.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/example/reader_util.c b/example/reader_util.c index 73d580cc1..a5c003102 100644 --- a/example/reader_util.c +++ b/example/reader_util.c @@ -937,7 +937,13 @@ static struct ndpi_flow_info *get_ndpi_flow_info6(struct ndpi_workflow * workflo iph.version = IPVERSION; iph.saddr = iph6->ip6_src.u6_addr.u6_addr32[2] + iph6->ip6_src.u6_addr.u6_addr32[3]; iph.daddr = iph6->ip6_dst.u6_addr.u6_addr32[2] + iph6->ip6_dst.u6_addr.u6_addr32[3]; - iph.protocol = iph6->ip6_hdr.ip6_un1_nxt; + u_int8_t l4proto = iph6->ip6_hdr.ip6_un1_nxt; + u_int16_t ip_len = ntohs(iph6->ip6_hdr.ip6_un1_plen); + const u_int8_t *l4ptr = (((const u_int8_t *) iph6) + sizeof(struct ndpi_ipv6hdr)); + if(ndpi_handle_ipv6_extension_headers(NULL, &l4ptr, &ip_len, &l4proto) != 0) { + return(NULL); + } + iph.protocol = l4proto; return(get_ndpi_flow_info(workflow, 6, vlan_id, tunnel_type, &iph, iph6, ip_offset, ipsize, |