#include "netdissect-stdinc.h"
+#define ND_LONGJMP_FROM_TCHECK
#include "netdissect.h"
#include "extract.h"
uint32_t vni;
ndo->ndo_protocol = "vxlan";
+ nd_print_protocol_caps(ndo);
if (len < VXLAN_HDR_LEN)
- goto trunc;
-
- ND_TCHECK_LEN(bp, VXLAN_HDR_LEN);
+ goto invalid;
flags = GET_U_1(bp);
- bp += 4;
-
- vni = GET_BE_U_3(bp);
- bp += 4;
-
- nd_print_protocol_caps(ndo);
+ bp += 1;
ND_PRINT(", flags [%s] (0x%02x), ",
bittok2str_nosep(vxlan_flags, "invalid", flags), flags);
+
+ /* 1st Reserved */
+ bp += 3;
+
+ vni = GET_BE_U_3(bp);
+ bp += 3;
ND_PRINT("vni %u\n", vni);
+ /* 2nd Reserved */
+ ND_TCHECK_1(bp);
+ bp += 1;
+
ether_print(ndo, bp, len - VXLAN_HDR_LEN, ND_BYTES_AVAILABLE_AFTER(bp), NULL, NULL);
return;
-trunc:
- nd_print_trunc(ndo);
+invalid:
+ nd_print_invalid(ndo);
}