{
uint32_t call_ref;
- ND_TCHECK(p[PROTO_POS]);
+ ND_TCHECK_1(p + PROTO_POS);
if (EXTRACT_U_1(p + PROTO_POS) == Q2931) {
/*
* protocol:Q.2931 for User to Network Interface
* (UNI 3.1) signalling
*/
ND_PRINT((ndo, "Q.2931"));
- ND_TCHECK(p[MSG_TYPE_POS]);
+ ND_TCHECK_1(p + MSG_TYPE_POS);
ND_PRINT((ndo, ":%s ",
tok2str(msgtype2str, "msgtype#%d", EXTRACT_U_1(p + MSG_TYPE_POS))));
struct in_addr addr;
u_int plen, plenbytes;
- ND_TCHECK(pptr[0]);
+ ND_TCHECK_1(pptr);
ITEMCHECK(1);
plen = pptr[0];
if (32 < plen)
char asbuf[sizeof(astostr)]; /* bgp_vpn_rd_print() overwrites astostr */
/* NLRI "prefix length" from RFC 2858 Section 4. */
- ND_TCHECK(pptr[0]);
+ ND_TCHECK_1(pptr);
plen = pptr[0]; /* get prefix length */
/* NLRI "prefix" (ibid), valid lengths are { 0, 32, 33, ..., 96 } bits.
struct in_addr addr;
u_int plen;
- ND_TCHECK(pptr[0]);
+ ND_TCHECK_1(pptr);
plen = pptr[0]; /* get prefix length */
if ((24+64) > plen)
const u_char *rd;
const u_char *vpn_ip;
- ND_TCHECK(pptr[0]);
+ ND_TCHECK_1(pptr);
/* if the NLRI is not predefined length, quit.*/
if (EXTRACT_U_1(pptr) != MDT_VPN_NLRI_LEN * 8)
}
ttlv_len=ttlv_len/8+1; /* how many bytes do we need to read ? */
while (ttlv_len>0) {
- ND_TCHECK(pptr[0]);
+ ND_TCHECK_1(pptr);
if (buflen!=0) {
stringlen=snprintf(buf,buflen, "%02x",
EXTRACT_U_1(pptr));
struct in6_addr addr;
u_int plen, plenbytes;
- ND_TCHECK(pd[0]);
+ ND_TCHECK_1(pd);
ITEMCHECK(1);
plen = pd[0];
if (128 < plen)
struct in6_addr addr;
u_int plen;
- ND_TCHECK(pptr[0]);
+ ND_TCHECK_1(pptr);
plen = pptr[0]; /* get prefix length */
if ((24+64) > plen)
uint8_t addr[19];
u_int plen;
- ND_TCHECK(pptr[0]);
+ ND_TCHECK_1(pptr);
plen = pptr[0]; /* get prefix length */
if (152 < plen)
uint8_t addr[19];
u_int plen;
- ND_TCHECK(pptr[0]);
+ ND_TCHECK_1(pptr);
plen = pptr[0]; /* get prefix length */
if ((24+64) > plen)
* each.
*/
while (tptr < pptr + len) {
- ND_TCHECK(tptr[0]);
+ ND_TCHECK_1(tptr);
/*
* If we do not find a valid segment type, our guess might be wrong.
if (EXTRACT_U_1(tptr) < BGP_AS_SEG_TYPE_MIN || EXTRACT_U_1(tptr) > BGP_AS_SEG_TYPE_MAX) {
goto trunc;
}
- ND_TCHECK(tptr[1]);
+ ND_TCHECK_1(tptr + 1);
tptr += 2 + tptr[1] * 2;
}
as_size = bgp_attr_get_as_size(ndo, atype, pptr, len);
while (tptr < pptr + len) {
- ND_TCHECK(tptr[0]);
+ ND_TCHECK_1(tptr);
ND_PRINT((ndo, "%s", tok2str(bgp_as_path_segment_open_values,
"?", EXTRACT_U_1(tptr))));
- ND_TCHECK(tptr[1]);
+ ND_TCHECK_1(tptr + 1);
for (i = 0; i < tptr[1] * as_size; i += as_size) {
ND_TCHECK2(tptr[2 + i], as_size);
ND_PRINT((ndo, "%s ",
EXTRACT_BE_U_2(tptr + i + 2) :
EXTRACT_BE_U_4(tptr + i + 2))));
}
- ND_TCHECK(tptr[0]);
+ ND_TCHECK_1(tptr);
ND_PRINT((ndo, "%s", tok2str(bgp_as_path_segment_close_values,
"?", EXTRACT_U_1(tptr))));
- ND_TCHECK(tptr[1]);
+ ND_TCHECK_1(tptr + 1);
tptr += 2 + tptr[1] * as_size;
}
break;
tptr +=3;
- ND_TCHECK(tptr[0]);
+ ND_TCHECK_1(tptr);
nhlen = tptr[0];
tlen = nhlen;
tptr++;
ND_PRINT((ndo, ", nh-length: %u", nhlen));
tptr += tlen;
- ND_TCHECK(tptr[0]);
+ ND_TCHECK_1(tptr);
snpa = tptr[0];
tptr++;
if (snpa) {
ND_PRINT((ndo, "\n\t %u SNPA", snpa));
for (/*nothing*/; snpa > 0; snpa--) {
- ND_TCHECK(tptr[0]);
+ ND_TCHECK_1(tptr);
ND_PRINT((ndo, "\n\t %d bytes", EXTRACT_U_1(tptr)));
tptr += tptr[0] + 1;
}
int version, type;
const char *type_s;
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
version = (bp[0] & 0xf0) >> 4;
type = bp[0] & 0x0f;
if (type == 1)
ND_PRINT((ndo, "[ttl=%d!] ", ttl));
if (version != 2 || type != 1)
return;
- ND_TCHECK(bp[2]);
- ND_TCHECK(bp[5]);
+ ND_TCHECK_1(bp + 2);
+ ND_TCHECK_1(bp + 5);
ND_PRINT((ndo, "vhid=%d advbase=%d advskew=%d authlen=%d ",
EXTRACT_U_1(bp + 1), EXTRACT_U_1(bp + 5), EXTRACT_U_1(bp + 2), EXTRACT_U_1(bp + 3)));
if (ndo->ndo_vflag) {
ND_PRINT((ndo," [gaddr %s", ip6addr_string(ndo, bp + 8)));
if (ndo->ndo_vflag) {
- ND_TCHECK(bp[25]);
+ ND_TCHECK_1(bp + 25);
if (EXTRACT_U_1(bp + 24) & 0x08) {
ND_PRINT((ndo," sflag"));
}
ND_PRINT((ndo,", "));
ND_PRINT((ndo,"DNS name"));
cp = (const u_char *)(ni6 + 1) + 4;
- ND_TCHECK(cp[0]);
+ ND_TCHECK_1(cp);
if (EXTRACT_U_1(cp) == ep - cp - 1) {
/* icmp-name-lookup-03, pascal string */
if (ndo->ndo_vflag)
}
if ((length + 1) & 3)
ND_PRINT((ndo, " [bad length %u]", length));
- ND_TCHECK(cp[2]);
+ ND_TCHECK_1(cp + 2);
ptr = cp[2] - 1;
if (ptr < 3 || ((ptr + 1) & 3) || ptr > length + 1)
ND_PRINT((ndo, " [bad ptr %u]", EXTRACT_U_1(cp + 2)));
else if (tt == IPOPT_NOP)
len = 1;
else {
- ND_TCHECK(cp[1]);
+ ND_TCHECK_1(cp + 1);
len = cp[1];
if (len < 2)
break;
hoplen = ((cp[3]&0xF) != IPOPT_TS_TSONLY) ? 8 : 4;
if ((length - 4) & (hoplen-1))
ND_PRINT((ndo, "[bad length %u]", length));
- ND_TCHECK(cp[2]);
+ ND_TCHECK_1(cp + 2);
ptr = cp[2] - 1;
len = 0;
if (ptr < 4 || ((ptr - 4) & (hoplen-1)) || ptr > length + 1)
ND_PRINT((ndo, "[bad ptr %u]", EXTRACT_U_1(cp + 2)));
- ND_TCHECK(cp[3]);
+ ND_TCHECK_1(cp + 3);
switch (EXTRACT_U_1(cp + 3)&0xF) {
case IPOPT_TS_TSONLY:
ND_PRINT((ndo, "TSONLY"));
option_len = 1;
else {
- ND_TCHECK(cp[1]);
+ ND_TCHECK_1(cp + 1);
option_len = cp[1];
if (option_len < 2) {
ND_PRINT((ndo, " [bad length %u]", option_len));
ND_PRINT((ndo, " [bad length %u]", option_len));
break;
}
- ND_TCHECK(cp[3]);
+ ND_TCHECK_1(cp + 3);
if (EXTRACT_BE_U_2(cp + 2) != 0)
ND_PRINT((ndo, " value %u", EXTRACT_BE_U_2(cp + 2)));
break;
int totlen;
uint32_t t, v;
- ND_TCHECK(p[0]);
+ ND_TCHECK_1(p);
if (EXTRACT_U_1(p) & 0x80)
totlen = 4;
else {
int totlen;
uint32_t t;
- ND_TCHECK(p[0]);
+ ND_TCHECK_1(p);
if (EXTRACT_U_1(p) & 0x80)
totlen = 4;
else {
const u_char *bp, u_int length,
const u_char *bp2)
{
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
if(length == 1 && EXTRACT_U_1(bp)==0xff) {
ND_PRINT((ndo, "isakmp-nat-keep-alive"));
return;
if(length < 4) {
goto trunc;
}
- ND_TCHECK(bp[3]);
+ ND_TCHECK_1(bp + 3);
/*
* see if this is an IKE packet
l2info->caplen -= l2info->header_len;
/* search through the cookie table and copy values matching for our PIC type */
- ND_TCHECK(p[0]);
+ ND_TCHECK_1(p);
while (lp->s != NULL) {
if (lp->pictype == l2info->pictype) {
unsigned i, optlen;
for (i = 0; i < len; i += optlen) {
- ND_TCHECK(bp[i]);
+ ND_TCHECK_1(bp + i);
if (EXTRACT_U_1(bp + i) == IP6MOPT_PAD1)
optlen = 1;
else {
if (i + 1 < len) {
- ND_TCHECK(bp[i + 1]);
+ ND_TCHECK_1(bp + i + 1);
optlen = bp[i + 1] + 2;
}
else
}
if (i + optlen > len)
goto trunc;
- ND_TCHECK(bp[i + optlen]);
+ ND_TCHECK_1(bp + i + optlen);
switch (EXTRACT_U_1(bp + i)) {
case IP6MOPT_PAD1:
{
register u_char type;
- ND_TCHECK(bp[1]);
+ ND_TCHECK_1(bp + 1);
type = bp[1];
ND_PRINT((ndo, " %s", tok2str(pimv1_type_str, "[type %u]", type)));
}
break;
}
- ND_TCHECK(bp[4]);
+ ND_TCHECK_1(bp + 4);
if ((EXTRACT_U_1(bp + 4) >> 4) != 1)
ND_PRINT((ndo, " [v%d]", EXTRACT_U_1(bp + 4) >> 4));
return;
if (len < 8)
goto trunc;
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
ND_PRINT((ndo, " auto-rp "));
type = bp[0];
switch (type) {
break;
}
- ND_TCHECK(bp[1]);
+ ND_TCHECK_1(bp + 1);
numrps = bp[1];
ND_TCHECK_2(bp + 2);
len -= 4;
if (len < 1)
goto trunc;
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
switch (EXTRACT_U_1(bp) & 0x3) {
case 0: ND_PRINT((ndo, " PIMv?"));
break;
len -= 1;
if (len < 1)
goto trunc;
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
nentries = bp[0];
bp += 1;
len -= 1;
if (addr_len == 0) {
if (len < 2)
goto trunc;
- ND_TCHECK(bp[1]);
+ ND_TCHECK_1(bp + 1);
switch (EXTRACT_U_1(bp)) {
case 1:
af = AF_INET;
len -= 2;
if (len < 1)
goto trunc;
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
ND_PRINT((ndo, " hashmlen=%d", EXTRACT_U_1(bp)));
if (len < 2)
goto trunc;
- ND_TCHECK(bp[2]);
+ ND_TCHECK_1(bp + 2);
ND_PRINT((ndo, " BSRprio=%d", EXTRACT_U_1(bp + 1)));
bp += 2;
len -= 2;
/* RP-Count, Frag RP-Cnt, and rsvd */
if (len < 1)
goto trunc;
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
ND_PRINT((ndo, " RPcnt=%d", EXTRACT_U_1(bp)));
if (len < 2)
goto trunc;
- ND_TCHECK(bp[1]);
+ ND_TCHECK_1(bp + 1);
ND_PRINT((ndo, " FRPcnt=%d", frpcnt = EXTRACT_U_1(bp + 1)));
if (len < 4)
goto trunc;
EXTRACT_BE_U_2(bp));
if (len < 3)
goto trunc;
- ND_TCHECK(bp[2]);
+ ND_TCHECK_1(bp + 2);
ND_PRINT((ndo, ",prio=%d", EXTRACT_U_1(bp + 2)));
if (len < 4)
goto trunc;
/* Prefix-Cnt, Priority, and Holdtime */
if (len < 1)
goto trunc;
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
ND_PRINT((ndo, " prefix-cnt=%d", EXTRACT_U_1(bp)));
pfxcnt = bp[0];
if (len < 2)
goto trunc;
- ND_TCHECK(bp[1]);
+ ND_TCHECK_1(bp + 1);
ND_PRINT((ndo, " prio=%d", EXTRACT_U_1(bp + 1)));
if (len < 4)
goto trunc;
const char *f1 = NULL, *f2 = NULL;
int pcnt, dcnt;
- ND_TCHECK(words[0]);
+ ND_TCHECK_1(words);
if (request) {
ND_TCHECK_2(w + (14 * 2));
pcnt = EXTRACT_LE_U_2(w + 9 * 2);
const u_char *maxbuf = data + datalen;
int command;
- ND_TCHECK(data[0]);
+ ND_TCHECK_1(data);
command = data[0];
smb_fdata(ndo, param, "BROWSE PACKET\n|Param ", param+paramlen, unicodestr);
u_int wct, bcc;
const char *f1 = NULL, *f2 = NULL;
- ND_TCHECK(words[0]);
+ ND_TCHECK_1(words);
wct = words[0];
if (request)
f2 = "*|Dialect=[Y]\n";
u_int wct, bcc;
const char *f1 = NULL, *f2 = NULL;
- ND_TCHECK(words[0]);
+ ND_TCHECK_1(words);
wct = words[0];
if (request) {
if (wct == 10)
const u_char *maxwords;
const char *f1 = NULL, *f2 = NULL;
- ND_TCHECK(words[0]);
+ ND_TCHECK_1(words);
wct = words[0];
if (request) {
f1 = "Com2=[w]\nOff2=[d]\nHandle=[d]\nLockType=[w]\nTimeOut=[D]\nUnlockCount=[d]\nLockCount=[d]\n";
- ND_TCHECK(words[7]);
+ ND_TCHECK_1(words + 7);
if (EXTRACT_U_1(words + 7) & 0x10)
f2 = "*Process=[d]\n[P2]Offset=[M]\nLength=[M]\n";
else
"[P4]SMB Command = [B]\nError class = [BP1]\nError code = [d]\nFlags1 = [B]\nFlags2 = [B][P13]\nTree ID = [d]\nProc ID = [d]\nUID = [d]\nMID = [d]\nWord Count = [b]\n";
int smboffset;
- ND_TCHECK(buf[9]);
+ ND_TCHECK_1(buf + 9);
request = (buf[9] & 0x80) ? 0 : 1;
startbuf = buf;
int newsmboffset;
words = buf + smboffset;
- ND_TCHECK(words[0]);
+ ND_TCHECK_1(words);
wct = words[0];
data = words + 1 + wct * 2;
maxwords = min(data, maxbuf);
break;
if (wct == 0)
break;
- ND_TCHECK(words[1]);
+ ND_TCHECK_1(words + 1);
command = words[1];
if (command == 0xFF)
break;
if (maxbuf > ndo->ndo_snapend)
maxbuf = ndo->ndo_snapend;
- ND_TCHECK(data[4]);
+ ND_TCHECK_1(data + 4);
len = EXTRACT_LE_U_2(data);
command = data[4];
data2 = data + len;
ND_PRINT((ndo, "\n\tCIST bridge-id %s, ",
stp_print_bridge_id(ptr + MST_BPDU_CIST_BRIDGE_ID_OFFSET)));
- ND_TCHECK(ptr[MST_BPDU_CIST_REMAIN_HOPS_OFFSET]);
+ ND_TCHECK_1(ptr + MST_BPDU_CIST_REMAIN_HOPS_OFFSET);
ND_PRINT((ndo, "CIST remaining-hops %d", EXTRACT_U_1(ptr + MST_BPDU_CIST_REMAIN_HOPS_OFFSET)));
/* Dump all MSTI's */
int version, type, auth_type = VRRP_AUTH_NONE; /* keep compiler happy */
const char *type_s;
- ND_TCHECK(bp[0]);
+ ND_TCHECK_1(bp);
version = (bp[0] & 0xf0) >> 4;
type = bp[0] & 0x0f;
type_s = tok2str(type2str, "unknown type (%u)", type);
ND_PRINT((ndo, ", (ttl %u)", ttl));
if (version < 2 || version > 3 || type != VRRP_TYPE_ADVERTISEMENT)
return;
- ND_TCHECK(bp[2]);
+ ND_TCHECK_1(bp + 2);
ND_PRINT((ndo, ", vrid %u, prio %u", EXTRACT_U_1(bp + 1), EXTRACT_U_1(bp + 2)));
- ND_TCHECK(bp[5]);
+ ND_TCHECK_1(bp + 5);
if (version == 2) {
auth_type = bp[4];
c = ' ';
bp += 8;
for (i = 0; i < naddrs; i++) {
- ND_TCHECK(bp[3]);
+ ND_TCHECK_1(bp + 3);
ND_PRINT((ndo, "%c%s", c, ipaddr_string(ndo, bp)));
c = ',';
bp += 4;
}
if (version == 2 && auth_type == VRRP_AUTH_SIMPLE) { /* simple text password */
- ND_TCHECK(bp[7]);
+ ND_TCHECK_1(bp + 7);
ND_PRINT((ndo, " auth \""));
if (fn_printn(ndo, bp, 8, ndo->ndo_snapend)) {
ND_PRINT((ndo, "\""));
return;
ND_PRINT((ndo, "[%03X] ", i));
for (i = 0; i < len; /*nothing*/) {
- ND_TCHECK(buf[i]);
+ ND_TCHECK_1(buf + i);
ND_PRINT((ndo, "%02X ", EXTRACT_U_1(buf + i) & 0xff));
i++;
if (i%8 == 0)
* Skip padding that puts the string on an even boundary.
*/
if (((s - startbuf) % 2) != 0) {
- ND_TCHECK(s[0]);
+ ND_TCHECK_1(s);
s++;
}
}
sp = s;
if (!use_unicode) {
for (;;) {
- ND_TCHECK(sp[0]);
+ ND_TCHECK_1(sp);
*len += 1;
if (EXTRACT_U_1(sp) == 0)
break;
}
if (!use_unicode) {
while (strsize != 0) {
- ND_TCHECK(s[0]);
+ ND_TCHECK_1(s);
if (l >= MAX_UNISTR_SIZE)
break;
if (ND_ISPRINT(EXTRACT_U_1(s)))
while (*fmt && buf<maxbuf) {
switch (*fmt) {
case 'a':
- ND_TCHECK(buf[0]);
+ ND_TCHECK_1(buf);
write_bits(ndo, EXTRACT_U_1(buf), attrib_fmt);
buf++;
fmt++;
strncpy(bitfmt, fmt, l);
bitfmt[l] = '\0';
fmt = p + 1;
- ND_TCHECK(buf[0]);
+ ND_TCHECK_1(buf);
write_bits(ndo, EXTRACT_U_1(buf), bitfmt);
buf++;
break;
case 'b':
{
unsigned int x;
- ND_TCHECK(buf[0]);
+ ND_TCHECK_1(buf);
x = buf[0];
ND_PRINT((ndo, "%u (0x%x)", x, x));
buf += 1;
case 'B':
{
unsigned int x;
- ND_TCHECK(buf[0]);
+ ND_TCHECK_1(buf);
x = buf[0];
ND_PRINT((ndo, "0x%X", x));
buf += 1;
switch (*fmt) {
case 'b':
- ND_TCHECK(buf[0]);
+ ND_TCHECK_1(buf);
stringlen = buf[0];
ND_PRINT((ndo, "%u", stringlen));
buf += 1;
name_type_str(name_type)));
break;
case 2:
- ND_TCHECK(buf[15]);
+ ND_TCHECK_1(buf + 15);
name_type = buf[15];
ND_PRINT((ndo, "%-15.15s NameType=0x%02X (%s)", buf, name_type,
name_type_str(name_type)));