memset(&addr, 0, sizeof(addr));
plenbytes = (plen + 7) / 8;
- ND_TCHECK_LEN(pptr + 1, plenbytes);
ITEMCHECK(plenbytes);
- memcpy(&addr, pptr + 1, plenbytes);
+ GET_CPY_BYTES(&addr, pptr + 1, plenbytes);
if (plen % 8) {
((u_char *)&addr)[plenbytes - 1] &= ((0xff00 >> (plen % 8)) & 0xff);
}
snprintf(buf, buflen, "%s/%u", ipaddr_string(ndo, (const u_char *)&addr), plen);
return 1 + plenbytes;
-trunc:
- return -2;
-
badtlv:
- return -3;
+ return -2;
}
static int
memset(&addr, 0, sizeof(addr));
plenbytes = (plen + 7) / 8;
- ND_TCHECK_LEN(pptr + 4, plenbytes);
ITEMCHECK(plenbytes);
- memcpy(&addr, pptr + 4, plenbytes);
+ GET_CPY_BYTES(&addr, pptr + 4, plenbytes);
if (plen % 8) {
((u_char *)&addr)[plenbytes - 1] &= ((0xff00 >> (plen % 8)) & 0xff);
}
*/
memset(&route_target, 0, sizeof(route_target));
num_octets = (plen + 7) / 8;
- ND_TCHECK_LEN(pptr + 5, num_octets);
- memcpy(&route_target, pptr + 5, num_octets);
+ GET_CPY_BYTES(&route_target, pptr + 5, num_octets);
/* If mask-len is not on octet boundary, ensure all extra bits are 0 */
if (plen % 8) {
((u_char *)&route_target)[num_octets - 1] &=
bgp_rt_prefix_print(ndo, (u_char *)&route_target, plen));
return 5 + num_octets;
-trunc:
- return -2;
}
static int
return -1;
memset(&addr, 0, sizeof(addr));
- ND_TCHECK_LEN(pptr + 12, (plen + 7) / 8);
- memcpy(&addr, pptr + 12, (plen + 7) / 8);
+ GET_CPY_BYTES(&addr, pptr + 12, (plen + 7) / 8);
if (plen % 8) {
((u_char *)&addr)[(plen + 7) / 8 - 1] &=
((0xff00 >> (plen % 8)) & 0xff);
((GET_U_1(pptr + 3) & 1) == 0) ? "(BOGUS: Bottom of Stack NOT set!)" : "(bottom)" );
return 12 + (plen + 7) / 8;
-
-trunc:
- return -2;
}
/*
memset(&addr, 0, sizeof(addr));
plenbytes = (plen + 7) / 8;
- ND_TCHECK_LEN(pd + 1, plenbytes);
ITEMCHECK(plenbytes);
- memcpy(&addr, pd + 1, plenbytes);
+ GET_CPY_BYTES(&addr, pd + 1, plenbytes);
if (plen % 8) {
addr[plenbytes - 1] &=
((0xff00 >> (plen % 8)) & 0xff);
snprintf(buf, buflen, "%s/%u", ip6addr_string(ndo, (const u_char *)&addr), plen);
return 1 + plenbytes;
-trunc:
- return -2;
-
badtlv:
- return -3;
+ return -2;
}
static int
memset(&addr, 0, sizeof(addr));
plenbytes = (plen + 7) / 8;
- ND_TCHECK_LEN(pptr + 4, plenbytes);
- memcpy(&addr, pptr + 4, plenbytes);
+ GET_CPY_BYTES(&addr, pptr + 4, plenbytes);
if (plen % 8) {
addr[plenbytes - 1] &=
((0xff00 >> (plen % 8)) & 0xff);
return -1;
memset(&addr, 0, sizeof(addr));
- ND_TCHECK_LEN(pptr + 12, (plen + 7) / 8);
- memcpy(&addr, pptr + 12, (plen + 7) / 8);
+ GET_CPY_BYTES(&addr, pptr + 12, (plen + 7) / 8);
if (plen % 8) {
addr[(plen + 7) / 8 - 1] &=
((0xff00 >> (plen % 8)) & 0xff);
((GET_U_1(pptr + 3) & 1) == 0) ? "(BOGUS: Bottom of Stack NOT set!)" : "(bottom)" );
return 12 + (plen + 7) / 8;
-
-trunc:
- return -2;
}
static int
return -1;
memset(&addr, 0, sizeof(addr));
- ND_TCHECK_LEN(pptr + 4, (plen + 7) / 8);
- memcpy(&addr, pptr + 4, (plen + 7) / 8);
+ GET_CPY_BYTES(&addr, pptr + 4, (plen + 7) / 8);
if (plen % 8) {
addr[(plen + 7) / 8 - 1] &=
((0xff00 >> (plen % 8)) & 0xff);
plen);
return 1 + (plen + 7) / 8;
-
-trunc:
- return -2;
}
static int
return -1;
memset(&addr, 0, sizeof(addr));
- ND_TCHECK_LEN(pptr + 12, (plen + 7) / 8);
- memcpy(&addr, pptr + 12, (plen + 7) / 8);
+ GET_CPY_BYTES(&addr, pptr + 12, (plen + 7) / 8);
if (plen % 8) {
addr[(plen + 7) / 8 - 1] &= ((0xff00 >> (plen % 8)) & 0xff);
}
((GET_U_1(pptr + 3) & 1) == 0) ? "(BOGUS: Bottom of Stack NOT set!)" : "(bottom)" );
return 12 + (plen + 7) / 8;
-
-trunc:
- return -2;
}
/*
if (advance == -1)
ND_PRINT("\n\t (illegal prefix length)");
else if (advance == -2)
- goto trunc;
- else if (advance == -3)
break; /* bytes left, but not enough */
else
ND_PRINT("\n\t %s", buf);
advance = decode_labeled_vpn_prefix4(ndo, tptr, buf, buflen);
if (advance == -1)
ND_PRINT("\n\t (illegal prefix length)");
- else if (advance == -2)
- goto trunc;
else
ND_PRINT("\n\t %s", buf);
break;
case (AFNUM_INET<<8 | SAFNUM_RT_ROUTING_INFO):
advance = decode_rt_routing_info(ndo, tptr);
- if (advance == -2)
- goto trunc;
break;
case (AFNUM_INET<<8 | SAFNUM_MULTICAST_VPN): /* fall through */
case (AFNUM_INET6<<8 | SAFNUM_MULTICAST_VPN):
if (advance == -1)
ND_PRINT("\n\t (illegal prefix length)");
else if (advance == -2)
- goto trunc;
- else if (advance == -3)
break; /* bytes left, but not enough */
else
ND_PRINT("\n\t %s", buf);
advance = decode_labeled_vpn_prefix6(ndo, tptr, buf, buflen);
if (advance == -1)
ND_PRINT("\n\t (illegal prefix length)");
- else if (advance == -2)
- goto trunc;
else
ND_PRINT("\n\t %s", buf);
break;
advance = decode_clnp_prefix(ndo, tptr, buf, buflen);
if (advance == -1)
ND_PRINT("\n\t (illegal prefix length)");
- else if (advance == -2)
- goto trunc;
else
ND_PRINT("\n\t %s", buf);
break;
advance = decode_labeled_vpn_clnp_prefix(ndo, tptr, buf, buflen);
if (advance == -1)
ND_PRINT("\n\t (illegal prefix length)");
- else if (advance == -2)
- goto trunc;
else
ND_PRINT("\n\t %s", buf);
break;
ND_PRINT("\n\t (illegal prefix length)");
break;
} else if (wpfx == -2)
- goto trunc;
- else if (wpfx == -3)
goto trunc; /* bytes left, but not enough */
else {
ND_PRINT("\n\t %s", buf);
ND_PRINT("\n\t (illegal prefix length)");
break;
} else if (i == -2)
- goto trunc;
- else if (i == -3)
goto trunc; /* bytes left, but not enough */
else {
ND_PRINT("\n\t %s", buf);