X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/77f2fe1fd6aa3cf349e8dbe49a5710a4f18104fe..d0aad4b7edc05d9ecf6b9c6615a47fd5c58d732c:/print-macsec.c diff --git a/print-macsec.c b/print-macsec.c index cf172811..607f696e 100644 --- a/print-macsec.c +++ b/print-macsec.c @@ -25,9 +25,7 @@ #include #endif -#include - -#include +#include "netdissect-stdinc.h" #include "netdissect.h" #include "addrtoname.h" @@ -108,7 +106,7 @@ static void macsec_print_header(netdissect_options *ndo, ND_PRINT(", "); } -/* returns < 0 if the packet can be decoded completely */ +/* returns < 0 iff the packet can be decoded completely */ int macsec_print(netdissect_options *ndo, const u_char **bp, u_int *lengthp, u_int *caplenp, u_int *hdrlenp, const struct lladdr_info *src, const struct lladdr_info *dst) @@ -219,6 +217,13 @@ int macsec_print(netdissect_options *ndo, const u_char **bp, } *lengthp -= MACSEC_DEFAULT_ICV_LEN; *caplenp -= MACSEC_DEFAULT_ICV_LEN; + /* + * Update the snapend thus the ICV field is not in the payload for + * the caller. + * The ICV (Integrity Check Value) is at the end of the frame, after + * the secure data. + */ + ndo->ndo_snapend -= MACSEC_DEFAULT_ICV_LEN; /* * If the SL field is non-zero, then it's the length of the