* FOR A PARTICULAR PURPOSE.
*/
+/* \summary: Generic Network Virtualization Encapsulation (Geneve) printer */
+
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
ND_PRINT((ndo, "%s", sep));
sep = ", ";
- opt_class = EXTRACT_16BITS(bp);
- opt_type = *(bp + 2);
- opt_len = 4 + ((*(bp + 3) & OPT_LEN_MASK) * 4);
+ opt_class = EXTRACT_BE_U_2(bp);
+ opt_type = EXTRACT_U_1(bp + 2);
+ opt_len = 4 + ((EXTRACT_U_1(bp + 3) & OPT_LEN_MASK) * 4);
ND_PRINT((ndo, "class %s (0x%x) type 0x%x%s len %u",
format_opt_class(opt_class), opt_class, opt_type,
ND_PRINT((ndo, " data"));
for (i = 4; i < opt_len; i += 4) {
- ND_PRINT((ndo, " %08x", EXTRACT_32BITS(data)));
+ ND_PRINT((ndo, " %08x", EXTRACT_BE_U_4(data)));
data++;
}
}
ND_PRINT((ndo, "Geneve"));
- ND_TCHECK2(*bp, 8);
+ ND_TCHECK_8(bp);
- ver_opt = *bp;
+ ver_opt = EXTRACT_U_1(bp);
bp += 1;
len -= 1;
return;
}
- flags = *bp;
+ flags = EXTRACT_U_1(bp);
bp += 1;
len -= 1;
- prot = EXTRACT_16BITS(bp);
+ prot = EXTRACT_BE_U_2(bp);
bp += 2;
len -= 2;
- vni = EXTRACT_24BITS(bp);
+ vni = EXTRACT_BE_U_3(bp);
bp += 3;
len -= 3;
- reserved = *bp;
+ reserved = EXTRACT_U_1(bp);
bp += 1;
len -= 1;
return;
}
- ND_TCHECK2(*bp, opts_len);
+ ND_TCHECK_LEN(bp, opts_len);
if (opts_len > 0) {
ND_PRINT((ndo, ", options ["));
else
ND_PRINT((ndo, "\n\t"));
- if (ethertype_print(ndo, prot, bp, len, len) == 0) {
+ if (ethertype_print(ndo, prot, bp, len, ndo->ndo_snapend - bp, NULL, NULL) == 0) {
if (prot == ETHERTYPE_TEB)
- ether_print(ndo, bp, len, len, NULL, NULL);
+ ether_print(ndo, bp, len, ndo->ndo_snapend - bp, NULL, NULL);
else
ND_PRINT((ndo, "geneve-proto-0x%x", prot));
}