* IS-IS: ISO 10589
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#include "netdissect-stdinc.h"
{ ESIS_OPTION_SECURITY, "Security" },
{ ESIS_OPTION_ES_CONF_TIME, "ES Configuration Time" },
{ ESIS_OPTION_PRIORITY, "Priority" },
- { ESIS_OPTION_ADDRESS_MASK, "Addressk Mask" },
+ { ESIS_OPTION_ADDRESS_MASK, "Address Mask" },
{ ESIS_OPTION_SNPA_MASK, "SNPA Mask" },
{ 0, NULL }
};
#define ISIS_PTP_ADJ_INIT 1
#define ISIS_PTP_ADJ_DOWN 2
-static const struct tok isis_ptp_adjancey_values[] = {
+static const struct tok isis_ptp_adjacency_values[] = {
{ ISIS_PTP_ADJ_UP, "Up" },
{ ISIS_PTP_ADJ_INIT, "Initializing" },
{ ISIS_PTP_ADJ_DOWN, "Down" },
ND_PRINT(", bad opts/li");
return (0);
}
- ND_TCHECK_2(pptr);
op = GET_U_1(pptr);
opli = GET_U_1(pptr + 1);
pptr += 2;
}
if (source_address_length > 0) {
source_address=(tptr+1);
- ND_TCHECK_LEN(source_address,
- source_address_length);
ND_PRINT("\n\t NSAP address (length %u): %s",
source_address_length,
GET_ISONSAP_STRING(source_address, source_address_length));
default:
/* dump the PDU specific data */
- if (length > ND_BYTES_BETWEEN(pptr, optr)) {
+ if (length > ND_BYTES_BETWEEN(optr, pptr)) {
ND_PRINT("\n\t undecoded non-header data, length %u", length-li);
- print_unknown_data(ndo, pptr, "\n\t ", length - ND_BYTES_BETWEEN(pptr, optr));
+ print_unknown_data(ndo, pptr, "\n\t ",
+ length - ND_BYTES_BETWEEN(optr, pptr));
}
}
pptr += netal;
li -= netal;
- if (snpal == 6)
+ if (snpal == MAC_ADDR_LEN)
ND_PRINT("\n\t SNPA (length: %u): %s",
snpal,
GET_ETHERADDR_STRING(snpa));
ND_PRINT(", bad opts/li");
return;
}
- ND_TCHECK_2(pptr);
op = GET_U_1(pptr);
opli = GET_U_1(pptr + 1);
pptr += 2;
ND_TCHECK_SIZE(mcid);
ND_PRINT("ID: %u, Name: ", GET_U_1(mcid->format_id));
- if (nd_printzp(ndo, mcid->name, 32, ndo->ndo_snapend))
- goto trunc;
+ nd_printjnp(ndo, mcid->name, sizeof(mcid->name));
ND_PRINT("\n\t Lvl: %u", GET_BE_U_2(mcid->revision_lvl));
const struct isis_subtlv_spb_mcid *subtlv_spb_mcid;
int i;
- while (len > 2)
- {
- ND_TCHECK_2(tptr);
+ while (len > 2) {
stlv_type = GET_U_1(tptr);
stlv_len = GET_U_1(tptr + 1);
/* Make sure the entire subTLV is in the captured data */
ND_TCHECK_LEN(tptr, stlv_len);
- switch (stlv_type)
- {
+ switch (stlv_type) {
case ISIS_SUBTLV_SPB_MCID:
{
if (stlv_len < ISIS_SUBTLV_SPB_MCID_MIN_LEN)
ND_PRINT("\n\t Digest: ");
- for(i=1;i<=8; i++)
- {
+ for(i=1;i<=8; i++) {
ND_PRINT("%08x ", GET_BE_U_4(tptr));
if (i%4 == 0 && i != 8)
ND_PRINT("\n\t ");
case ISIS_SUBTLV_SPB_BVID:
{
- while (stlv_len != 0)
- {
+ while (stlv_len != 0) {
if (stlv_len < 4)
goto subtlv_too_short;
ND_PRINT("\n\t ECT: %08x",
{
u_int stlv_type, stlv_len, treecount;
- while (len > 2)
- {
- ND_TCHECK_2(tptr);
+ while (len > 2) {
stlv_type = GET_U_1(tptr);
stlv_len = GET_U_1(tptr + 1);
tptr += 2;
/* Make sure the entire subTLV is in the captured data */
ND_TCHECK_LEN(tptr, stlv_len);
- switch (stlv_type)
- {
+ switch (stlv_type) {
case ISIS_SUBTLV_SPB_INSTANCE:
if (stlv_len < ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN)
goto subtlv_too_short;
len -= ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN;
stlv_len -= ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN;
- while (treecount)
- {
+ while (treecount) {
if (stlv_len < ISIS_SUBTLV_SPB_INSTANCE_VLAN_TUPLE_LEN)
goto trunc;
{
if (tlv_remaining < 2)
goto trunc;
- ND_TCHECK_2(tptr);
ND_PRINT("%s%s",
ident,
}
processed++;
} else if (afi == AF_INET6) {
- ND_TCHECK_2(tptr);
status_byte=GET_U_1(tptr);
bit_length=GET_U_1(tptr + 1);
if (bit_length > 128) {
byte_length = (bit_length + 7) / 8; /* prefix has variable length encoding */
- ND_TCHECK_LEN(tptr, byte_length);
memset(prefix, 0, sizeof(prefix)); /* clear the copy buffer */
- memcpy(prefix,tptr,byte_length); /* copy as much as is stored in the TLV */
+ GET_CPY_BYTES(prefix,tptr,byte_length); /* copy as much as is stored in the TLV */
tptr+=byte_length;
processed+=byte_length;
ND_PRINT(" (%u)", sublen); /* print out subTLV length */
while (sublen>0) {
- ND_TCHECK_2(tptr);
subtlvtype=GET_U_1(tptr);
subtlvlen=GET_U_1(tptr + 1);
tptr+=2;
}
}
return (processed);
-trunc:
- return 0;
}
static void
uint8_t subt, subl;
while (tlen >= 2) {
- ND_TCHECK_LEN(tptr, 2);
subt = GET_U_1(tptr);
subl = GET_U_1(tptr+1);
tlen -= 2;
tlen--;
if (tlen < alen)
goto tlv_trunc;
- ND_TCHECK_LEN(tptr, alen);
ND_PRINT("\n\t Area address (length: %u): %s",
alen,
GET_ISONSAP_STRING(tptr, alen));
while (tlen != 0) {
if (tlen < sizeof(nd_ipv6))
goto tlv_trunc;
- ND_TCHECK_LEN(tptr, sizeof(nd_ipv6));
-
ND_PRINT("\n\t IPv6 interface address: %s",
GET_IP6ADDR_STRING(tptr));
switch (auth_type) {
case ISIS_SUBTLV_AUTH_SIMPLE:
- if (nd_printzp(ndo, tptr, tlen, ndo->ndo_snapend))
- goto trunc;
+ nd_printjnp(ndo, tptr, tlen);
break;
case ISIS_SUBTLV_AUTH_MD5:
for(i=0;i<tlen;i++) {
tlv_ptp_adj = (const struct isis_tlv_ptp_adj *)tptr;
if(tlen>=1) {
ND_PRINT("\n\t Adjacency State: %s (%u)",
- tok2str(isis_ptp_adjancey_values, "unknown", GET_U_1(tptr)),
+ tok2str(isis_ptp_adjacency_values, "unknown", GET_U_1(tptr)),
GET_U_1(tptr));
tlen--;
}
{
if (tlen < 2)
goto tlv_trunc;
- ND_TCHECK_2(tptr);
ND_PRINT("\n\t RES: %u, MTID(s): %u",
(GET_BE_U_2(tptr) >> 12),
case ISIS_TLV_TE_ROUTER_ID:
if (tlen < sizeof(nd_ipv4))
goto tlv_trunc;
- ND_TCHECK_LEN(pptr, sizeof(nd_ipv4));
ND_PRINT("\n\t Traffic Engineering Router ID: %s", GET_IPADDR_STRING(pptr));
break;
while (tlen != 0) {
if (tlen < sizeof(nd_ipv4))
goto tlv_trunc;
- ND_TCHECK_LEN(tptr, sizeof(nd_ipv4));
ND_PRINT("\n\t IPv4 interface address: %s", GET_IPADDR_STRING(tptr));
tptr += sizeof(nd_ipv4);
tlen -= sizeof(nd_ipv4);
case ISIS_TLV_HOSTNAME:
ND_PRINT("\n\t Hostname: ");
- if (nd_printzp(ndo, tptr, tlen, ndo->ndo_snapend))
- goto trunc;
+ nd_printjnp(ndo, tptr, tlen);
break;
case ISIS_TLV_SHARED_RISK_GROUP:
if (tlen < sizeof(nd_ipv4))
break;
- ND_TCHECK_LEN(tptr, sizeof(nd_ipv4));
ND_PRINT("\n\t IPv4 interface address: %s", GET_IPADDR_STRING(tptr));
tptr+=sizeof(nd_ipv4);
tlen-=sizeof(nd_ipv4);
if (tlen < sizeof(nd_ipv4))
break;
- ND_TCHECK_LEN(tptr, sizeof(nd_ipv4));
ND_PRINT("\n\t IPv4 neighbor address: %s", GET_IPADDR_STRING(tptr));
tptr+=sizeof(nd_ipv4);
tlen-=sizeof(nd_ipv4);
}
if (tlen < prefix_len/2)
break;
- ND_TCHECK_LEN(tptr, prefix_len / 2);
ND_PRINT("\n\t\tAddress: %s/%u",
GET_ISONSAP_STRING(tptr, prefix_len / 2), prefix_len * 4);
tptr+=prefix_len/2;
nd_print_invalid(ndo);
break;
}
- ND_TCHECK_5(tptr); /* router-id + flags */
ND_PRINT("\n\t Router-ID %s", GET_IPADDR_STRING(tptr));
ND_PRINT(", Flags [%s]",
bittok2str(isis_tlv_router_capability_flags, "none", GET_U_1(tptr+4)));