Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug #837 - handle IPv6 fragment extension header #838

Merged
merged 6 commits into from
Dec 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
09/03/2023 Version 4.5.0-beta1
- handle IPv6 fragment extension header (#832 #837)
- low PPS values run at full speed after several days (#779)
- create DLT_LINUX_SLL2 plugin (#727)

Expand Down
2 changes: 2 additions & 0 deletions docs/CREDIT
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,5 @@ David Guti <GitHub @david-guti>

Bastian Triller <GitHub @btriller>
- Linux SLL2

Chuck Cottrill <GitHub @ChuckCottrill>
18 changes: 17 additions & 1 deletion src/common/get.c
Original file line number Diff line number Diff line change
Expand Up @@ -601,9 +601,25 @@ get_layer4_v6(const ipv6_hdr_t *ip6_hdr, const u_char *end_ptr)
break;

/*
* Can't handle. Unparsable IPv6 fragment/encrypted data
* handle (unparsable) IPv6 fragment data
*/
case TCPR_IPV6_NH_FRAGMENT:
// next points to l4 data
dbgx(3, "Go deeper due to fragment extension header 0x%02X", proto);
exthdr = get_ipv6_next(next, end_ptr);
if ((exthdr == NULL) || ((u_char *)exthdr > end_ptr)) {
next = NULL;
done = true;
break;
}
proto = exthdr->ip_nh;
next = exthdr;
// done = true;
break;

/*
* Can't handle. Unparsable IPv6 encrypted data
*/
case TCPR_IPV6_NH_ESP:
next = NULL;
done = true;
Expand Down