ndo->ndo_protocol = "gre";
nd_print_protocol_caps(ndo);
- ND_LCHECK_U(length, 2);
+ ND_ICHECK_U(length, <, 2);
vers = GET_BE_U_2(bp) & GRE_VERS_MASK;
ND_PRINT("v%u",vers);
u_int len = length;
uint16_t flags, prot;
- ND_LCHECK_U(len, 2);
+ ND_ICHECK_U(len, <, 2);
flags = GET_BE_U_2(bp);
if (ndo->ndo_vflag)
ND_PRINT(", Flags [%s]",
len -= 2;
bp += 2;
- ND_LCHECK_U(len, 2);
+ ND_ICHECK_U(len, <, 2);
prot = GET_BE_U_2(bp);
len -= 2;
bp += 2;
if ((flags & GRE_CP) | (flags & GRE_RP)) {
uint16_t sum;
- ND_LCHECK_U(len, 2);
+ ND_ICHECK_U(len, <, 2);
sum = GET_BE_U_2(bp);
if (ndo->ndo_vflag)
ND_PRINT(", sum 0x%x", sum);
bp += 2;
len -= 2;
- ND_LCHECK_U(len, 2);
+ ND_ICHECK_U(len, <, 2);
ND_PRINT(", off 0x%x", GET_BE_U_2(bp));
bp += 2;
len -= 2;
}
if (flags & GRE_KP) {
- ND_LCHECK_U(len, 4);
+ ND_ICHECK_U(len, <, 4);
ND_PRINT(", key=0x%x", GET_BE_U_4(bp));
bp += 4;
len -= 4;
}
if (flags & GRE_SP) {
- ND_LCHECK_U(len, 4);
+ ND_ICHECK_U(len, <, 4);
ND_PRINT(", seq %u", GET_BE_U_4(bp));
bp += 4;
len -= 4;
uint8_t sreoff;
uint8_t srelen;
- ND_LCHECK_U(len, 4);
+ ND_ICHECK_U(len, <, 4);
af = GET_BE_U_2(bp);
sreoff = GET_U_1(bp + 2);
srelen = GET_U_1(bp + 3);
if (!gre_sre_print(ndo, af, sreoff, srelen, bp, len))
goto invalid;
- ND_LCHECK_U(len, srelen);
+ ND_ICHECK_U(len, <, srelen);
bp += srelen;
len -= srelen;
}
u_int len = length;
uint16_t flags, prot;
- ND_LCHECK_U(len, 2);
+ ND_ICHECK_U(len, <, 2);
flags = GET_BE_U_2(bp);
len -= 2;
bp += 2;
ND_PRINT(", Flags [%s]",
bittok2str(gre_flag_values,"none",flags));
- ND_LCHECK_U(len, 2);
+ ND_ICHECK_U(len, <, 2);
prot = GET_BE_U_2(bp);
len -= 2;
bp += 2;
if (flags & GRE_KP) {
uint32_t k;
- ND_LCHECK_U(len, 4);
+ ND_ICHECK_U(len, <, 4);
k = GET_BE_U_4(bp);
ND_PRINT(", call %u", k & 0xffff);
len -= 4;
}
if (flags & GRE_SP) {
- ND_LCHECK_U(len, 4);
+ ND_ICHECK_U(len, <, 4);
ND_PRINT(", seq %u", GET_BE_U_4(bp));
bp += 4;
len -= 4;
}
if (flags & GRE_AP) {
- ND_LCHECK_U(len, 4);
+ ND_ICHECK_U(len, <, 4);
ND_PRINT(", ack %u", GET_BE_U_4(bp));
bp += 4;
len -= 4;
}
while (srelen != 0) {
- ND_LCHECK_U(len, 4);
+ ND_ICHECK_U(len, <, 4);
ND_TCHECK_LEN(bp, sizeof(nd_ipv4));
addrtostr(bp, buf, sizeof(buf));
}
while (srelen != 0) {
- ND_LCHECK_U(len, 2);
+ ND_ICHECK_U(len, <, 2);
ND_PRINT(" %s%x",
((bp - up) == sreoff) ? "*" : "", GET_BE_U_2(bp));