unsigned_relts_print(ndo, hold);
}
ND_PRINT((ndo, "%s (%s/%d, %s", njoin ? "Join" : "Prune",
- ipaddr_string(ndo, bp + 26), bp[25] & 0x3f,
+ ipaddr_string(ndo, bp + 26), EXTRACT_U_1(bp + 25) & 0x3f,
ipaddr_string(ndo, bp + 12)));
if (EXTRACT_BE_U_4(bp + 16) != 0xffffffff)
ND_PRINT((ndo, "/%s", ipaddr_string(ndo, bp + 16)));
ND_PRINT((ndo, ") %s%s %s",
- (bp[24] & 0x01) ? "Sparse" : "Dense",
- (bp[25] & 0x80) ? " WC" : "",
- (bp[25] & 0x40) ? "RP" : "SPT"));
+ (EXTRACT_U_1(bp + 24) & 0x01) ? "Sparse" : "Dense",
+ (EXTRACT_U_1(bp + 25) & 0x80) ? " WC" : "",
+ (EXTRACT_U_1(bp + 25) & 0x40) ? "RP" : "SPT"));
return;
}
goto trunc;
ND_TCHECK_6(bp);
ND_PRINT((ndo, "\n\t%s %s%s%s%s/%d", type,
- (bp[0] & 0x01) ? "Sparse " : "Dense ",
- (bp[1] & 0x80) ? "WC " : "",
- (bp[1] & 0x40) ? "RP " : "SPT ",
+ (EXTRACT_U_1(bp) & 0x01) ? "Sparse " : "Dense ",
+ (EXTRACT_U_1(bp + 1) & 0x80) ? "WC " : "",
+ (EXTRACT_U_1(bp + 1) & 0x40) ? "RP " : "SPT ",
ipaddr_string(ndo, bp + 2),
- bp[1] & 0x3f));
+ EXTRACT_U_1(bp + 1) & 0x3f));
bp += 6;
len -= 6;
}
ND_PRINT((ndo, " Sparse-Dense-mode"));
break;
default:
- ND_PRINT((ndo, " mode-%d", bp[8] >> 4));
+ ND_PRINT((ndo, " mode-%d", EXTRACT_U_1(bp + 8) >> 4));
break;
}
}
ND_PRINT((ndo, "/%s", ipaddr_string(ndo, bp + 12)));
ND_TCHECK_4(bp + 24);
ND_PRINT((ndo, " %s pref %d metric %d",
- (bp[20] & 0x80) ? "RP-tree" : "SPT",
- EXTRACT_BE_U_4(bp + 20) & 0x7fffffff,
- EXTRACT_BE_U_4(bp + 24)));
+ (EXTRACT_U_1(bp + 20) & 0x80) ? "RP-tree" : "SPT",
+ EXTRACT_BE_U_4(bp + 20) & 0x7fffffff,
+ EXTRACT_BE_U_4(bp + 24)));
break;
case PIMV1_TYPE_JOIN_PRUNE:
case PIMV1_TYPE_GRAFT:
}
ND_TCHECK(bp[4]);
if ((bp[4] >> 4) != 1)
- ND_PRINT((ndo, " [v%d]", bp[4] >> 4));
+ ND_PRINT((ndo, " [v%d]", EXTRACT_U_1(bp + 4) >> 4));
return;
trunc:
break;
}
if (bp[0] & 0xfc)
- ND_PRINT((ndo, " [rsvd=0x%02x]", bp[0] & 0xfc));
+ ND_PRINT((ndo, " [rsvd=0x%02x]", EXTRACT_U_1(bp) & 0xfc));
bp += 1;
len -= 1;
if (len < 1)
if (len < 6)
goto trunc;
ND_TCHECK_6(bp);
- ND_PRINT((ndo, "%c%s%s/%d", s, bp[0] & 1 ? "!" : "",
- ipaddr_string(ndo, bp + 2), bp[1]));
+ ND_PRINT((ndo, "%c%s%s/%d", s, EXTRACT_U_1(bp) & 1 ? "!" : "",
+ ipaddr_string(ndo, bp + 2), EXTRACT_U_1(bp + 1)));
if (bp[0] & 0x02) {
ND_PRINT((ndo, " bidir"));
}
if (bp[0] & 0xfc) {
- ND_PRINT((ndo, "[rsvd=0x%02x]", bp[0] & 0xfc));
+ ND_PRINT((ndo, "[rsvd=0x%02x]", EXTRACT_U_1(bp) & 0xfc));
}
s = ',';
bp += 6; len -= 6;
if (!silent) {
ND_PRINT((ndo, "%s", ipaddr_string(ndo, bp + 2)));
if (bp[1] != 32)
- ND_PRINT((ndo, "/%u", bp[1]));
+ ND_PRINT((ndo, "/%u", EXTRACT_U_1(bp + 1)));
}
}
else if (af == AF_INET6) {
if (!silent) {
ND_PRINT((ndo, "%s", ip6addr_string(ndo, bp + 2)));
if (bp[1] != 128)
- ND_PRINT((ndo, "/%u", bp[1]));
+ ND_PRINT((ndo, "/%u", EXTRACT_U_1(bp + 1)));
}
}
if (bp[0] && !silent) {
if (at == pimv2_group) {
- ND_PRINT((ndo, "(0x%02x)", bp[0]));
+ ND_PRINT((ndo, "(0x%02x)", EXTRACT_U_1(bp)));
} else {
ND_PRINT((ndo, "(%s%s%s",
- bp[0] & 0x04 ? "S" : "",
- bp[0] & 0x02 ? "W" : "",
- bp[0] & 0x01 ? "R" : ""));
+ EXTRACT_U_1(bp) & 0x04 ? "S" : "",
+ EXTRACT_U_1(bp) & 0x02 ? "W" : "",
+ EXTRACT_U_1(bp) & 0x01 ? "R" : ""));
if (bp[0] & 0xf8) {
- ND_PRINT((ndo, "+0x%02x", bp[0] & 0xf8));
+ ND_PRINT((ndo, "+0x%02x", EXTRACT_U_1(bp) & 0xf8));
}
ND_PRINT((ndo, ")"));
}
if (olen != 4) {
ND_PRINT((ndo, "ERROR: Option Length != 4 Bytes (%u)", olen));
} else {
- ND_PRINT((ndo, "v%d", *bp));
+ ND_PRINT((ndo, "v%d", EXTRACT_U_1(bp)));
if (*(bp+1) != 0) {
ND_PRINT((ndo, ", interval "));
unsigned_relts_print(ndo, *(bp+1));
if (len < 1)
goto trunc;
ND_TCHECK(bp[0]);
- ND_PRINT((ndo, " hashmlen=%d", bp[0]));
+ ND_PRINT((ndo, " hashmlen=%d", EXTRACT_U_1(bp)));
if (len < 2)
goto trunc;
ND_TCHECK(bp[2]);
- ND_PRINT((ndo, " BSRprio=%d", bp[1]));
+ ND_PRINT((ndo, " BSRprio=%d", EXTRACT_U_1(bp + 1)));
bp += 2;
len -= 2;
if (len < 1)
goto trunc;
ND_TCHECK(bp[0]);
- ND_PRINT((ndo, " RPcnt=%d", bp[0]));
+ ND_PRINT((ndo, " RPcnt=%d", EXTRACT_U_1(bp)));
if (len < 2)
goto trunc;
ND_TCHECK(bp[1]);
- ND_PRINT((ndo, " FRPcnt=%d", frpcnt = bp[1]));
+ ND_PRINT((ndo, " FRPcnt=%d", frpcnt = EXTRACT_U_1(bp + 1)));
if (len < 4)
goto trunc;
bp += 4;
if (len < 3)
goto trunc;
ND_TCHECK(bp[2]);
- ND_PRINT((ndo, ",prio=%d", bp[2]));
+ ND_PRINT((ndo, ",prio=%d", EXTRACT_U_1(bp + 2)));
if (len < 4)
goto trunc;
bp += 4;
if (len < 1)
goto trunc;
ND_TCHECK(bp[0]);
- ND_PRINT((ndo, " prefix-cnt=%d", bp[0]));
+ ND_PRINT((ndo, " prefix-cnt=%d", EXTRACT_U_1(bp)));
pfxcnt = bp[0];
if (len < 2)
goto trunc;
ND_TCHECK(bp[1]);
- ND_PRINT((ndo, " prio=%d", bp[1]));
+ ND_PRINT((ndo, " prio=%d", EXTRACT_U_1(bp + 1)));
if (len < 4)
goto trunc;
ND_TCHECK_2(bp + 2);