while (length != 0) {
/* Make sure we at least have the element ID and length. */
- if (!ND_TTEST2(*(p + offset), 2))
+ if (!ND_TTEST_2(p + offset))
return 0;
if (length < 2)
return 0;
memset(&pbody, 0, sizeof(pbody));
- if (!ND_TTEST2(*p, 6))
+ if (!ND_TTEST_6(p))
return 0;
if (length < 6)
return 0;
handle_action(netdissect_options *ndo,
const uint8_t *src, const u_char *p, u_int length)
{
- if (!ND_TTEST2(*p, 2))
+ if (!ND_TTEST_2(p))
return 0;
if (length < 2)
return 0;
if (cp + 4 != ep)
goto invalid;
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
t = EXTRACT_BE_U_4(cp);
if (NULL == (tm = gmtime(&t)))
ND_PRINT((ndo, ": gmtime() error"));
{
if (cp + 4 != ep)
goto invalid;
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ": %us", EXTRACT_BE_U_4(cp)));
return 0;
while (cp < ep) {
if (cp + 16 > ep)
goto invalid;
- ND_TCHECK2(*cp, 16);
+ ND_TCHECK_16(cp);
ND_PRINT((ndo, "%s%s", sep, ip6addr_string(ndo, cp)));
cp += 16;
sep = ", ";
while (cp < ep) {
if (cp + 4 > ep)
goto invalid;
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "%s%s", sep, ipaddr_string(ndo, cp)));
cp += 4;
sep = ", ";
while (cp < ep) {
if (cp + 5 > ep)
goto invalid;
- ND_TCHECK2(*cp, 5);
+ ND_TCHECK_5(cp);
ND_PRINT((ndo, "%s%s/%u", sep, ipaddr_string(ndo, cp), *(cp + 4)));
cp += 5;
sep = ", ";
while (cp < ep) {
/* Option no */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
option_no = *cp;
cp += 1;
ND_PRINT((ndo, "\n\t %s", tok2str(ahcp1_opt_str, "Unknown-%u", option_no)));
/* Length */
if (cp + 1 > ep)
goto invalid;
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
option_len = *cp;
cp += 1;
if (cp + option_len > ep)
if (cp + AHCP1_BODY_MIN_LEN > ep)
goto invalid;
/* Type */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
type = *cp;
cp += 1;
/* MBZ */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
mbz = *cp;
cp += 1;
/* Length */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
body_len = EXTRACT_BE_U_2(cp);
cp += 2;
if (len < 2)
goto invalid;
/* Magic */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
if (*cp != AHCP_MAGIC_NUMBER)
goto invalid;
cp += 1;
/* Version */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
version = *cp;
cp += 1;
switch (version) {
cp += AHCP1_HEADER_FIX_LEN - 2;
} else {
/* Hopcount */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\tHopcount %u", *cp));
cp += 1;
/* Original Hopcount */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", Original Hopcount %u", *cp));
cp += 1;
/* Nonce */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", Nonce 0x%08x", EXTRACT_BE_U_4(cp)));
cp += 4;
/* Source Id */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", Source Id %s", linkaddr_string(ndo, cp, 0, 8)));
cp += 8;
/* Destination Id */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", Destination Id %s", linkaddr_string(ndo, cp, 0, 8)));
cp += 8;
}
if (len < AOEV1_ISSUE_ARG_LEN)
goto invalid;
/* AFlags */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\tAFlags: [%s]", bittok2str(aoev1_aflag_str, "none", EXTRACT_U_1(cp))));
cp += 1;
/* Err/Feature */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", Err/Feature: %u", *cp));
cp += 1;
/* Sector Count (not correlated with the length) */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", Sector Count: %u", *cp));
cp += 1;
/* Cmd/Status */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", Cmd/Status: %u", *cp));
cp += 1;
/* lba0 */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\tlba0: %u", *cp));
cp += 1;
/* lba1 */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", lba1: %u", *cp));
cp += 1;
/* lba2 */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", lba2: %u", *cp));
cp += 1;
/* lba3 */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", lba3: %u", *cp));
cp += 1;
/* lba4 */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", lba4: %u", *cp));
cp += 1;
/* lba5 */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", lba5: %u", *cp));
cp += 1;
/* Reserved */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
/* Data */
if (len > AOEV1_ISSUE_ARG_LEN)
if (len < AOEV1_QUERY_ARG_LEN)
goto invalid;
/* Buffer Count */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\tBuffer Count: %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* Firmware Version */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", Firmware Version: %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* Sector Count */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", Sector Count: %u", *cp));
cp += 1;
/* AoE/CCmd */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", AoE: %u, CCmd: %s", (EXTRACT_U_1(cp) & 0xF0) >> 4,
tok2str(aoev1_ccmd_str, "Unknown (0x02x)", EXTRACT_U_1(cp) & 0x0F)));
cp += 1;
/* Config String Length */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cslen = EXTRACT_BE_U_2(cp);
cp += 2;
if (cslen > AOEV1_MAX_CONFSTR_LEN || AOEV1_QUERY_ARG_LEN + cslen > len)
if (len < AOEV1_MAC_ARG_LEN)
goto invalid;
/* Reserved */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
cp += 1;
/* MCmd */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\tMCmd: %s", tok2str(aoev1_mcmd_str, "Unknown (0x%02x)", EXTRACT_U_1(cp))));
cp += 1;
/* MError */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", MError: %s", tok2str(aoev1_merror_str, "Unknown (0x%02x)", EXTRACT_U_1(cp))));
cp += 1;
/* Dir Count */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
dircount = *cp;
cp += 1;
ND_PRINT((ndo, ", Dir Count: %u", dircount));
/* directives */
for (i = 0; i < dircount; i++) {
/* Reserved */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
cp += 1;
/* DCmd */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\t DCmd: %s", tok2str(aoev1_dcmd_str, "Unknown (0x%02x)", EXTRACT_U_1(cp))));
cp += 1;
/* Ethernet Address */
if (len < AOEV1_RESERVE_ARG_LEN || (len - AOEV1_RESERVE_ARG_LEN) % ETHER_ADDR_LEN)
goto invalid;
/* RCmd */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\tRCmd: %s", tok2str(aoev1_rcmd_str, "Unknown (0x%02x)", EXTRACT_U_1(cp))));
cp += 1;
/* NMacs (correlated with the length) */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
nmacs = *cp;
cp += 1;
ND_PRINT((ndo, ", NMacs: %u", nmacs));
if (! ndo->ndo_vflag)
return;
/* Error */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
if (flags & AOEV1_FLAG_E)
ND_PRINT((ndo, "\n\tError: %s", tok2str(aoev1_errcode_str, "Invalid (%u)", EXTRACT_U_1(cp))));
cp += 1;
/* Major */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\tMajor: 0x%04x", EXTRACT_BE_U_2(cp)));
cp += 2;
/* Minor */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", Minor: 0x%02x", *cp));
cp += 1;
/* Command */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
command = *cp;
cp += 1;
ND_PRINT((ndo, ", Command: %s", tok2str(cmdcode_str, "Unknown (0x%02x)", command)));
/* Tag */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", Tag: 0x%08x", EXTRACT_BE_U_4(cp)));
cp += 4;
/* Arg */
if (len < 1)
goto invalid;
/* Ver/Flags */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ver = (EXTRACT_U_1(cp) & 0xF0) >> 4;
/* Don't advance cp yet: low order 4 bits are version-specific. */
ND_PRINT((ndo, ", Ver %u", ver));
}
/* crc10 checksum verification */
- ND_TCHECK2(*(p + OAM_CELLTYPE_FUNCTYPE_LEN + OAM_FUNCTION_SPECIFIC_LEN), 2);
+ ND_TCHECK_2(p + OAM_CELLTYPE_FUNCTYPE_LEN + OAM_FUNCTION_SPECIFIC_LEN);
cksum = EXTRACT_BE_U_2(p + OAM_CELLTYPE_FUNCTYPE_LEN + OAM_FUNCTION_SPECIFIC_LEN)
& OAM_CRC10_MASK;
cksum_shouldbe = verify_crc10_cksum(0, p, OAM_PAYLOAD_LEN);
{
ND_PRINT((ndo, "babel"));
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
if(cp[0] != 42) {
ND_PRINT((ndo, " invalid header"));
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, 0, 0, 0, 0 };
u_char v6_prefix[16] = {0};
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
if (length < 4)
goto invalid;
bodylen = EXTRACT_BE_U_2(cp + 2);
message = cp + 4 + i;
- ND_TCHECK2(*message, 1);
+ ND_TCHECK_1(message);
if((type = message[0]) == MESSAGE_PAD1) {
ND_PRINT((ndo, ndo->ndo_vflag ? "\n\tPad 1" : " pad1"));
i += 1;
continue;
}
- ND_TCHECK2(*message, 2);
+ ND_TCHECK_2(message);
ICHECK(i, 2);
len = message[1];
break;
}
pptr += 2;
- ND_TCHECK2(*pptr, 4);
+ ND_TCHECK_4(pptr);
ND_PRINT((ndo, ", Sequence Number: 0x%08x", EXTRACT_BE_U_4(pptr)));
pptr += 4;
ND_TCHECK2(*pptr, AUTH_MD5_HASH_LEN);
break;
}
pptr += 2;
- ND_TCHECK2(*pptr, 4);
+ ND_TCHECK_4(pptr);
ND_PRINT((ndo, ", Sequence Number: 0x%08x", EXTRACT_BE_U_4(pptr)));
pptr += 4;
ND_TCHECK2(*pptr, AUTH_SHA1_HASH_LEN);
u_int plen, plenbytes;
/* prefix length and label = 4 bytes */
- ND_TCHECK2(pptr[0], 4);
+ ND_TCHECK_4(pptr);
ITEMCHECK(4);
plen = pptr[0]; /* get prefix length */
pptr++;
/* RD */
- ND_TCHECK2(pptr[0], 8);
+ ND_TCHECK_8(pptr);
rd = pptr;
pptr+=8;
uint8_t route_type, route_length, addr_length, sg_length;
u_int offset;
- ND_TCHECK2(pptr[0], 2);
+ ND_TCHECK_2(pptr);
route_type = EXTRACT_U_1(pptr);
pptr++;
route_length = EXTRACT_U_1(pptr);
while (tlen>0) {
if (tlen < 3)
return -1;
- ND_TCHECK2(pptr[0], 3);
+ ND_TCHECK_3(pptr);
tlv_type=EXTRACT_U_1(pptr);
pptr++;
tlv_len=EXTRACT_BE_U_2(pptr);
u_int plen, plenbytes;
/* prefix length and label = 4 bytes */
- ND_TCHECK2(pptr[0], 4);
+ ND_TCHECK_4(pptr);
ITEMCHECK(4);
plen = pptr[0]; /* get prefix length */
if (len != 4)
ND_PRINT((ndo, "invalid len"));
else {
- ND_TCHECK2(tptr[0], 4);
+ ND_TCHECK_4(tptr);
ND_PRINT((ndo, "%s", ipaddr_string(ndo, tptr)));
}
break;
ND_PRINT((ndo, "invalid len"));
break;
}
- ND_TCHECK2(tptr[0], 8);
+ ND_TCHECK_8(tptr);
ND_PRINT((ndo, " AS #%s, origin %s",
as_printf(ndo, astostr, sizeof(astostr), EXTRACT_BE_U_4(tptr)),
ipaddr_string(ndo, tptr + 4)));
ND_PRINT((ndo, "invalid len"));
break;
}
- ND_TCHECK2(tptr[0], 4);
+ ND_TCHECK_4(tptr);
ND_PRINT((ndo, "%s",ipaddr_string(ndo, tptr)));
break;
case BGPTYPE_CLUSTER_LIST:
break;
}
while (tlen>0) {
- ND_TCHECK2(tptr[0], 4);
+ ND_TCHECK_4(tptr);
ND_PRINT((ndo, "%s%s",
ipaddr_string(ndo, tptr),
(tlen>4) ? ", " : ""));
}
break;
case BGPTYPE_MP_REACH_NLRI:
- ND_TCHECK2(tptr[0], 3);
+ ND_TCHECK_3(tptr);
af = EXTRACT_BE_U_2(tptr);
safi = EXTRACT_U_1(tptr + 2);
extd_comm,
bittok2str(bgp_extd_comm_flag_values, "none", extd_comm)));
- ND_TCHECK2(*(tptr+2), 6);
+ ND_TCHECK_6(tptr + 2);
switch(extd_comm) {
case BGP_EXT_COM_RT_0:
case BGP_EXT_COM_RO_0:
ND_PRINT((ndo, ": AS %u", EXTRACT_BE_U_2(tptr + 2)));
break;
default:
- ND_TCHECK2(*tptr,8);
+ ND_TCHECK_8(tptr);
print_unknown_data(ndo, tptr, "\n\t ", 8);
break;
}
{
uint8_t tunnel_type, flags;
- ND_TCHECK2(tptr[0], 5);
+ ND_TCHECK_5(tptr);
flags = EXTRACT_U_1(tptr);
tunnel_type = EXTRACT_U_1(tptr + 1);
tlen = len;
switch (tunnel_type) {
case BGP_PMSI_TUNNEL_PIM_SM: /* fall through */
case BGP_PMSI_TUNNEL_PIM_BIDIR:
- ND_TCHECK2(tptr[0], 8);
+ ND_TCHECK_8(tptr);
ND_PRINT((ndo, "\n\t Sender %s, P-Group %s",
ipaddr_string(ndo, tptr),
ipaddr_string(ndo, tptr+4)));
break;
case BGP_PMSI_TUNNEL_PIM_SSM:
- ND_TCHECK2(tptr[0], 8);
+ ND_TCHECK_8(tptr);
ND_PRINT((ndo, "\n\t Root-Node %s, P-Group %s",
ipaddr_string(ndo, tptr),
ipaddr_string(ndo, tptr+4)));
break;
case BGP_PMSI_TUNNEL_INGRESS:
- ND_TCHECK2(tptr[0], 4);
+ ND_TCHECK_4(tptr);
ND_PRINT((ndo, "\n\t Tunnel-Endpoint %s",
ipaddr_string(ndo, tptr)));
break;
case BGP_PMSI_TUNNEL_LDP_P2MP: /* fall through */
case BGP_PMSI_TUNNEL_LDP_MP2MP:
- ND_TCHECK2(tptr[0], 8);
+ ND_TCHECK_8(tptr);
ND_PRINT((ndo, "\n\t Root-Node %s, LSP-ID 0x%08x",
ipaddr_string(ndo, tptr),
EXTRACT_BE_U_4(tptr + 4)));
break;
case BGP_PMSI_TUNNEL_RSVP_P2MP:
- ND_TCHECK2(tptr[0], 8);
+ ND_TCHECK_8(tptr);
ND_PRINT((ndo, "\n\t Extended-Tunnel-ID %s, P2MP-ID 0x%08x",
ipaddr_string(ndo, tptr),
EXTRACT_BE_U_4(tptr + 4)));
while (tlen >= 3) {
- ND_TCHECK2(tptr[0], 3);
+ ND_TCHECK_3(tptr);
type = EXTRACT_U_1(tptr);
length = EXTRACT_BE_U_2(tptr + 1);
while (len) {
u_int aflags, alenlen, alen;
- ND_TCHECK2(tptr[0], 2);
+ ND_TCHECK_2(tptr);
if (len < 2)
goto trunc;
aflags = EXTRACT_U_1(tptr);
while (len) {
int aflags, atype, alenlen, alen;
- ND_TCHECK2(p[0], 2);
+ ND_TCHECK_2(p);
if (len < 2)
goto trunc;
if (length < 2)
*/
if(bgpn.bgpn_minor == BGP_NOTIFY_MINOR_CEASE_MAXPRFX && length >= BGP_NOTIFICATION_SIZE + 7) {
tptr = dat + BGP_NOTIFICATION_SIZE;
- ND_TCHECK2(*tptr, 7);
+ ND_TCHECK_7(tptr);
ND_PRINT((ndo, ", AFI %s (%u), SAFI %s (%u), Max Prefixes: %u",
tok2str(af_values, "Unknown",
EXTRACT_BE_U_2(tptr)),
p = dat;
start = p;
while (p < ep) {
- if (!ND_TTEST2(p[0], 1))
+ if (!ND_TTEST_1(p))
break;
if (p[0] != 0xff) {
p++;
#include <netdissect-stdinc.h>
#include "netdissect.h"
+#include "extract.h"
#include "addrtoname.h"
/*
int srcNwref;
int dstNwref;
- ND_TCHECK2(*bp, 2);
+ ND_TCHECK_2(bp);
if (length < 2)
goto trunc;
srcNwref = bp[0];
0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x86, 0xdd
};
- ND_TCHECK2(*p, 4);
+ ND_TCHECK_4(p);
if (p + 4 > endp)
goto trunc;
num = EXTRACT_BE_U_4(p);
p += 4;
while (p < endp && num >= 0) {
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
if (p + 2 > endp)
goto trunc;
pt = p[0]; /* type of "protocol" field */
pl = p[1]; /* length of "protocol" field */
p += 2;
- ND_TCHECK2(p[pl], 2);
+ ND_TCHECK_2(p + pl);
if (p + pl + 2 > endp)
goto trunc;
al = EXTRACT_BE_U_2(p + pl); /* address length */
*/
p += 3;
- ND_TCHECK2(*p, 4);
+ ND_TCHECK_4(p);
if (p + 4 > endp)
goto trunc;
ND_PRINT((ndo, "IPv4 (%u) %s", num, ipaddr_string(ndo, p)));
ND_PRINT((ndo, " %02x", EXTRACT_U_1(p)));
p++;
}
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
if (p + 2 > endp)
goto trunc;
ND_PRINT((ndo, ", al=%d, a=", al));
if (length >= SLARP_MAX_LEN) { /* uptime-stamp is optional */
cp += SLARP_MIN_LEN;
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
sec = EXTRACT_BE_U_4(cp) / 1000;
min = sec / 60; sec -= min * 60;
hrs = min / 60; min -= hrs * 60;
/*
* First 2 bytes are the version number.
*/
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ver = EXTRACT_BE_U_2(cp);
switch (ver) {
uint64_t ackno;
if (DCCPH_X(dh) != 0) {
- ND_TCHECK2(*ackp, 8);
+ ND_TCHECK_8(ackp);
ackno = EXTRACT_BE_U_6(ackp + 2);
} else {
- ND_TCHECK2(*ackp, 4);
+ ND_TCHECK_4(ackp);
ackno = EXTRACT_BE_U_3(ackp + 1);
}
cp = ns_nskip(ndo, cp);
- if (cp == NULL || !ND_TTEST2(*cp, 4))
+ if (cp == NULL || !ND_TTEST_4(cp))
return(NULL);
/* print the qtype */
break;
case T_MX:
ND_PRINT((ndo, " "));
- if (!ND_TTEST2(*cp, 2))
+ if (!ND_TTEST_2(cp))
return(NULL);
if (ns_nprint(ndo, cp + 2, bp) == NULL)
return(NULL);
case T_SRV:
ND_PRINT((ndo, " "));
- if (!ND_TTEST2(*cp, 6))
+ if (!ND_TTEST_6(cp))
return(NULL);
if (ns_nprint(ndo, cp + 6, bp) == NULL)
return(NULL);
while (tptr < (pptr+length)) {
- ND_TCHECK2(*tptr, 4);
+ ND_TCHECK_4(tptr);
type = EXTRACT_BE_U_2(tptr);
len = EXTRACT_BE_U_2(tptr + 2);
/* XXX: should not be but sometimes it is, see the test captures */
* extract version from IGMP group address field
*/
bp -= 4;
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
major_version = EXTRACT_U_1(bp + 3);
minor_version = EXTRACT_U_1(bp + 2);
bp += 4;
ND_PRINT((ndo, " [|]"));
return (0);
}
- ND_TCHECK2(bp[0], 3);
+ ND_TCHECK_3(bp);
mask = (uint32_t)0xff << 24 | bp[0] << 16 | bp[1] << 8 | bp[2];
width = 1;
if (bp[0])
{
register uint32_t genid;
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
if ((len < 4) || ((bp + 4) > ep)) {
/* { (ctags) */
ND_PRINT((ndo, " [|}"));
return (0);
while ((len > 0) && (bp < ep)) {
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
ND_PRINT((ndo, "\n\tneighbor %s", ipaddr_string(ndo, bp)));
bp += 4; len -= 4;
}
register int ncount;
while (len > 0 && bp < ep) {
- ND_TCHECK2(bp[0], 7);
+ ND_TCHECK_7(bp);
laddr = bp;
bp += 4;
metric = EXTRACT_U_1(bp);
bp++;
len -= 7;
while (--ncount >= 0) {
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
ND_PRINT((ndo, " [%s ->", ipaddr_string(ndo, laddr)));
ND_PRINT((ndo, " %s, (%d/%d)]",
ipaddr_string(ndo, bp), metric, thresh));
ND_PRINT((ndo, " (v %u.%u):", major_version, minor_version));
while (len > 0 && bp < ep) {
- ND_TCHECK2(bp[0], 8);
+ ND_TCHECK_8(bp);
laddr = bp;
bp += 4;
metric = EXTRACT_U_1(bp);
print_graft(netdissect_options *ndo,
register const u_char *bp)
{
- ND_TCHECK2(bp[0], 8);
+ ND_TCHECK_8(bp);
ND_PRINT((ndo, " src %s grp %s", ipaddr_string(ndo, bp), ipaddr_string(ndo, bp + 4)));
return (0);
trunc:
print_graft_ack(netdissect_options *ndo,
register const u_char *bp)
{
- ND_TCHECK2(bp[0], 8);
+ ND_TCHECK_8(bp);
ND_PRINT((ndo, " src %s grp %s", ipaddr_string(ndo, bp), ipaddr_string(ndo, bp + 4)));
return (0);
trunc:
ND_PRINT((ndo, "%sTABLE APPEND\n", ib));
}
for (i = 0; i < IDcnt; i++) {
- ND_TCHECK2(*pptr, 4);
+ ND_TCHECK_4(pptr);
if (len < 4)
goto trunc;
id = EXTRACT_BE_U_4(pptr);
ND_PRINT((ndo, "illegal ASTresult-TLV: %d bytes!\n", dlen));
return -1;
}
- ND_TCHECK2(*pptr, 4);
+ ND_TCHECK_4(pptr);
rescode = EXTRACT_BE_U_4(pptr);
if (rescode > ASTMCD) {
ND_PRINT((ndo, "illegal ASTresult result code: %d!\n", rescode));
ND_PRINT((ndo, "illegal ASRresult-TLV: %d bytes!\n", dlen));
return -1;
}
- ND_TCHECK2(*pptr, 4);
+ ND_TCHECK_4(pptr);
rescode = EXTRACT_BE_U_4(pptr);
if (rescode > ASRMCD) {
goto error;
}
- ND_TCHECK2(*(pptr + 20), 4);
+ ND_TCHECK_4(pptr + 20);
flg_raw = EXTRACT_BE_U_4(pptr + 20);
if (ndo->ndo_vflag >= 1) {
ND_PRINT((ndo, "\n\tForCES Version %d len %uB flags 0x%08x ",
register u_int length = h->len;
register u_int caplen = h->caplen;
- ND_TCHECK2(*p, 4); /* minimum frame header length */
+ ND_TCHECK_4(p); /* minimum frame header length */
if ((length = fr_print(ndo, p, length)) == 0)
return (0);
register u_int length = h->len;
register u_int caplen = h->caplen;
- ND_TCHECK2(*p, 2); /* minimum frame header length */
+ ND_TCHECK_2(p); /* minimum frame header length */
if ((length = mfr_print(ndo, p, length)) == 0)
return (0);
* +----+----+----+----+----+----+----+----+
*/
- ND_TCHECK2(*p, 4); /* minimum frame header length */
+ ND_TCHECK_4(p); /* minimum frame header length */
if ((EXTRACT_U_1(p) & MFR_BEC_MASK) == MFR_CTRL_FRAME && EXTRACT_U_1(p + 1) == 0) {
ND_PRINT((ndo, "FRF.16 Control, Flags [%s], %s, length %u",
if (length < 2)
goto trunc;
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
flags = EXTRACT_U_1(p)&MFR_BEC_MASK;
sequence_num = (EXTRACT_U_1(p)&0x1e)<<7 | EXTRACT_U_1(p + 1);
ND_PRINT((ndo, "Geneve"));
- ND_TCHECK2(*bp, 8);
+ ND_TCHECK_8(bp);
ver_opt = EXTRACT_U_1(bp);
bp += 1;
return (-1);
ND_PRINT((ndo, "GN_ADDR:%s ", linkaddr_string (ndo, bp, 0, GEONET_ADDR_LEN)));
- if (!ND_TTEST2(*(bp+12), 8))
+ if (!ND_TTEST_8(bp + 12))
return (-1);
lat = EXTRACT_BE_U_4(bp + 12);
ND_PRINT((ndo, "lat:%d ", lat));
if (length < 36)
goto invalid;
- ND_TCHECK2(*bp, 8);
+ ND_TCHECK_8(bp);
version = bp[0] >> 4;
next_hdr = bp[0] & 0x0f;
hdr_type = bp[1] >> 4;
case 2: /* BTP A/B */
if (length < 4)
goto invalid;
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
print_btp(ndo, bp);
length -= 4;
bp += 4;
* or was that just not
* reporting genuine errors?
*/
- ND_TCHECK2(*bp, 2);
+ ND_TCHECK_2(bp);
print_btp_body(ndo, bp);
}
break;
{
u_int len = length, vers;
- ND_TCHECK2(*bp, 2);
+ ND_TCHECK_2(bp);
if (len < 2)
goto trunc;
vers = EXTRACT_BE_U_2(bp) & GRE_VERS_MASK;
len -= 2;
bp += 2;
- ND_TCHECK2(*bp, 2);
+ ND_TCHECK_2(bp);
if (len < 2)
goto trunc;
prot = EXTRACT_BE_U_2(bp);
bp += 2;
if ((flags & GRE_CP) | (flags & GRE_RP)) {
- ND_TCHECK2(*bp, 2);
+ ND_TCHECK_2(bp);
if (len < 2)
goto trunc;
if (ndo->ndo_vflag)
bp += 2;
len -= 2;
- ND_TCHECK2(*bp, 2);
+ ND_TCHECK_2(bp);
if (len < 2)
goto trunc;
ND_PRINT((ndo, ", off 0x%x", EXTRACT_BE_U_2(bp)));
}
if (flags & GRE_KP) {
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
if (len < 4)
goto trunc;
ND_PRINT((ndo, ", key=0x%x", EXTRACT_BE_U_4(bp)));
}
if (flags & GRE_SP) {
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
if (len < 4)
goto trunc;
ND_PRINT((ndo, ", seq %u", EXTRACT_BE_U_4(bp)));
uint8_t sreoff;
uint8_t srelen;
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
if (len < 4)
goto trunc;
af = EXTRACT_BE_U_2(bp);
ND_PRINT((ndo, ", Flags [%s]",
bittok2str(gre_flag_values,"none",flags)));
- ND_TCHECK2(*bp, 2);
+ ND_TCHECK_2(bp);
if (len < 2)
goto trunc;
prot = EXTRACT_BE_U_2(bp);
if (flags & GRE_KP) {
uint32_t k;
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
if (len < 4)
goto trunc;
k = EXTRACT_BE_U_4(bp);
}
if (flags & GRE_SP) {
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
if (len < 4)
goto trunc;
ND_PRINT((ndo, ", seq %u", EXTRACT_BE_U_4(bp)));
}
if (flags & GRE_AP) {
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
if (len < 4)
goto trunc;
ND_PRINT((ndo, ", ack %u", EXTRACT_BE_U_4(bp)));
}
while (srelen != 0) {
- if (!ND_TTEST2(*bp, 4))
+ if (!ND_TTEST_4(bp))
return (0);
if (len < 4)
return (0);
}
while (srelen != 0) {
- if (!ND_TTEST2(*bp, 2))
+ if (!ND_TTEST_2(bp))
return (0);
if (len < 2)
return (0);
ND_PRINT((ndo," qqi=%d", qqi));
}
- ND_TCHECK2(bp[26], 2);
+ ND_TCHECK_2(bp + 26);
nsrcs = EXTRACT_BE_U_2(bp + 26);
if (nsrcs > 0) {
if (len < 28 + nsrcs * sizeof(struct in6_addr))
ND_PRINT((ndo, " [invalid number of groups]"));
return;
}
- ND_TCHECK2(bp[group+4], 4);
+ ND_TCHECK_4(bp + (group + 4));
ND_PRINT((ndo, " [gaddr %s", ipaddr_string(ndo, &bp[group+4])));
ND_PRINT((ndo, " %s", tok2str(igmpv3report2str, " [v3-report-#%d]",
EXTRACT_U_1(bp + group))));
/* Print the sources */
ND_PRINT((ndo, " {"));
for (j=0; j<nsrcs; j++) {
- ND_TCHECK2(bp[group+8+(j<<2)], 4);
+ ND_TCHECK_4(bp + (group + 8 + (j << 2)));
ND_PRINT((ndo, " %s", ipaddr_string(ndo, &bp[group+8+(j<<2)])));
}
ND_PRINT((ndo, " }"));
else if (ndo->ndo_vflag > 1) {
ND_PRINT((ndo, " {"));
for (i=0; i<nsrcs; i++) {
- ND_TCHECK2(bp[12+(i<<2)], 4);
+ ND_TCHECK_4(bp + (12 + (i << 2)));
ND_PRINT((ndo, " %s", ipaddr_string(ndo, &bp[12+(i<<2)])));
}
ND_PRINT((ndo, " }"));
}
break;
case 0x12:
- ND_TCHECK2(bp[4], 4);
+ ND_TCHECK_4(bp + 4);
ND_PRINT((ndo, "igmp v1 report %s", ipaddr_string(ndo, &bp[4])));
if (len != 8)
ND_PRINT((ndo, " [len %d]", len));
break;
case 0x16:
- ND_TCHECK2(bp[4], 4);
+ ND_TCHECK_4(bp + 4);
ND_PRINT((ndo, "igmp v2 report %s", ipaddr_string(ndo, &bp[4])));
break;
case 0x22:
print_igmpv3_report(ndo, bp, len);
break;
case 0x17:
- ND_TCHECK2(bp[4], 4);
+ ND_TCHECK_4(bp + 4);
ND_PRINT((ndo, "igmp leave %s", ipaddr_string(ndo, &bp[4])));
break;
case 0x13:
ND_PRINT((ndo, " [bad ptr %u]", cp[2]));
for (len = 3; len < length; len += 4) {
- ND_TCHECK2(cp[len], 4);
+ ND_TCHECK_4(cp + len);
ND_PRINT((ndo, " %s", ipaddr_string(ndo, &cp[len])));
if (ptr > len)
ND_PRINT((ndo, ","));
* the header, in units of 8 octets, excluding
* the first 8 octets.
*/
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
advance = (EXTRACT_U_1(cp + 1) + 1) << 3;
nh = *cp;
break;
* marked as reserved, and the header is always
* the same size.
*/
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
advance = sizeof(struct ip6_frag);
nh = *cp;
break;
if (subtlv_sum_len) {
ND_PRINT((ndo, " (%u)", subtlv_sum_len));
while (subtlv_sum_len>0) {
- if (!ND_TTEST2(*tptr,2))
+ if (!ND_TTEST_2(tptr))
return(0);
subtlv_type=EXTRACT_U_1(tptr);
subtlv_len=EXTRACT_U_1(tptr + 1);
}
processed++;
} else if (afi == AF_INET6) {
- if (!ND_TTEST2(*tptr, 2)) /* fetch status & prefix_len byte */
+ if (!ND_TTEST_2(tptr)) /* fetch status & prefix_len byte */
return (0);
status_byte=EXTRACT_U_1(tptr);
bit_length=EXTRACT_U_1(tptr + 1);
ND_PRINT((ndo, " (%u)", sublen)); /* print out subTLV length */
while (sublen>0) {
- if (!ND_TTEST2(*tptr,2))
+ if (!ND_TTEST_2(tptr))
return (0);
subtlvtype=EXTRACT_U_1(tptr);
subtlvlen=EXTRACT_U_1(tptr + 1);
*/
if (!checksum
|| checksum_offset < 0
- || !ND_TTEST2(*(pptr + checksum_offset), 2)
+ || !ND_TTEST_2(pptr + checksum_offset)
|| (u_int)checksum_offset > length
|| !ND_TTEST2(*pptr, length)) {
ND_PRINT((ndo, " (unverified)"));
p+=l2info.header_len;
- ND_TCHECK2(p[0], 2);
+ ND_TCHECK_2(p);
extracted_ethertype = EXTRACT_BE_U_2(p);
/* this DLT contains nothing but raw PPPoE frames,
* prepended with a type field*/
return l2info.header_len;
}
- ND_TCHECK2(p[0], 3);
+ ND_TCHECK_3(p);
if (EXTRACT_BE_U_3(p) == 0xfefe03 || /* NLPID encaps ? */
EXTRACT_BE_U_3(p) == 0xaaaa03) { /* SNAP encaps ? */
return l2info.header_len;
}
- ND_TCHECK2(p[0], 3);
+ ND_TCHECK_3(p);
if (EXTRACT_BE_U_3(p) == 0xfefe03 || /* NLPID encaps ? */
EXTRACT_BE_U_3(p) == 0xaaaa03) { /* SNAP encaps ? */
l2info->length = h->len;
l2info->caplen = h->caplen;
- ND_TCHECK2(p[0], 4);
+ ND_TCHECK_4(p);
l2info->flags = p[3];
l2info->direction = p[3]&JUNIPER_BPF_PKT_IN;
tptr = p+jnx_header_len;
/* ok to read extension length ? */
- ND_TCHECK2(tptr[0], 2);
+ ND_TCHECK_2(tptr);
jnx_ext_len = EXTRACT_BE_U_2(tptr);
jnx_header_len += 2;
tptr +=2;
* perform the v4/v6 heuristics
* to figure out what it is
*/
- ND_TCHECK2(p[jnx_header_len + 4], 1);
+ ND_TCHECK_1(p + (jnx_header_len + 4));
if (ip_heuristic_guess(ndo, p + jnx_header_len + 4,
l2info->length - (jnx_header_len + 4)) == 0)
ND_PRINT((ndo, "no IP-hdr found!"));
case DLT_JUNIPER_MLFR:
switch (l2info->cookie_type) {
case LS_COOKIE_ID:
- ND_TCHECK2(p[0], 2);
+ ND_TCHECK_2(p);
l2info->bundle = l2info->cookie[1];
l2info->proto = EXTRACT_BE_U_2(p);
l2info->header_len += 2;
case DLT_JUNIPER_MFR:
switch (l2info->cookie_type) {
case LS_COOKIE_ID:
- ND_TCHECK2(p[0], 2);
+ ND_TCHECK_2(p);
l2info->bundle = l2info->cookie[1];
l2info->proto = EXTRACT_BE_U_2(p);
l2info->header_len += 2;
#endif
#ifdef DLT_JUNIPER_ATM2
case DLT_JUNIPER_ATM2:
- ND_TCHECK2(p[0], 4);
+ ND_TCHECK_4(p);
/* ATM cell relay control word present ? */
if (l2info->cookie[7] & ATM2_PKT_TYPE_MASK) {
control_word = EXTRACT_BE_U_4(p);
flag_t = flag_l = flag_s = flag_o = FALSE;
- ND_TCHECK2(*ptr, 2); /* Flags & Version */
+ ND_TCHECK_2(ptr); /* Flags & Version */
if ((EXTRACT_BE_U_2(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2TP) {
ND_PRINT((ndo, " l2tp:"));
} else if ((EXTRACT_BE_U_2(ptr) & L2TP_VERSION_MASK) == L2TP_VERSION_L2F) {
cnt += 2;
if (flag_l) {
- ND_TCHECK2(*ptr, 2); /* Length */
+ ND_TCHECK_2(ptr); /* Length */
l2tp_len = EXTRACT_BE_U_2(ptr);
ptr += 2;
cnt += 2;
l2tp_len = 0;
}
- ND_TCHECK2(*ptr, 2); /* Tunnel ID */
+ ND_TCHECK_2(ptr); /* Tunnel ID */
ND_PRINT((ndo, "(%u/", EXTRACT_BE_U_2(ptr)));
ptr += 2;
cnt += 2;
- ND_TCHECK2(*ptr, 2); /* Session ID */
+ ND_TCHECK_2(ptr); /* Session ID */
ND_PRINT((ndo, "%u)", EXTRACT_BE_U_2(ptr)));
ptr += 2;
cnt += 2;
if (flag_s) {
- ND_TCHECK2(*ptr, 2); /* Ns */
+ ND_TCHECK_2(ptr); /* Ns */
ND_PRINT((ndo, "Ns=%u,", EXTRACT_BE_U_2(ptr)));
ptr += 2;
cnt += 2;
- ND_TCHECK2(*ptr, 2); /* Nr */
+ ND_TCHECK_2(ptr); /* Nr */
ND_PRINT((ndo, "Nr=%u", EXTRACT_BE_U_2(ptr)));
ptr += 2;
cnt += 2;
}
if (flag_o) {
- ND_TCHECK2(*ptr, 2); /* Offset Size */
+ ND_TCHECK_2(ptr); /* Offset Size */
pad = EXTRACT_BE_U_2(ptr);
ptr += (2 + pad);
cnt += (2 + pad);
switch (eid_afi) {
case IPv4_AFI:
- ND_TCHECK2(*(packet_iterator + packet_offset), 4);
+ ND_TCHECK_4(packet_iterator + packet_offset);
ND_PRINT((ndo, " EID %s/%u,", ipaddr_string(ndo,
packet_iterator + packet_offset), mask_len));
packet_offset += 4;
break;
case IPv6_AFI:
- ND_TCHECK2(*(packet_iterator + packet_offset), 16);
+ ND_TCHECK_16(packet_iterator + packet_offset);
ND_PRINT((ndo, " EID %s/%u,", ip6addr_string(ndo,
packet_iterator + packet_offset), mask_len));
packet_offset += 16;
switch (loc_afi) {
case IPv4_AFI:
- ND_TCHECK2(*(packet_iterator + packet_offset), 4);
+ ND_TCHECK_4(packet_iterator + packet_offset);
ND_PRINT((ndo, " LOC %s", ipaddr_string(ndo, loc_ip_pointer)));
packet_offset += 4;
break;
case IPv6_AFI:
- ND_TCHECK2(*(packet_iterator + packet_offset), 16);
+ ND_TCHECK_16(packet_iterator + packet_offset);
ND_PRINT((ndo, " LOC %s", ip6addr_string(ndo, loc_ip_pointer)));
packet_offset += 16;
break;
register u_short et;
register int ret;
- ND_TCHECK2(*p, 5);
+ ND_TCHECK_5(p);
if (caplen < 5 || length < 5)
goto trunc;
orgcode = EXTRACT_BE_U_3(p);
if (len < 2)
goto invalid;
/* function */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
function = EXTRACT_LE_U_2(cp);
cp += 2;
ND_PRINT((ndo, ", %s", tok2str(fcode_str, " invalid (%u)", function)));
if (len < 4)
goto invalid;
/* receipt number */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", receipt number %u", EXTRACT_LE_U_2(cp)));
cp += 2;
/* data */
if (len < 2)
goto invalid;
/* skipCount */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
skipCount = EXTRACT_LE_U_2(cp);
cp += 2;
ND_PRINT((ndo, ", skipCount %u", skipCount));
if (has_ap_ident) {
/* check if enough bytes for AP identity */
- ND_TCHECK2(*tptr, 6);
+ ND_TCHECK_6(tptr);
lwapp_trans_header = (const struct lwapp_transport_header *)(pptr+6);
} else {
lwapp_trans_header = (const struct lwapp_transport_header *)pptr;
tptr=pptr;
/* check if enough bytes for AP identity */
- ND_TCHECK2(*tptr, 6);
+ ND_TCHECK_6(tptr);
lwapp_trans_header = (const struct lwapp_transport_header *)pptr;
ND_TCHECK(*lwapp_trans_header);
ND_PRINT((ndo, " status=%u", mh->ip6m_data8[0]));
/* Reserved */
hlen = IP6M_MINLEN;
- ND_TCHECK2(bp[hlen], 16);
+ ND_TCHECK_16(bp + hlen);
ND_PRINT((ndo, " homeaddr %s", ip6addr_string(ndo, &bp[hlen])));
hlen += 16;
break;
{
unsigned int type, len;
- ND_TCHECK2(*sp, 3);
+ ND_TCHECK_3(sp);
/* See if we think we're at the beginning of a compound packet */
type = *sp;
len = EXTRACT_BE_U_2(sp + 1);
goto trunc; /* not really truncated, but still not decodable */
ND_PRINT((ndo, " msdp:"));
while (length > 0) {
- ND_TCHECK2(*sp, 3);
+ ND_TCHECK_3(sp);
type = *sp;
len = EXTRACT_BE_U_2(sp + 1);
if (len > 1400 || ndo->ndo_vflag)
break;
case 2:
ND_PRINT((ndo, " SA-Request"));
- ND_TCHECK2(*sp, 5);
+ ND_TCHECK_5(sp);
ND_PRINT((ndo, " for %s", ipaddr_string(ndo, sp + 1)));
break;
case 4:
if (msg_tlen < 4)
goto trunc;
- ND_TCHECK2(*msg_data, 4);
+ ND_TCHECK_4(msg_data);
name_entries = EXTRACT_BE_U_2(msg_data + 2);
addr_size = 4;
if (msg_tlen < 4)
break;
- ND_TCHECK2(*msg_data, 4);
+ ND_TCHECK_4(msg_data);
name_entry_type = EXTRACT_BE_U_2(msg_data);
name_entry_len = EXTRACT_BE_U_2(msg_data + 2);
if (len < 4)
goto invalid;
/* subtype */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
subtype = EXTRACT_BE_U_4(cp);
cp += 4;
ND_PRINT((ndo, "\n\t subtype %s", tok2str(bsn_subtype_str, "unknown (0x%08x)", subtype)));
if (len != 12)
goto invalid;
/* index */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", index %u", *cp));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 7);
+ ND_TCHECK_7(cp);
cp += 7;
break;
case BSN_SET_IP_MASK:
if (len != 12)
goto invalid;
/* index */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", index %u", *cp));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 3);
+ ND_TCHECK_3(cp);
cp += 3;
/* mask */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", mask %s", ipaddr_string(ndo, cp)));
cp += 4;
break;
if (len != 8)
goto invalid;
/* report_mirror_ports */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", report_mirror_ports %s", tok2str(bsn_onoff_str, "bogus (%u)", EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 3);
+ ND_TCHECK_3(cp);
cp += 3;
break;
case BSN_GET_INTERFACES_REQUEST:
if (len != 8)
goto invalid;
/* vport_no */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", vport_no %u", EXTRACT_BE_U_4(cp)));
cp += 4;
break;
if (len < 8)
goto invalid;
/* service */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", service %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* data */
if (len != 8)
goto invalid;
/* status */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", status 0x%08x", EXTRACT_BE_U_4(cp)));
cp += 4;
break;
if (len < 4)
goto invalid;
/* subtype */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
subtype = EXTRACT_BE_U_4(cp);
cp += 4;
ND_PRINT((ndo, "\n\t subtype %s", tok2str(bsn_action_subtype_str, "unknown (0x%08x)", subtype)));
if (len != 16)
goto invalid;
/* dest_port */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", dest_port %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* vlan_tag */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
vlan_tag = EXTRACT_BE_U_4(cp);
cp += 4;
switch (vlan_tag >> 16) {
ND_PRINT((ndo, ", vlan_tag unknown (0x%04x)", vlan_tag >> 16));
}
/* copy_stage */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", copy_stage %s", tok2str(bsn_mirror_copy_stage_str, "unknown (%u)", EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 3);
+ ND_TCHECK_3(cp);
cp += 3;
break;
default:
if (len < 4)
goto invalid;
/* vendor */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
vendor = EXTRACT_BE_U_4(cp);
cp += 4;
ND_PRINT((ndo, ", vendor 0x%08x (%s)", vendor, of_vendor_name(vendor)));
if (len < 4)
goto invalid;
/* vendor */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
vendor = EXTRACT_BE_U_4(cp);
cp += 4;
ND_PRINT((ndo, ", vendor 0x%08x (%s)", vendor, of_vendor_name(vendor)));
if (len < 4)
goto invalid;
/* vendor */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
vendor = EXTRACT_BE_U_4(cp);
cp += 4;
ND_PRINT((ndo, ", vendor 0x%08x (%s)", vendor, of_vendor_name(vendor)));
if (len < OF_PHY_PORT_LEN)
goto invalid;
/* port_no */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* hw_addr */
goto next_port;
}
/* config */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t config 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofppc_bm, EXTRACT_BE_U_4(cp),
OFPPC_U);
cp += 4;
/* state */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t state 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofpps_bm, EXTRACT_BE_U_4(cp),
OFPPS_U);
cp += 4;
/* curr */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t curr 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofppf_bm, EXTRACT_BE_U_4(cp),
OFPPF_U);
cp += 4;
/* advertised */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t advertised 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofppf_bm, EXTRACT_BE_U_4(cp),
OFPPF_U);
cp += 4;
/* supported */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t supported 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofppf_bm, EXTRACT_BE_U_4(cp),
OFPPF_U);
cp += 4;
/* peer */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t peer 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofppf_bm, EXTRACT_BE_U_4(cp),
OFPPF_U);
if (len < OF_QUEUE_PROP_HEADER_LEN)
goto invalid;
/* property */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
property = EXTRACT_BE_U_2(cp);
cp += 2;
ND_PRINT((ndo, "\n\t property %s", tok2str(ofpqt_str, "invalid (0x%04x)", property)));
/* len */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
plen = EXTRACT_BE_U_2(cp);
cp += 2;
ND_PRINT((ndo, ", len %u", plen));
if (plen < OF_QUEUE_PROP_HEADER_LEN || plen > len)
goto invalid;
/* pad */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
cp += 4;
/* property-specific constraints and decoding */
switch (property) {
}
if (property == OFPQT_MIN_RATE) { /* the only case of property decoding */
/* rate */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
rate = EXTRACT_BE_U_2(cp);
cp += 2;
if (rate > 1000)
else
ND_PRINT((ndo, ", rate %u.%u%%", rate / 10, rate % 10));
/* pad */
- ND_TCHECK2(*cp, 6);
+ ND_TCHECK_6(cp);
cp += 6;
}
next_property:
if (len < OF_PACKET_QUEUE_LEN)
goto invalid;
/* queue_id */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t queue_id %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* len */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
desclen = EXTRACT_BE_U_2(cp);
cp += 2;
ND_PRINT((ndo, ", len %u", desclen));
if (desclen < OF_PACKET_QUEUE_LEN || desclen > len)
goto invalid;
/* pad */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
/* properties */
if (ndo->ndo_vflag < 2) {
const char *field_name;
/* wildcards */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
wildcards = EXTRACT_BE_U_4(cp);
if (wildcards & OFPFW_U)
ND_PRINT((ndo, "%swildcards 0x%08x (bogus)", pfx, wildcards));
cp += 4;
/* in_port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (! (wildcards & OFPFW_IN_PORT))
ND_PRINT((ndo, "%smatch in_port %s", pfx, tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
ND_PRINT((ndo, "%smatch dl_dst %s", pfx, etheraddr_string(ndo, cp)));
cp += ETHER_ADDR_LEN;
/* dl_vlan */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (! (wildcards & OFPFW_DL_VLAN))
ND_PRINT((ndo, "%smatch dl_vlan %s", pfx, vlan_str(EXTRACT_BE_U_2(cp))));
cp += 2;
/* dl_vlan_pcp */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
if (! (wildcards & OFPFW_DL_VLAN_PCP))
ND_PRINT((ndo, "%smatch dl_vlan_pcp %s", pfx, pcp_str(EXTRACT_U_1(cp))));
cp += 1;
/* pad1 */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
cp += 1;
/* dl_type */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
dl_type = EXTRACT_BE_U_2(cp);
cp += 2;
if (! (wildcards & OFPFW_DL_TYPE))
ND_PRINT((ndo, "%smatch dl_type 0x%04x", pfx, dl_type));
/* nw_tos */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
if (! (wildcards & OFPFW_NW_TOS))
ND_PRINT((ndo, "%smatch nw_tos 0x%02x", pfx, *cp));
cp += 1;
/* nw_proto */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
nw_proto = *cp;
cp += 1;
if (! (wildcards & OFPFW_NW_PROTO)) {
ND_PRINT((ndo, "%smatch %s %u", pfx, field_name, nw_proto));
}
/* pad2 */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
/* nw_src */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
nw_bits = (wildcards & OFPFW_NW_SRC_MASK) >> OFPFW_NW_SRC_SHIFT;
if (nw_bits < 32)
ND_PRINT((ndo, "%smatch nw_src %s/%u", pfx, ipaddr_string(ndo, cp), 32 - nw_bits));
cp += 4;
/* nw_dst */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
nw_bits = (wildcards & OFPFW_NW_DST_MASK) >> OFPFW_NW_DST_SHIFT;
if (nw_bits < 32)
ND_PRINT((ndo, "%smatch nw_dst %s/%u", pfx, ipaddr_string(ndo, cp), 32 - nw_bits));
cp += 4;
/* tp_src */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (! (wildcards & OFPFW_TP_SRC)) {
field_name = ! (wildcards & OFPFW_DL_TYPE) && dl_type == ETHERTYPE_IP
&& ! (wildcards & OFPFW_NW_PROTO) && nw_proto == IPPROTO_ICMP
}
cp += 2;
/* tp_dst */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (! (wildcards & OFPFW_TP_DST)) {
field_name = ! (wildcards & OFPFW_DL_TYPE) && dl_type == ETHERTYPE_IP
&& ! (wildcards & OFPFW_NW_PROTO) && nw_proto == IPPROTO_ICMP
if (len < OF_ACTION_HEADER_LEN)
goto invalid;
/* type */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
type = EXTRACT_BE_U_2(cp);
cp += 2;
ND_PRINT((ndo, "%saction type %s", pfx, tok2str(ofpat_str, "invalid (0x%04x)", type)));
/* length */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
alen = EXTRACT_BE_U_2(cp);
cp += 2;
ND_PRINT((ndo, ", len %u", alen));
switch (type) {
case OFPAT_OUTPUT:
/* port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
output_port = EXTRACT_BE_U_2(cp);
cp += 2;
ND_PRINT((ndo, ", port %s", tok2str(ofpp_str, "%u", output_port)));
/* max_len */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (output_port == OFPP_CONTROLLER)
ND_PRINT((ndo, ", max_len %u", EXTRACT_BE_U_2(cp)));
cp += 2;
break;
case OFPAT_SET_VLAN_VID:
/* vlan_vid */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", vlan_vid %s", vlan_str(EXTRACT_BE_U_2(cp))));
cp += 2;
/* pad */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
break;
case OFPAT_SET_VLAN_PCP:
/* vlan_pcp */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", vlan_pcp %s", pcp_str(EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 3);
+ ND_TCHECK_3(cp);
cp += 3;
break;
case OFPAT_SET_DL_SRC:
ND_PRINT((ndo, ", dl_addr %s", etheraddr_string(ndo, cp)));
cp += ETHER_ADDR_LEN;
/* pad */
- ND_TCHECK2(*cp, 6);
+ ND_TCHECK_6(cp);
cp += 6;
break;
case OFPAT_SET_NW_SRC:
case OFPAT_SET_NW_DST:
/* nw_addr */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", nw_addr %s", ipaddr_string(ndo, cp)));
cp += 4;
break;
case OFPAT_SET_NW_TOS:
/* nw_tos */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", nw_tos 0x%02x", *cp));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 3);
+ ND_TCHECK_3(cp);
cp += 3;
break;
case OFPAT_SET_TP_SRC:
case OFPAT_SET_TP_DST:
/* nw_tos */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", tp_port %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* pad */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
break;
case OFPAT_ENQUEUE:
/* port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", port %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* pad */
- ND_TCHECK2(*cp, 6);
+ ND_TCHECK_6(cp);
cp += 6;
/* queue_id */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", queue_id %s", tok2str(ofpq_str, "%u", EXTRACT_BE_U_4(cp))));
cp += 4;
break;
break;
case OFPAT_STRIP_VLAN:
/* pad */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
cp += 4;
break;
} /* switch */
const u_char *cp, const u_char *ep, const u_int len)
{
/* datapath_id */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, "\n\t dpid 0x%016" PRIx64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* n_buffers */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", n_buffers %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* n_tables */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", n_tables %u", *cp));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 3);
+ ND_TCHECK_3(cp);
cp += 3;
/* capabilities */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t capabilities 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofp_capabilities_bm, EXTRACT_BE_U_4(cp),
OFPCAP_U);
cp += 4;
/* actions */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t actions 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofpat_bm, EXTRACT_BE_U_4(cp), OFPAT_U);
cp += 4;
if (ep == (cp = of10_match_print(ndo, "\n\t ", cp, ep)))
return ep; /* end of snapshot */
/* cookie */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, "\n\t cookie 0x%016" PRIx64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* command */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
command = EXTRACT_BE_U_2(cp);
ND_PRINT((ndo, ", command %s", tok2str(ofpfc_str, "invalid (0x%04x)", command)));
cp += 2;
/* idle_timeout */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (EXTRACT_BE_U_2(cp))
ND_PRINT((ndo, ", idle_timeout %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* hard_timeout */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (EXTRACT_BE_U_2(cp))
ND_PRINT((ndo, ", hard_timeout %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* priority */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (EXTRACT_BE_U_2(cp))
ND_PRINT((ndo, ", priority %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* buffer_id */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
if (command == OFPFC_ADD || command == OFPFC_MODIFY ||
command == OFPFC_MODIFY_STRICT)
ND_PRINT((ndo, ", buffer_id %s", tok2str(bufferid_str, "0x%08x", EXTRACT_BE_U_4(cp))));
cp += 4;
/* out_port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (command == OFPFC_DELETE || command == OFPFC_DELETE_STRICT)
ND_PRINT((ndo, ", out_port %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* flags */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", flags 0x%04x", EXTRACT_BE_U_2(cp)));
of10_bitmap_print(ndo, ofpff_bm, EXTRACT_BE_U_2(cp), OFPFF_U);
cp += 2;
const u_char *cp, const u_char *ep)
{
/* port_no */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* hw_addr */
ND_PRINT((ndo, ", hw_addr %s", etheraddr_string(ndo, cp)));
cp += ETHER_ADDR_LEN;
/* config */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t config 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofppc_bm, EXTRACT_BE_U_4(cp), OFPPC_U);
cp += 4;
/* mask */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t mask 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofppc_bm, EXTRACT_BE_U_4(cp), OFPPC_U);
cp += 4;
/* advertise */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t advertise 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofppf_bm, EXTRACT_BE_U_4(cp), OFPPF_U);
cp += 4;
/* pad */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
return cp + 4;
trunc:
uint16_t type;
/* type */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
type = EXTRACT_BE_U_2(cp);
cp += 2;
ND_PRINT((ndo, "\n\t type %s", tok2str(ofpst_str, "invalid (0x%04x)", type)));
/* flags */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", flags 0x%04x", EXTRACT_BE_U_2(cp)));
if (EXTRACT_BE_U_2(cp))
ND_PRINT((ndo, " (bogus)"));
if (ep == (cp = of10_match_print(ndo, "\n\t ", cp, ep)))
return ep; /* end of snapshot */
/* table_id */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\t table_id %s", tok2str(tableid_str, "%u", EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
cp += 1;
/* out_port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", out_port %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
return cp + 2;
case OFPST_PORT:
if (len != OF_PORT_STATS_REQUEST_LEN)
goto invalid;
/* port_no */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* pad */
- ND_TCHECK2(*cp, 6);
+ ND_TCHECK_6(cp);
return cp + 6;
case OFPST_QUEUE:
if (len != OF_QUEUE_STATS_REQUEST_LEN)
goto invalid;
/* port_no */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* pad */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
/* queue_id */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", queue_id %s", tok2str(ofpq_str, "%u", EXTRACT_BE_U_4(cp))));
return cp + 4;
case OFPST_VENDOR:
if (len < OF_FLOW_STATS_LEN)
goto invalid;
/* length */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
entry_len = EXTRACT_BE_U_2(cp);
ND_PRINT((ndo, "\n\t length %u", entry_len));
if (entry_len < OF_FLOW_STATS_LEN || entry_len > len)
goto invalid;
cp += 2;
/* table_id */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", table_id %s", tok2str(tableid_str, "%u", EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
cp += 1;
/* match */
if (ep == (cp = of10_match_print(ndo, "\n\t ", cp, ep)))
return ep; /* end of snapshot */
/* duration_sec */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t duration_sec %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* duration_nsec */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", duration_nsec %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* priority */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", priority %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* idle_timeout */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", idle_timeout %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* hard_timeout */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", hard_timeout %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* pad2 */
- ND_TCHECK2(*cp, 6);
+ ND_TCHECK_6(cp);
cp += 6;
/* cookie */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", cookie 0x%016" PRIx64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* packet_count */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", packet_count %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* byte_count */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", byte_count %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* actions */
if (len != OF_AGGREGATE_STATS_REPLY_LEN)
goto invalid;
/* packet_count */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, "\n\t packet_count %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* byte_count */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", byte_count %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* flow_count */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", flow_count %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* pad */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
return cp + 4;
invalid: /* skip the message body */
if (len < OF_TABLE_STATS_LEN)
goto invalid;
/* table_id */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\t table_id %s", tok2str(tableid_str, "%u", EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 3);
+ ND_TCHECK_3(cp);
cp += 3;
/* name */
ND_TCHECK2(*cp, OFP_MAX_TABLE_NAME_LEN);
ND_PRINT((ndo, "'"));
cp += OFP_MAX_TABLE_NAME_LEN;
/* wildcards */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t wildcards 0x%08x", EXTRACT_BE_U_4(cp)));
of10_bitmap_print(ndo, ofpfw_bm, EXTRACT_BE_U_4(cp),
OFPFW_U);
cp += 4;
/* max_entries */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t max_entries %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* active_count */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", active_count %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* lookup_count */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", lookup_count %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* matched_count */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", matched_count %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
if (len < OF_PORT_STATS_LEN)
goto invalid;
/* port_no */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
if (ndo->ndo_vflag < 2) {
goto next_port;
}
/* pad */
- ND_TCHECK2(*cp, 6);
+ ND_TCHECK_6(cp);
cp += 6;
/* rx_packets */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", rx_packets %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* tx_packets */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", tx_packets %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* rx_bytes */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", rx_bytes %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* tx_bytes */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", tx_bytes %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* rx_dropped */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", rx_dropped %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* tx_dropped */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", tx_dropped %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* rx_errors */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", rx_errors %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* tx_errors */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", tx_errors %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* rx_frame_err */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", rx_frame_err %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* rx_over_err */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", rx_over_err %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* rx_crc_err */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", rx_crc_err %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* collisions */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", collisions %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
next_port:
if (len < OF_QUEUE_STATS_LEN)
goto invalid;
/* port_no */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* pad */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
/* queue_id */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", queue_id %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* tx_bytes */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", tx_bytes %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* tx_packets */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", tx_packets %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* tx_errors */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", tx_errors %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
uint16_t type;
/* type */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
type = EXTRACT_BE_U_2(cp);
ND_PRINT((ndo, "\n\t type %s", tok2str(ofpst_str, "invalid (0x%04x)", type)));
cp += 2;
/* flags */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", flags 0x%04x", EXTRACT_BE_U_2(cp)));
of10_bitmap_print(ndo, ofpsf_reply_bm, EXTRACT_BE_U_2(cp),
OFPSF_REPLY_U);
uint16_t actions_len;
/* buffer_id */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t buffer_id 0x%08x", EXTRACT_BE_U_4(cp)));
cp += 4;
/* in_port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", in_port %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* actions_len */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
actions_len = EXTRACT_BE_U_2(cp);
cp += 2;
if (actions_len > len - OF_PACKET_OUT_LEN)
const u_char *cp, const u_char *ep, const u_int len)
{
/* buffer_id */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, "\n\t buffer_id %s", tok2str(bufferid_str, "0x%08x", EXTRACT_BE_U_4(cp))));
cp += 4;
/* total_len */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", total_len %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* in_port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", in_port %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* reason */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", reason %s", tok2str(ofpr_str, "invalid (0x%02x)", EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
cp += 1;
/* data */
/* 2 mock octets count in OF_PACKET_IN_LEN but not in len */
if (ep == (cp = of10_match_print(ndo, "\n\t ", cp, ep)))
return ep; /* end of snapshot */
/* cookie */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, "\n\t cookie 0x%016" PRIx64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* priority */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (EXTRACT_BE_U_2(cp))
ND_PRINT((ndo, ", priority %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* reason */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, ", reason %s", tok2str(ofprr_str, "unknown (0x%02x)", EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
cp += 1;
/* duration_sec */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", duration_sec %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* duration_nsec */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", duration_nsec %u", EXTRACT_BE_U_4(cp)));
cp += 4;
/* idle_timeout */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
if (EXTRACT_BE_U_2(cp))
ND_PRINT((ndo, ", idle_timeout %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* pad2 */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
/* packet_count */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", packet_count %" PRIu64, EXTRACT_BE_U_8(cp)));
cp += 8;
/* byte_count */
- ND_TCHECK2(*cp, 8);
+ ND_TCHECK_8(cp);
ND_PRINT((ndo, ", byte_count %" PRIu64, EXTRACT_BE_U_8(cp)));
return cp + 8;
const struct tok *code_str;
/* type */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
type = EXTRACT_BE_U_2(cp);
cp += 2;
ND_PRINT((ndo, "\n\t type %s", tok2str(ofpet_str, "invalid (0x%04x)", type)));
/* code */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
code_str =
type == OFPET_HELLO_FAILED ? ofphfc_str :
type == OFPET_BAD_REQUEST ? ofpbrc_str :
if (ndo->ndo_vflag < 1)
goto next_message;
/* flags */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t flags %s", tok2str(ofp_config_str, "invalid (0x%04x)", EXTRACT_BE_U_2(cp))));
cp += 2;
/* miss_send_len */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", miss_send_len %u", EXTRACT_BE_U_2(cp)));
return cp + 2;
case OFPT_PORT_MOD:
if (ndo->ndo_vflag < 1)
goto next_message;
/* port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* pad */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
return cp + 2;
case OFPT_FLOW_REMOVED:
if (len != OF_FLOW_REMOVED_LEN)
if (ndo->ndo_vflag < 1)
goto next_message;
/* reason */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
ND_PRINT((ndo, "\n\t reason %s", tok2str(ofppr_str, "invalid (0x%02x)", EXTRACT_U_1(cp))));
cp += 1;
/* pad */
- ND_TCHECK2(*cp, 7);
+ ND_TCHECK_7(cp);
cp += 7;
/* desc */
return of10_phy_ports_print(ndo, cp, ep, OF_PHY_PORT_LEN);
if (ndo->ndo_vflag < 1)
goto next_message;
/* port */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\t port_no %s", tok2str(ofpp_str, "%u", EXTRACT_BE_U_2(cp))));
cp += 2;
/* pad */
- ND_TCHECK2(*cp, 6);
+ ND_TCHECK_6(cp);
cp += 6;
/* queues */
return of10_queues_print(ndo, cp, ep, len - OF_QUEUE_GET_CONFIG_REPLY_LEN);
if (ep < cp + OF_HEADER_LEN)
goto invalid;
/* version */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
version = *cp;
cp += 1;
/* type */
- ND_TCHECK2(*cp, 1);
+ ND_TCHECK_1(cp);
type = *cp;
cp += 1;
/* length */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
length = EXTRACT_BE_U_2(cp);
cp += 2;
/* xid */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
xid = EXTRACT_BE_U_4(cp);
cp += 4;
/* Message length includes the header length and a message always includes
ND_PRINT((ndo, "\n\t[LLS truncated]"));
return (1);
}
- ND_TCHECK2(*dptr, 2);
+ ND_TCHECK_2(dptr);
ND_PRINT((ndo, "\n\t LLS: checksum: 0x%04x", (u_int) EXTRACT_BE_U_2(dptr)));
dptr += 2;
- ND_TCHECK2(*dptr, 2);
+ ND_TCHECK_2(dptr);
length2 = EXTRACT_BE_U_2(dptr);
ND_PRINT((ndo, ", length: %u", length2));
dptr += 2;
ND_TCHECK(*dptr);
while (dptr < dataend) {
- ND_TCHECK2(*dptr, 2);
+ ND_TCHECK_2(dptr);
lls_type = EXTRACT_BE_U_2(dptr);
ND_PRINT((ndo, "\n\t %s (%u)",
tok2str(ospf_lls_tlv_values,"Unknown TLV",lls_type),
lls_type));
dptr += 2;
- ND_TCHECK2(*dptr, 2);
+ ND_TCHECK_2(dptr);
lls_len = EXTRACT_BE_U_2(dptr);
ND_PRINT((ndo, ", length: %u", lls_len));
dptr += 2;
ND_PRINT((ndo, " [should be 4]"));
lls_len = 4;
}
- ND_TCHECK2(*dptr, 4);
+ ND_TCHECK_4(dptr);
lls_flags = EXTRACT_BE_U_4(dptr);
ND_PRINT((ndo, "\n\t Options: 0x%08x [%s]", lls_flags,
bittok2str(ospf_lls_eo_options, "?", lls_flags)));
ND_PRINT((ndo, " [should be 20]"));
lls_len = 20;
}
- ND_TCHECK2(*dptr, 4);
+ ND_TCHECK_4(dptr);
ND_PRINT((ndo, "\n\t Sequence number: 0x%08x", EXTRACT_BE_U_4(dptr)));
break;
}
if (len < OSPF_LLS_HDRLEN)
goto trunc;
/* Checksum */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\tLLS Checksum 0x%04x", EXTRACT_BE_U_2(cp)));
cp += 2;
/* LLS Data Length */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
llsdatalen = EXTRACT_BE_U_2(cp);
ND_PRINT((ndo, ", Data Length %u", llsdatalen));
if (llsdatalen < OSPF_LLS_HDRLEN || llsdatalen > len)
if (len < OSPF6_AT_HDRLEN)
goto trunc;
/* Authentication Type */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, "\n\tAuthentication Type %s", tok2str(ospf6_auth_type_str, "unknown (0x%04x)", EXTRACT_BE_U_2(cp))));
cp += 2;
/* Auth Data Len */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
authdatalen = EXTRACT_BE_U_2(cp);
ND_PRINT((ndo, ", Length %u", authdatalen));
if (authdatalen < OSPF6_AT_HDRLEN || authdatalen > len)
goto trunc;
cp += 2;
/* Reserved */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
cp += 2;
/* Security Association ID */
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
ND_PRINT((ndo, ", SAID %u", EXTRACT_BE_U_2(cp)));
cp += 2;
/* Cryptographic Sequence Number (High-Order 32 Bits) */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ", CSN 0x%08x", EXTRACT_BE_U_4(cp)));
cp += 4;
/* Cryptographic Sequence Number (Low-Order 32 Bits) */
- ND_TCHECK2(*cp, 4);
+ ND_TCHECK_4(cp);
ND_PRINT((ndo, ":%08x", EXTRACT_BE_U_4(cp)));
cp += 4;
/* Authentication Data */
ND_PRINT((ndo, "flags [%s] (0x%02x), ", flags & 0x08 ? "I" : ".", flags));
bp += 1;
- ND_TCHECK2(*bp, 3);
+ ND_TCHECK_3(bp);
ND_PRINT((ndo, "overlay %u, ", EXTRACT_BE_U_3(bp)));
bp += 3;
- ND_TCHECK2(*bp, 3);
+ ND_TCHECK_3(bp);
ND_PRINT((ndo, "instance %u\n", EXTRACT_BE_U_3(bp)));
bp += 3;
ND_PRINT((ndo, "[Total option length leaves no room for final option]"));
return;
}
- if (!ND_TTEST2(*bp, 2)) {
+ if (!ND_TTEST_2(bp)) {
ND_PRINT((ndo, " [|OPT]"));
return;
}
ND_PRINT((ndo, "[Option length not a multiple of 4]"));
return;
}
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
ND_PRINT((ndo, " %u", EXTRACT_BE_U_4(bp)));
bp += 4;
opt_len -= 4;
len -= 4;
if (len < 4)
goto trunc;
- ND_TCHECK2(bp[2], 2);
+ ND_TCHECK_2(bp + 2);
if (ndo->ndo_vflag > 1)
ND_PRINT((ndo, "\n"));
ND_PRINT((ndo, " Hold time: "));
if (len < 4)
goto trunc;
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
ngroups = bp[3];
bp += 4;
len -= 4;
len -= 4;
if (len < 4)
goto trunc;
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
njoin = EXTRACT_BE_U_2(bp);
nprune = EXTRACT_BE_U_2(bp + 2);
ND_PRINT((ndo, " joined: %d pruned: %d", njoin, nprune));
type = "Prune";
if (len < 6)
goto trunc;
- ND_TCHECK2(bp[0], 6);
+ 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 " : "",
}
}
if (ndo->ndo_vflag) {
- ND_TCHECK2(bp[10],2);
+ ND_TCHECK_2(bp + 10);
ND_PRINT((ndo, " (Hold-time "));
unsigned_relts_print(ndo, EXTRACT_BE_U_2(bp + 10));
ND_PRINT((ndo, ")"));
break;
case PIMV1_TYPE_RP_REACHABILITY:
if (ndo->ndo_vflag) {
- ND_TCHECK2(bp[22], 2);
+ ND_TCHECK_2(bp + 22);
ND_PRINT((ndo, " group %s", ipaddr_string(ndo, &bp[8])));
if (EXTRACT_BE_U_4(bp + 12) != 0xffffffff)
ND_PRINT((ndo, "/%s", ipaddr_string(ndo, &bp[12])));
ipaddr_string(ndo, &bp[8])));
if (EXTRACT_BE_U_4(bp + 12) != 0xffffffff)
ND_PRINT((ndo, "/%s", ipaddr_string(ndo, &bp[12])));
- ND_TCHECK2(bp[24], 4);
+ 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,
ND_TCHECK(bp[1]);
numrps = bp[1];
- ND_TCHECK2(bp[2], 2);
+ ND_TCHECK_2(bp + 2);
ND_PRINT((ndo, " Hold "));
hold = EXTRACT_BE_U_2(bp + 2);
if (hold)
if (len < 4)
goto trunc;
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
ND_PRINT((ndo, " RP %s", ipaddr_string(ndo, bp)));
bp += 4;
len -= 4;
for (; nentries; nentries--) {
if (len < 6)
goto trunc;
- ND_TCHECK2(bp[0], 6);
+ ND_TCHECK_6(bp);
ND_PRINT((ndo, "%c%s%s/%d", s, bp[0] & 1 ? "!" : "",
ipaddr_string(ndo, &bp[2]), bp[1]));
if (bp[0] & 0x02) {
while (len > 0) {
if (len < 4)
goto trunc;
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
otype = EXTRACT_BE_U_2(bp);
olen = EXTRACT_BE_U_2(bp + 2);
ND_PRINT((ndo, "\n\t %s Option (%u), length %u, Value: ",
}
if (len < 4)
goto trunc;
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
ngroup = bp[1];
holdtime = EXTRACT_BE_U_2(bp + 2);
ND_PRINT((ndo, "\n\t %u group(s)", ngroup));
bp += advance; len -= advance;
if (len < 4)
goto trunc;
- ND_TCHECK2(*bp, 4);
+ ND_TCHECK_4(bp);
njoin = EXTRACT_BE_U_2(bp);
nprune = EXTRACT_BE_U_2(bp + 2);
ND_PRINT((ndo, ", joined sources: %u, pruned sources: %u", njoin, nprune));
bp += advance; len -= advance;
if (len < 8)
goto trunc;
- ND_TCHECK2(*bp, 8);
+ ND_TCHECK_8(bp);
if (bp[0] & 0x80)
ND_PRINT((ndo, " RPT"));
ND_PRINT((ndo, " pref=%u", EXTRACT_BE_U_4(bp) & 0x7fffffff));
if (length < 4) /* FIXME weak boundary checking */
goto trunc;
- ND_TCHECK2(*tptr, 2);
+ ND_TCHECK_2(tptr);
code = EXTRACT_U_1(tptr);
tptr++;
if (length < 2)
return 0;
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
opt = EXTRACT_U_1(p);
len = EXTRACT_U_1(p + 1);
if (length < len)
ND_PRINT((ndo, " (length bogus, should be = 7)"));
return 0;
}
- ND_TCHECK2(*(p + 3), 4);
+ ND_TCHECK_4(p + 3);
ND_PRINT((ndo, ": IPv4 %s", ipaddr_string(ndo, p + 3)));
break;
case MEDCLASS_MAC:
ND_PRINT((ndo, " (length bogus, should be = 9)"));
return 0;
}
- ND_TCHECK2(*(p + 3), 6);
+ ND_TCHECK_6(p + 3);
ND_PRINT((ndo, ": MAC %s", etheraddr_string(ndo, p + 3)));
break;
case MEDCLASS_MNB:
if (length < 2)
return 0;
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
opt = EXTRACT_U_1(p);
len = EXTRACT_U_1(p + 1);
if (length < len)
ND_PRINT((ndo, " (length bogus, should be = 10)"));
return len;
}
- ND_TCHECK2(*(p + 6), 4);
+ ND_TCHECK_4(p + 6);
ND_PRINT((ndo, ": src %s, dst %s",
ipaddr_string(ndo, p + 2),
ipaddr_string(ndo, p + 6)));
ND_PRINT((ndo, "\n\t Suboptions, length %u", ipcomp_subopttotallen));
while (ipcomp_subopttotallen >= 2) {
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
ipcomp_subopt = EXTRACT_U_1(p);
ipcomp_suboptlen = EXTRACT_U_1(p + 1);
ND_PRINT((ndo, " (length bogus, should be = 6)"));
return 0;
}
- ND_TCHECK2(*(p + 2), 4);
+ ND_TCHECK_4(p + 2);
ND_PRINT((ndo, ": %s", ipaddr_string(ndo, p + 2)));
break;
default:
if (length < 2)
return 0;
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
opt = EXTRACT_U_1(p);
len = EXTRACT_U_1(p + 1);
if (length < len)
ND_PRINT((ndo, " (length bogus, should be = 10)"));
return len;
}
- ND_TCHECK2(*(p + 2), 8);
+ ND_TCHECK_8(p + 2);
ND_PRINT((ndo, ": %04x:%04x:%04x:%04x",
EXTRACT_BE_U_2(p + 2),
EXTRACT_BE_U_2(p + 4),
if (length < 2)
return 0;
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
opt = EXTRACT_U_1(p);
len = EXTRACT_U_1(p + 1);
if (length < len)
if (length < 2)
return 0;
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
opt = EXTRACT_U_1(p);
len = EXTRACT_U_1(p + 1);
if (length < len)
* tag_type is previous tag or 0xffff for first iteration
*/
while (tag_type && p < pppoe_payload + pppoe_length) {
- ND_TCHECK2(*p, 4);
+ ND_TCHECK_4(p);
tag_type = EXTRACT_BE_U_2(p);
tag_len = EXTRACT_BE_U_2(p + 2);
p += 4;
if (length < 4)
goto trunc;
- ND_TCHECK2(*data, 4);
+ ND_TCHECK_4(data);
vendor_id = EXTRACT_BE_U_4(data);
data+=4;
length-=4;
vendor_id));
while (length >= 2) {
- ND_TCHECK2(*data, 2);
+ ND_TCHECK_2(data);
vendor_type = *(data);
vendor_length = EXTRACT_U_1(data + 1);
return;
}
- ND_TCHECK2(data[0],4);
+ ND_TCHECK_4(data);
/* This attribute has standard values */
if (attr_type[attr_code].siz_subtypes)
{
return;
}
- ND_TCHECK2(data[0],4);
+ ND_TCHECK_4(data);
switch(attr_code)
{
return;
}
- ND_TCHECK2(data[0], 16);
+ ND_TCHECK_16(data);
ND_PRINT((ndo, "%s", ip6addr_string(ndo, data)));
return;
}
- ND_TCHECK2(data[0],4);
+ ND_TCHECK_4(data);
attr_time = EXTRACT_BE_U_4(data);
strlcpy(string, ctime(&attr_time), sizeof(string));
return;
}
ND_PRINT((ndo, "User_challenge ("));
- ND_TCHECK2(data[0],8);
+ ND_TCHECK_8(data);
len_data = 8;
PRINT_HEX(len_data, data);
ND_PRINT((ndo, ") User_resp("));
- ND_TCHECK2(data[0],8);
+ ND_TCHECK_8(data);
len_data = 8;
PRINT_HEX(len_data, data);
ND_PRINT((ndo, ")"));
ND_PRINT((ndo, "ERROR: length %u != 14", length));
return;
}
- ND_TCHECK2(data[0],1);
+ ND_TCHECK_1(data);
if (*data)
ND_PRINT((ndo, "User can change password"));
else
ND_PRINT((ndo, "User cannot change password"));
data++;
- ND_TCHECK2(data[0],1);
+ ND_TCHECK_1(data);
ND_PRINT((ndo, ", Min password length: %d", *data));
data++;
ND_PRINT((ndo, ", created at: "));
- ND_TCHECK2(data[0],4);
+ ND_TCHECK_4(data);
len_data = 4;
PRINT_HEX(len_data, data);
ND_PRINT((ndo, ", expires in: "));
- ND_TCHECK2(data[0],4);
+ ND_TCHECK_4(data);
len_data = 4;
PRINT_HEX(len_data, data);
ND_PRINT((ndo, ", Current Time: "));
- ND_TCHECK2(data[0],4);
+ ND_TCHECK_4(data);
len_data = 4;
PRINT_HEX(len_data, data);
break;
ND_PRINT((ndo, "ERROR: length %u != 8", length));
return;
}
- ND_TCHECK2(data[0],8);
+ ND_TCHECK_8(data);
len_data = 8;
PRINT_HEX(len_data, data);
break;
ND_PRINT((ndo, "Error: length %u != 4", length));
return;
}
- ND_TCHECK2(data[0],4);
+ ND_TCHECK_4(data);
error_cause_value = EXTRACT_BE_U_4(data);
ND_PRINT((ndo, "Error cause %u: %s", error_cause_value, tok2str(errorcausetype, "Error-Cause %u not known", error_cause_value)));
tok2str(opcode_values,"unknown opcode (0x%02x)",rrcp_opcode)));
}
if (rrcp_opcode==1 || rrcp_opcode==2){
- ND_TCHECK2(*(cp + RRCP_REG_ADDR_OFFSET), 6);
+ ND_TCHECK_6(cp + RRCP_REG_ADDR_OFFSET);
ND_PRINT((ndo, " addr=0x%04x, data=0x%08x",
EXTRACT_LE_U_2(cp + RRCP_REG_ADDR_OFFSET),
EXTRACT_LE_U_4(cp + RRCP_REG_DATA_OFFSET)));
}
if (rrcp_proto==1){
- ND_TCHECK2(*(cp + RRCP_AUTHKEY_OFFSET), 2);
+ ND_TCHECK_2(cp + RRCP_AUTHKEY_OFFSET);
ND_PRINT((ndo, ", auth=0x%04x",
EXTRACT_BE_U_2(cp + RRCP_AUTHKEY_OFFSET)));
}
if (rrcp_proto==1 && rrcp_opcode==0 &&
((*(cp + RRCP_OPCODE_ISREPLY_OFFSET)) & RRCP_ISREPLY)){
- ND_TCHECK2(*(cp + RRCP_VENDOR_ID_OFFSET), 4);
+ ND_TCHECK_4(cp + RRCP_VENDOR_ID_OFFSET);
ND_PRINT((ndo, " downlink_port=%d, uplink_port=%d, uplink_mac=%s, vendor_id=%08x ,chip_id=%04x ",
*(cp + RRCP_DOWNLINK_PORT_OFFSET),
*(cp + RRCP_UPLINK_PORT_OFFSET),
EXTRACT_BE_U_4(cp + RRCP_VENDOR_ID_OFFSET),
EXTRACT_BE_U_2(cp + RRCP_CHIP_ID_OFFSET)));
}else if (rrcp_opcode==1 || rrcp_opcode==2 || rrcp_proto==2){
- ND_TCHECK2(*(cp + RRCP_COOKIE2_OFFSET), 4);
+ ND_TCHECK_4(cp + RRCP_COOKIE2_OFFSET);
ND_PRINT((ndo, ", cookie=0x%08x%08x ",
EXTRACT_BE_U_4(cp + RRCP_COOKIE2_OFFSET),
EXTRACT_BE_U_4(cp + RRCP_COOKIE1_OFFSET)));
if (obj_tlen < 4)
return 0;
parameter_id = *(tptr);
- ND_TCHECK2(*(tptr + 2), 2);
+ ND_TCHECK_2(tptr + 2);
parameter_length = EXTRACT_BE_U_2(tptr + 2)<<2; /* convert wordcount to bytecount */
ND_PRINT((ndo, "\n\t Parameter ID: %s (%u), length: %u, Flags: [0x%02x]",
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
if (parameter_length == 4) {
- ND_TCHECK2(*(tptr + 4), 4);
+ ND_TCHECK_4(tptr + 4);
ND_PRINT((ndo, "\n\t\tIS hop count: %u", EXTRACT_BE_U_4(tptr + 4)));
}
break;
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
if (parameter_length == 4) {
- ND_TCHECK2(*(tptr + 4), 4);
+ ND_TCHECK_4(tptr + 4);
bw.i = EXTRACT_BE_U_4(tptr + 4);
ND_PRINT((ndo, "\n\t\tPath b/w estimate: %.10g Mbps", bw.f / 125000));
}
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
if (parameter_length == 4) {
- ND_TCHECK2(*(tptr + 4), 4);
+ ND_TCHECK_4(tptr + 4);
ND_PRINT((ndo, "\n\t\tMinimum path latency: "));
if (EXTRACT_BE_U_4(tptr + 4) == 0xffffffff)
ND_PRINT((ndo, "don't care"));
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
if (parameter_length == 4) {
- ND_TCHECK2(*(tptr + 4), 4);
+ ND_TCHECK_4(tptr + 4);
ND_PRINT((ndo, "\n\t\tComposed MTU: %u bytes", EXTRACT_BE_U_4(tptr + 4)));
}
break;
*/
if (parameter_length == 8) {
- ND_TCHECK2(*(tptr + 4), 8);
+ ND_TCHECK_8(tptr + 4);
bw.i = EXTRACT_BE_U_4(tptr + 4);
ND_PRINT((ndo, "\n\t\tRate: %.10g Mbps", bw.f / 125000));
ND_PRINT((ndo, "\n\t\tSlack Term: %u", EXTRACT_BE_U_4(tptr + 8)));
case 135:
case 136:
if (parameter_length == 4) {
- ND_TCHECK2(*(tptr + 4), 4);
+ ND_TCHECK_4(tptr + 4);
ND_PRINT((ndo, "\n\t\tValue: %u", EXTRACT_BE_U_4(tptr + 4)));
}
break;
while(obj_tlen >= 4 ) {
u_char length;
- ND_TCHECK2(*obj_tptr, 4);
+ ND_TCHECK_4(obj_tptr);
length = EXTRACT_U_1(obj_tptr + 1);
ND_PRINT((ndo, "%s Subobject Type: %s, length %u",
indent,
ND_PRINT((ndo, " ERROR: length != 8"));
goto invalid;
}
- ND_TCHECK2(*obj_tptr, 8);
+ ND_TCHECK_8(obj_tptr);
prefix_length = EXTRACT_U_1(obj_tptr + 6);
if (prefix_length != 32) {
ND_PRINT((ndo, " ERROR: Prefix length %u != 32",
ND_PRINT((ndo, " ERROR: length != 8"));
goto invalid;
}
- ND_TCHECK2(*obj_tptr, 8);
+ ND_TCHECK_8(obj_tptr);
ND_PRINT((ndo, ", Flags: [%s] (%#x), Class-Type: %s (%u), %u",
bittok2str(rsvp_obj_rro_label_flag_values,
"none",
{
char a[AFSOPAQUEMAX+1];
FIDOUT();
- ND_TCHECK2(bp[0], 4);
+ ND_TCHECK_4(bp);
i = EXTRACT_BE_U_4(bp);
bp += sizeof(uint32_t);
ND_TCHECK2(bp[0], i);
/* Sequence number */
if (tlen < 2)
goto tooshort;
- ND_TCHECK2(*tptr, 2);
+ ND_TCHECK_2(tptr);
ND_PRINT((ndo, "\n\t Sequence Number %u", EXTRACT_BE_U_2(tptr)));
tlen -= 2;
tptr += 2;
const char *fmt="";
if (request) {
- ND_TCHECK2(*param, 2);
+ ND_TCHECK_2(param);
level = EXTRACT_LE_U_2(param);
fmt = "InfoLevel=[d]\n";
smb_fdata(ndo, param, fmt, param + pcnt, unicodestr);
ND_TCHECK(words[0]);
if (request) {
- ND_TCHECK2(w[14 * 2], 2);
+ ND_TCHECK_2(w + (14 * 2));
pcnt = EXTRACT_LE_U_2(w + 9 * 2);
param = buf + EXTRACT_LE_U_2(w + 10 * 2);
dcnt = EXTRACT_LE_U_2(w + 11 * 2);
ND_PRINT((ndo, "Trans2Interim\n"));
return;
}
- ND_TCHECK2(w[7 * 2], 2);
+ ND_TCHECK_2(w + (7 * 2));
pcnt = EXTRACT_LE_U_2(w + 3 * 2);
param = buf + EXTRACT_LE_U_2(w + 4 * 2);
dcnt = EXTRACT_LE_U_2(w + 6 * 2);
f2 = fn->descript.rep_f2;
}
- ND_TCHECK2(*dat, 2);
+ ND_TCHECK_2(dat);
bcc = EXTRACT_LE_U_2(dat);
ND_PRINT((ndo, "smb_bcc=%u\n", bcc));
if (fn->descript.fn)
int datalen, paramlen;
if (request) {
- ND_TCHECK2(w[12 * 2], 2);
+ ND_TCHECK_2(w + (12 * 2));
paramlen = EXTRACT_LE_U_2(w + 9 * 2);
param = buf + EXTRACT_LE_U_2(w + 10 * 2);
datalen = EXTRACT_LE_U_2(w + 11 * 2);
f3 = "|Param ";
f4 = "|Data ";
} else {
- ND_TCHECK2(w[7 * 2], 2);
+ ND_TCHECK_2(w + (7 * 2));
paramlen = EXTRACT_LE_U_2(w + 3 * 2);
param = buf + EXTRACT_LE_U_2(w + 4 * 2);
datalen = EXTRACT_LE_U_2(w + 6 * 2);
smb_fdata(ndo, words + 1, f1, min(words + 1 + 2 * words[0], maxbuf),
unicodestr);
- ND_TCHECK2(*data1, 2);
+ ND_TCHECK_2(data1);
bcc = EXTRACT_LE_U_2(data1);
ND_PRINT((ndo, "smb_bcc=%u\n", bcc));
if (bcc > 0) {
else
smb_print_data(ndo, words + 1, min(wct * 2, PTR_DIFF(maxbuf, words + 1)));
- ND_TCHECK2(*data, 2);
+ ND_TCHECK_2(data);
bcc = EXTRACT_LE_U_2(data);
ND_PRINT((ndo, "smb_bcc=%u\n", bcc));
if (bcc > 0) {
else
smb_print_data(ndo, words + 1, min(wct * 2, PTR_DIFF(maxbuf, words + 1)));
- ND_TCHECK2(*data, 2);
+ ND_TCHECK_2(data);
bcc = EXTRACT_LE_U_2(data);
ND_PRINT((ndo, "smb_bcc=%u\n", bcc));
if (bcc > 0) {
if (wct)
smb_fdata(ndo, words + 1, f1, maxwords, unicodestr);
- ND_TCHECK2(*data, 2);
+ ND_TCHECK_2(data);
bcc = EXTRACT_LE_U_2(data);
ND_PRINT((ndo, "smb_bcc=%u\n", bcc));
if (bcc > 0) {
int v;
for (i = 0; &words[1 + 2 * i] < maxwords; i++) {
- ND_TCHECK2(words[1 + 2 * i], 2);
+ ND_TCHECK_2(words + (1 + 2 * i));
v = EXTRACT_LE_U_2(words + 1 + 2 * i);
ND_PRINT((ndo, "smb_vwv[%d]=%d (0x%X)\n", i, v, v));
}
}
}
- ND_TCHECK2(*data, 2);
+ ND_TCHECK_2(data);
bcc = EXTRACT_LE_U_2(data);
ND_PRINT((ndo, "smb_bcc=%u\n", bcc));
if (f2) {
command = words[1];
if (command == 0xFF)
break;
- ND_TCHECK2(words[3], 2);
+ ND_TCHECK_2(words + 3);
newsmboffset = EXTRACT_LE_U_2(words + 3);
fn = smbfind(command, smb_fns);
const u_char *p;
int total, i;
- ND_TCHECK2(data[10], 2);
+ ND_TCHECK_2(data + 10);
name_trn_id = EXTRACT_BE_U_2(data);
response = (data[2] >> 7);
opcode = (data[2] >> 3) & 0xF;
* severity and facility values
*/
- ND_TCHECK2(*pptr, 1);
+ ND_TCHECK_1(pptr);
if (*(pptr+msg_off) == '<') {
msg_off++;
- ND_TCHECK2(*(pptr + msg_off), 1);
+ ND_TCHECK_1(pptr + msg_off);
while (msg_off <= SYSLOG_MAX_DIGITS &&
*(pptr+msg_off) >= '0' &&
*(pptr+msg_off) <= '9') {
pri = pri * 10 + (*(pptr+msg_off) - '0');
msg_off++;
- ND_TCHECK2(*(pptr + msg_off), 1);
+ ND_TCHECK_1(pptr + msg_off);
}
if (*(pptr+msg_off) != '>') {
ND_PRINT((ndo, "%s", tstr));
/* print the syslog text in verbose mode */
for (; msg_off < len; msg_off++) {
- ND_TCHECK2(*(pptr + msg_off), 1);
+ ND_TCHECK_1(pptr + msg_off);
safeputchar(ndo, *(pptr + msg_off));
}
ldp_print(ndo, bp, length);
}
else if ((IS_SRC_OR_DST_PORT(NFS_PORT)) &&
- length >= 4 && ND_TTEST2(*bp, 4)) {
+ length >= 4 && ND_TTEST_4(bp)) {
/*
* If data present, header length valid, and NFS port used,
* assume NFS.
#include <stdio.h>
#include "netdissect.h"
+#include "extract.h"
static const char tstr[] = " [|telnet]";
/* IAC SB .... IAC SE */
p = sp;
while (length > (u_int)(p + 1 - sp)) {
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
if (p[0] == IAC && p[1] == SE)
break;
p++;
while (tptr < (pptr+length)) {
- ND_TCHECK2(*tptr, 4);
+ ND_TCHECK_4(tptr);
type = EXTRACT_BE_U_2(tptr);
len = EXTRACT_BE_U_2(tptr + 2);
*
*/
- ND_TCHECK2(*tptr, 8);
+ ND_TCHECK_8(tptr);
ND_PRINT((ndo, "\n\t Config Rev %x, Updater %s",
EXTRACT_BE_U_4(tptr),
ipaddr_string(ndo, tptr+4)));
*/
if (len < 2)
goto trunc;
- ND_TCHECK2(*tptr, 2);
+ ND_TCHECK_2(tptr);
type = *tptr;
tlv_len = EXTRACT_U_1(tptr + 1);
*
*/
- ND_TCHECK2(*tptr, 4);
+ ND_TCHECK_4(tptr);
ND_PRINT((ndo, "\n\tStart value: %u", EXTRACT_BE_U_4(tptr)));
break;
uint8_t flags;
ND_PRINT((ndo, "\n\t"));
- ND_TCHECK2(*cp, 1); /* length/0xFF */
+ ND_TCHECK_1(cp); /* length/0xFF */
if (cp[0] != 0xFF) {
header_len = 1; /* length */
u_int frame_offset;
uint64_t remaining_len;
- ND_TCHECK2(*cp, 2);
+ ND_TCHECK_2(cp);
frame_offset = EXTRACT_BE_U_2(cp);
ND_PRINT((ndo, "\n\t frame offset 0x%04x", frame_offset));
cp += 2;
if (in >= maxbuf)
return(-1); /* name goes past the end of the buffer */
- ND_TCHECK2(*in, 1);
+ ND_TCHECK_1(in);
len = EXTRACT_U_1(in) / 2;
in++;
return(0);
while (len--) {
- ND_TCHECK2(*in, 2);
+ ND_TCHECK_2(in);
if (in + 1 >= maxbuf)
return(-1); /* name goes past the end of the buffer */
if (in[0] < 'A' || in[0] > 'P' || in[1] < 'A' || in[1] > 'P') {
p = buf + ofs;
if (p >= maxbuf)
return(NULL); /* name goes past the end of the buffer */
- ND_TCHECK2(*p, 1);
+ ND_TCHECK_1(p);
c = *p;
if ((c & 0xC0) == 0xC0) {
uint16_t l;
- ND_TCHECK2(*p, 2);
+ ND_TCHECK_2(p);
if ((p + 1) >= maxbuf)
return(NULL); /* name goes past the end of the buffer */
l = EXTRACT_BE_U_2(p) & 0x3FFF;
p = buf + l;
if (p >= maxbuf)
return(NULL); /* name goes past the end of the buffer */
- ND_TCHECK2(*p, 1);
+ ND_TCHECK_1(p);
}
return(p);
strsize = *len - 1;
} else {
for (;;) {
- ND_TCHECK2(sp[0], 2);
+ ND_TCHECK_2(sp);
*len += 2;
if (sp[0] == 0 && sp[1] == 0)
break;
}
} else {
while (strsize != 0) {
- ND_TCHECK2(s[0], 2);
+ ND_TCHECK_2(s);
if (l >= MAX_UNISTR_SIZE)
break;
if (s[1] == 0 && ND_ISPRINT(s[0])) {
break;
case 'A':
- ND_TCHECK2(buf[0], 2);
+ ND_TCHECK_2(buf);
write_bits(ndo, EXTRACT_LE_U_2(buf), attrib_fmt);
buf += 2;
fmt++;
case 'd':
{
unsigned int x;
- ND_TCHECK2(buf[0], 2);
+ ND_TCHECK_2(buf);
x = reverse ? EXTRACT_BE_U_2(buf) :
EXTRACT_LE_U_2(buf);
ND_PRINT((ndo, "%d (0x%x)", x, x));
case 'D':
{
unsigned int x;
- ND_TCHECK2(buf[0], 4);
+ ND_TCHECK_4(buf);
x = reverse ? EXTRACT_BE_U_4(buf) :
EXTRACT_LE_U_4(buf);
ND_PRINT((ndo, "%d (0x%x)", x, x));
case 'L':
{
uint64_t x;
- ND_TCHECK2(buf[0], 8);
+ ND_TCHECK_8(buf);
x = reverse ? EXTRACT_BE_U_8(buf) :
EXTRACT_LE_U_8(buf);
ND_PRINT((ndo, "%" PRIu64 " (0x%" PRIx64 ")", x, x));
/* Weird mixed-endian length values in 64-bit locks */
uint32_t x1, x2;
uint64_t x;
- ND_TCHECK2(buf[0], 8);
+ ND_TCHECK_8(buf);
x1 = reverse ? EXTRACT_BE_U_4(buf) :
EXTRACT_LE_U_4(buf);
x2 = reverse ? EXTRACT_BE_U_4(buf + 4) :
case 'w':
{
unsigned int x;
- ND_TCHECK2(buf[0], 2);
+ ND_TCHECK_2(buf);
x = reverse ? EXTRACT_BE_U_2(buf) :
EXTRACT_LE_U_2(buf);
ND_PRINT((ndo, "0x%X", x));
case 'W':
{
unsigned int x;
- ND_TCHECK2(buf[0], 4);
+ ND_TCHECK_4(buf);
x = reverse ? EXTRACT_BE_U_4(buf) :
EXTRACT_LE_U_4(buf);
ND_PRINT((ndo, "0x%X", x));
break;
case 'd':
- ND_TCHECK2(buf[0], 2);
+ ND_TCHECK_2(buf);
stringlen = reverse ? EXTRACT_BE_U_2(buf) :
EXTRACT_LE_U_2(buf);
ND_PRINT((ndo, "%u", stringlen));
break;
case 'D':
- ND_TCHECK2(buf[0], 4);
+ ND_TCHECK_4(buf);
stringlen = reverse ? EXTRACT_BE_U_4(buf) :
EXTRACT_LE_U_4(buf);
ND_PRINT((ndo, "%u", stringlen));
switch (atoi(fmt + 1)) {
case 1:
- ND_TCHECK2(buf[0], 4);
+ ND_TCHECK_4(buf);
x = EXTRACT_LE_U_4(buf);
if (x == 0 || x == 0xFFFFFFFF)
t = 0;
buf += 4;
break;
case 2:
- ND_TCHECK2(buf[0], 4);
+ ND_TCHECK_4(buf);
x = EXTRACT_LE_U_4(buf);
if (x == 0 || x == 0xFFFFFFFF)
t = 0;
buf += 4;
break;
case 3:
- ND_TCHECK2(buf[0], 8);
+ ND_TCHECK_8(buf);
t = interpret_long_date(buf);
buf += 8;
break;