producer: fix sFlow parsing when sampled header is truncated #139
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We return early if we don't even have an Ethernet header. We also need to increment the offset even if data is truncated to not confuse the remaining of the packet with something else (eg extract TCP/UDP ports when TCP/UDP header is too short).
Use IHL to correctly skip the IPv4 header when there are IP options. Also fix the offset for TCP payload.
This also removes the encap/iteration loop. As encap is set to false at the beginning of the loop, it was always executed one. I suppose this was the remaining of some other code. The
iterateMpls
flag is removed by moving some code around. One should look the diff with blanks ignored.Unfortunately, not everything is covered by tests, notably MPLS parsing. Please double check this part.
Also, unrelated, but I wonder why you use
(*flowMessage).SrcAddr
instead of justflowMessage.SrcAddr
.