* complete IS-IS & CLNP support.
*/
-#ifndef lint
-static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-isoclns.c,v 1.165 2008-08-16 13:38:15 hannes Exp $ (LBL)";
-#endif
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#define ISIS_PDU_L1_PSNP 26
#define ISIS_PDU_L2_PSNP 27
-static struct tok isis_pdu_values[] = {
+static const struct tok isis_pdu_values[] = {
{ ISIS_PDU_L1_LAN_IIH, "L1 Lan IIH"},
{ ISIS_PDU_L2_LAN_IIH, "L2 Lan IIH"},
{ ISIS_PDU_PTP_IIH, "p2p IIH"},
#define ISIS_TLV_VENDOR_PRIVATE 250 /* draft-ietf-isis-experimental-tlv-01 */
#define ISIS_TLV_VENDOR_PRIVATE_MINLEN 3
-static struct tok isis_tlv_values[] = {
+static const struct tok isis_tlv_values[] = {
{ ISIS_TLV_AREA_ADDR, "Area address(es)"},
{ ISIS_TLV_IS_REACH, "IS Reachability"},
{ ISIS_TLV_ESNEIGH, "ES Neighbor(s)"},
#define ESIS_OPTION_ADDRESS_MASK 225 /* iso9542 */
#define ESIS_OPTION_SNPA_MASK 226 /* iso9542 */
-static struct tok esis_option_values[] = {
+static const struct tok esis_option_values[] = {
{ ESIS_OPTION_PROTOCOLS, "Protocols supported"},
{ ESIS_OPTION_QOS_MAINTENANCE, "QoS Maintenance" },
{ ESIS_OPTION_SECURITY, "Security" },
#define CLNP_OPTION_PADDING 204 /* iso8473 */
#define CLNP_OPTION_PRIORITY 205 /* iso8473 */
-static struct tok clnp_option_values[] = {
+static const struct tok clnp_option_values[] = {
{ CLNP_OPTION_DISCARD_REASON, "Discard Reason"},
{ CLNP_OPTION_PRIORITY, "Priority"},
{ CLNP_OPTION_QOS_MAINTENANCE, "QoS Maintenance"},
{ 0, NULL }
};
-static struct tok clnp_option_rfd_class_values[] = {
+static const struct tok clnp_option_rfd_class_values[] = {
{ 0x0, "General"},
{ 0x8, "Address"},
{ 0x9, "Source Routeing"},
{ 0, NULL }
};
-static struct tok clnp_option_rfd_general_values[] = {
+static const struct tok clnp_option_rfd_general_values[] = {
{ 0x0, "Reason not specified"},
{ 0x1, "Protocol procedure error"},
{ 0x2, "Incorrect checksum"},
{ 0, NULL }
};
-static struct tok clnp_option_rfd_address_values[] = {
+static const struct tok clnp_option_rfd_address_values[] = {
{ 0x0, "Destination address unreachable"},
{ 0x1, "Destination address unknown"},
{ 0, NULL }
};
-static struct tok clnp_option_rfd_source_routeing_values[] = {
+static const struct tok clnp_option_rfd_source_routeing_values[] = {
{ 0x0, "Unspecified source routeing error"},
{ 0x1, "Syntax error in source routeing field"},
{ 0x2, "Unknown address in source routeing field"},
{ 0, NULL }
};
-static struct tok clnp_option_rfd_lifetime_values[] = {
+static const struct tok clnp_option_rfd_lifetime_values[] = {
{ 0x0, "Lifetime expired while data unit in transit"},
{ 0x1, "Lifetime expired during reassembly"},
{ 0, NULL }
};
-static struct tok clnp_option_rfd_pdu_discard_values[] = {
+static const struct tok clnp_option_rfd_pdu_discard_values[] = {
{ 0x0, "Unsupported option not specified"},
{ 0x1, "Unsupported protocol version"},
{ 0x2, "Unsupported security option"},
{ 0, NULL }
};
-static struct tok clnp_option_rfd_reassembly_values[] = {
+static const struct tok clnp_option_rfd_reassembly_values[] = {
{ 0x0, "Reassembly interference"},
{ 0, NULL }
};
/* array of 16 error-classes */
-static struct tok *clnp_option_rfd_error_class[] = {
+static const struct tok *clnp_option_rfd_error_class[] = {
clnp_option_rfd_general_values,
NULL,
NULL,
#define CLNP_OPTION_SCOPE_DA_SPEC 0x80
#define CLNP_OPTION_SCOPE_GLOBAL 0xc0
-static struct tok clnp_option_scope_values[] = {
+static const struct tok clnp_option_scope_values[] = {
{ CLNP_OPTION_SCOPE_SA_SPEC, "Source Address Specific"},
{ CLNP_OPTION_SCOPE_DA_SPEC, "Destination Address Specific"},
{ CLNP_OPTION_SCOPE_GLOBAL, "Globally unique"},
{ 0, NULL }
};
-static struct tok clnp_option_sr_rr_values[] = {
+static const struct tok clnp_option_sr_rr_values[] = {
{ 0x0, "partial"},
{ 0x1, "complete"},
{ 0, NULL }
};
-static struct tok clnp_option_sr_rr_string_values[] = {
+static const struct tok clnp_option_sr_rr_string_values[] = {
{ CLNP_OPTION_SOURCE_ROUTING, "source routing"},
{ CLNP_OPTION_ROUTE_RECORDING, "recording of route in progress"},
{ 0, NULL }
};
-static struct tok clnp_option_qos_global_values[] = {
+static const struct tok clnp_option_qos_global_values[] = {
{ 0x20, "reserved"},
{ 0x10, "sequencing vs. delay"},
{ 0x08, "congested"},
#define ISIS_SUBTLV_SPB_METRIC 29 /* rfc6329 */
-static struct tok isis_ext_is_reach_subtlv_values[] = {
+static const struct tok isis_ext_is_reach_subtlv_values[] = {
{ ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP, "Administrative groups" },
{ ISIS_SUBTLV_EXT_IS_REACH_LINK_LOCAL_REMOTE_ID, "Link Local/Remote Identifier" },
{ ISIS_SUBTLV_EXT_IS_REACH_LINK_REMOTE_ID, "Link Remote Identifier" },
#define ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG64 2 /* draft-ietf-isis-admin-tags-01 */
#define ISIS_SUBTLV_EXTD_IP_REACH_MGMT_PREFIX_COLOR 117 /* draft-ietf-isis-wg-multi-topology-05 */
-static struct tok isis_ext_ip_reach_subtlv_values[] = {
+static const struct tok isis_ext_ip_reach_subtlv_values[] = {
{ ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG32, "32-Bit Administrative tag" },
{ ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG64, "64-Bit Administrative tag" },
{ ISIS_SUBTLV_EXTD_IP_REACH_MGMT_PREFIX_COLOR, "Management Prefix Color" },
{ 0, NULL }
};
-static struct tok isis_subtlv_link_attribute_values[] = {
+static const struct tok isis_subtlv_link_attribute_values[] = {
{ 0x01, "Local Protection Available" },
{ 0x02, "Link excluded from local protection path" },
{ 0x04, "Local maintenance required"},
#define ISIS_SUBTLV_AUTH_MD5_LEN 16
#define ISIS_SUBTLV_AUTH_PRIVATE 255
-static struct tok isis_subtlv_auth_values[] = {
+static const struct tok isis_subtlv_auth_values[] = {
{ ISIS_SUBTLV_AUTH_SIMPLE, "simple text password"},
{ ISIS_SUBTLV_AUTH_GENERIC, "Generic Crypto key-id"},
{ ISIS_SUBTLV_AUTH_MD5, "HMAC-MD5 password"},
#define ISIS_SUBTLV_IDRP_LOCAL 1
#define ISIS_SUBTLV_IDRP_ASN 2
-static struct tok isis_subtlv_idrp_values[] = {
+static const struct tok isis_subtlv_idrp_values[] = {
{ ISIS_SUBTLV_IDRP_RES, "Reserved"},
{ ISIS_SUBTLV_IDRP_LOCAL, "Routing-Domain Specific"},
{ ISIS_SUBTLV_IDRP_ASN, "AS Number Tag"},
#define ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN 19
#define ISIS_SUBTLV_SPB_INSTANCE_VLAN_TUPLE_LEN 8
-static struct tok isis_mt_port_cap_subtlv_values[] = {
+static const struct tok isis_mt_port_cap_subtlv_values[] = {
{ ISIS_SUBTLV_SPB_MCID, "SPB MCID" },
{ ISIS_SUBTLV_SPB_DIGEST, "SPB Digest" },
{ ISIS_SUBTLV_SPB_BVID, "SPB BVID" },
{ 0, NULL }
};
-static struct tok isis_mt_capability_subtlv_values[] = {
+static const struct tok isis_mt_capability_subtlv_values[] = {
{ ISIS_SUBTLV_SPB_INSTANCE, "SPB Instance" },
{ ISIS_SUBTLV_SPBM_SI, "SPBM Service Identifier and Unicast Address" },
{ 0, NULL }
};
struct isis_spb_mcid {
- u_int8_t format_id;
- u_int8_t name[32];
+ u_int8_t format_id;
+ u_int8_t name[32];
u_int8_t revision_lvl[2];
- u_int8_t digest[16];
+ u_int8_t digest[16];
};
struct isis_subtlv_spb_mcid {
u_int8_t cist_external_root_path_cost[4];
u_int8_t bridge_priority[2];
u_int8_t spsourceid[4];
- u_int8_t no_of_trees;
+ u_int8_t no_of_trees;
};
#define CLNP_SEGMENT_PART 0x80
#define CLNP_MORE_SEGMENTS 0x40
#define CLNP_REQUEST_ER 0x20
-static struct tok clnp_flag_values[] = {
+static const struct tok clnp_flag_values[] = {
{ CLNP_SEGMENT_PART, "Segmentation permitted"},
{ CLNP_MORE_SEGMENTS, "more Segments"},
{ CLNP_REQUEST_ER, "request Error Report"},
#define ISIS_MASK_MTID(x) ((x)&0x0fff)
#define ISIS_MASK_MTFLAGS(x) ((x)&0xf000)
-static struct tok isis_mt_flag_values[] = {
+static const struct tok isis_mt_flag_values[] = {
{ 0x4000, "ATT bit set"},
{ 0x8000, "Overload bit set"},
{ 0, NULL}
#define ISIS_MASK_TLV_SHARED_RISK_GROUP(x) ((x)&0x1)
-static struct tok isis_mt_values[] = {
+static const struct tok isis_mt_values[] = {
{ 0, "IPv4 unicast"},
{ 1, "In-Band Management"},
{ 2, "IPv6 unicast"},
{ 0, NULL }
};
-static struct tok isis_iih_circuit_type_values[] = {
+static const struct tok isis_iih_circuit_type_values[] = {
{ 1, "Level 1 only"},
{ 2, "Level 2 only"},
{ 3, "Level 1, Level 2"},
#define ISIS_LSP_TYPE_UNUSED2 2
#define ISIS_LSP_TYPE_LEVEL_2 3
-static struct tok isis_lsp_istype_values[] = {
+static const struct tok isis_lsp_istype_values[] = {
{ ISIS_LSP_TYPE_UNUSED0, "Unused 0x0 (invalid)"},
{ ISIS_LSP_TYPE_LEVEL_1, "L1 IS"},
{ ISIS_LSP_TYPE_UNUSED2, "Unused 0x2 (invalid)"},
#define ISIS_PTP_ADJ_INIT 1
#define ISIS_PTP_ADJ_DOWN 2
-static struct tok isis_ptp_adjancey_values[] = {
+static const struct tok isis_ptp_adjancey_values[] = {
{ ISIS_PTP_ADJ_UP, "Up" },
{ ISIS_PTP_ADJ_INIT, "Initializing" },
{ ISIS_PTP_ADJ_DOWN, "Down" },
u_int8_t mask[4];
};
-static struct tok isis_is_reach_virtual_values[] = {
+static const struct tok isis_is_reach_virtual_values[] = {
{ 0, "IsNotVirtual"},
{ 1, "IsVirtual"},
{ 0, NULL }
};
-static struct tok isis_restart_flag_values[] = {
+static const struct tok isis_restart_flag_values[] = {
{ 0x1, "Restart Request"},
{ 0x2, "Restart Acknowledgement"},
{ 0x4, "Suppress adjacency advertisement"},
printf("OSI NLPID %s (0x%02x): ",
tok2str(nlpid_values,"Unknown",*p),
*p);
-
+
switch (*p) {
case NLPID_CLNP:
if (!clnp_print(p, length))
- print_unknown_data(p,"\n\t",caplen);
+ print_unknown_data(gndo,p,"\n\t",caplen);
break;
case NLPID_ESIS:
case NLPID_ISIS:
if (!isis_print(p, length))
- print_unknown_data(p,"\n\t",caplen);
+ print_unknown_data(gndo,p,"\n\t",caplen);
break;
case NLPID_NULLNS:
eflag ? "" : ", ",
length);
if (caplen > 1)
- print_unknown_data(p,"\n\t",caplen);
+ print_unknown_data(gndo,p,"\n\t",caplen);
break;
}
}
#define CLNP_PDU_ERQ 30
#define CLNP_PDU_ERP 31
-static struct tok clnp_pdu_values[] = {
+static const struct tok clnp_pdu_values[] = {
{ CLNP_PDU_ER, "Error Report"},
{ CLNP_PDU_MD, "MD"},
{ CLNP_PDU_DT, "Data"},
while (li >= 2) {
u_int op, opli;
const u_int8_t *tptr;
-
+
TCHECK2(*pptr, 2);
if (li < 2) {
printf(", bad opts/li");
li -= opli;
tptr = pptr;
tlen = opli;
-
+
printf("\n\t %s Option #%u, length %u, value: ",
tok2str(clnp_option_values,"Unknown",op),
op,
case CLNP_OPTION_ROUTE_RECORDING: /* those two options share the format */
- case CLNP_OPTION_SOURCE_ROUTING:
+ case CLNP_OPTION_SOURCE_ROUTING:
printf("%s %s",
tok2str(clnp_option_sr_rr_values,"Unknown",*tptr),
tok2str(clnp_option_sr_rr_string_values,"Unknown Option %u",op));
*/
default:
- print_unknown_data(tptr,"\n\t ",opli);
+ print_unknown_data(gndo,tptr,"\n\t ",opli);
break;
}
if (vflag > 1)
- print_unknown_data(pptr,"\n\t ",opli);
+ print_unknown_data(gndo,pptr,"\n\t ",opli);
pptr += opli;
}
/* FIXME recursion protection */
clnp_print(pptr, length-clnp_header->length_indicator);
break;
- }
+ }
case CLNP_PDU_DT:
case CLNP_PDU_MD:
case CLNP_PDU_ERQ:
-
+
default:
/* dump the PDU specific data */
if (length-(pptr-optr) > 0) {
printf("\n\t undecoded non-header data, length %u",length-clnp_header->length_indicator);
- print_unknown_data(pptr,"\n\t ",length-(pptr-optr));
+ print_unknown_data(gndo,pptr,"\n\t ",length-(pptr-optr));
}
}
#define ESIS_PDU_ESH 2
#define ESIS_PDU_ISH 4
-static struct tok esis_pdu_values[] = {
+static const struct tok esis_pdu_values[] = {
{ ESIS_PDU_REDIRECT, "redirect"},
{ ESIS_PDU_ESH, "ESH"},
{ ESIS_PDU_ISH, "ISH"},
printf(" version %d packet not supported", esis_header->version);
return;
}
-
+
if (li > length) {
printf(" length indicator(%d) > PDU size (%d)!", li, length);
return;
printf(", holding time: %us, length indicator: %u",EXTRACT_16BITS(esis_header->holdtime),li);
if (vflag > 1)
- print_unknown_data(optr,"\n\t",sizeof(struct esis_header_t));
+ print_unknown_data(gndo,optr,"\n\t",sizeof(struct esis_header_t));
pptr += sizeof(struct esis_header_t);
li -= sizeof(struct esis_header_t);
li--;
printf("\n\t Number of Source Addresses: %u", source_address_number);
-
+
while (source_address_number > 0) {
TCHECK(*pptr);
if (li < 1) {
default:
if (vflag <= 1) {
- if (pptr < snapend)
- print_unknown_data(pptr,"\n\t ",snapend-pptr);
+ if (pptr < snapend)
+ print_unknown_data(gndo,pptr,"\n\t ",snapend-pptr);
}
return;
}
while (li != 0) {
u_int op, opli;
const u_int8_t *tptr;
-
+
if (li < 2) {
printf(", bad opts/li");
return;
}
li -= opli;
tptr = pptr;
-
+
printf("\n\t %s Option #%u, length %u, value: ",
tok2str(esis_option_values,"Unknown",op),
op,
case ESIS_OPTION_SNPA_MASK:
default:
- print_unknown_data(tptr,"\n\t ",opli);
+ print_unknown_data(gndo,tptr,"\n\t ",opli);
break;
}
if (vflag > 1)
- print_unknown_data(pptr,"\n\t ",opli);
+ print_unknown_data(gndo,pptr,"\n\t ",opli);
pptr += opli;
}
trunc:
return;
-}
+}
static void
printf( "ID: %d, Name: ", mcid->format_id);
- for(i=0; i<32; i++)
- {
+ for(i=0; i<32; i++)
+ {
printf("%c", mcid->name[i]);
if(mcid->name[i] == '\0')
break;
}
- printf("\n\t Lvl: %d",
+ printf("\n\t Lvl: %d",
EXTRACT_16BITS(mcid->revision_lvl));
printf( ", Digest: ");
- for(i=0;i<16;i++)
+ for(i=0;i<16;i++)
printf("%.2x ",mcid->digest[i]);
}
tptr++;
printf( "\n\t Digest: ");
-
+
for(i=1;i<=8; i++)
{
printf("%08x ", EXTRACT_32BITS(tptr));
if (!TTEST2(*(tptr), ISIS_SUBTLV_SPB_BVID_MIN_LEN))
goto trunctlv;
- printf("\n\t ECT: %08x",
+ printf("\n\t ECT: %08x",
EXTRACT_32BITS(tptr));
tptr = tptr+4;
break;
}
-
+
default:
break;
}
trunctlv:
printf("\n\t\t packet exceeded snapshot");
- return(1);
+ return(1);
}
static int
{
int stlv_type, stlv_len, tmp;
- while (len > 0)
- {
+ while (len > 0)
+ {
stlv_type = *(tptr++);
stlv_len = *(tptr++);
tok2str(isis_mt_capability_subtlv_values, "unknown", stlv_type),
stlv_type,
stlv_len);
-
+
len = len - 2;
switch (stlv_type)
- {
+ {
case ISIS_SUBTLV_SPB_INSTANCE:
- if (!TTEST2(*(tptr), ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN))
+ if (!TTEST2(*(tptr), ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN))
goto trunctlv;
printf("\n\t CIST Root-ID: %08x", EXTRACT_32BITS(tptr));
printf(", Path Cost: %08x", EXTRACT_32BITS(tptr));
tptr = tptr+4;
printf(", Prio: %d", EXTRACT_16BITS(tptr));
- tptr = tptr + 2;
- printf("\n\t RES: %d",
+ tptr = tptr + 2;
+ printf("\n\t RES: %d",
EXTRACT_16BITS(tptr) >> 5);
- printf(", V: %d",
+ printf(", V: %d",
(EXTRACT_16BITS(tptr) >> 4) & 0x0001);
- printf(", SPSource-ID: %d",
+ printf(", SPSource-ID: %d",
(EXTRACT_32BITS(tptr) & 0x000fffff));
tptr = tptr+4;
printf(", No of Trees: %x", *(tptr));
printf ("\n\t U:%d, M:%d, A:%d, RES:%d",
*(tptr) >> 7, (*(tptr) >> 6) & 0x01,
(*(tptr) >> 5) & 0x01, (*(tptr) & 0x1f));
-
+
tptr++;
-
+
printf (", ECT: %08x", EXTRACT_32BITS(tptr));
tptr = tptr + 4;
tptr = tptr + 3;
len = len - ISIS_SUBTLV_SPB_INSTANCE_VLAN_TUPLE_LEN;
- tmp--;
+ tmp--;
}
break;
case ISIS_SUBTLV_SPBM_SI:
- if (!TTEST2(*(tptr), 6))
+ if (!TTEST2(*(tptr), 6))
goto trunctlv;
printf("\n\t BMAC: %08x", EXTRACT_32BITS(tptr));
ident,
ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_delay),
ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_delay) ? "External" : "Internal");
-
+
if (!ISIS_LSP_TLV_METRIC_SUPPORTED(tlv_ip_reach->isis_metric_block.metric_expense))
printf("%s Expense Metric: %u, %s",
ident,
ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_expense),
ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_expense) ? "External" : "Internal");
-
+
if (!ISIS_LSP_TLV_METRIC_SUPPORTED(tlv_ip_reach->isis_metric_block.metric_error))
printf("%s Error Metric: %u, %s",
ident,
}
break;
default:
- if(!print_unknown_data(tptr,"\n\t\t ",
+ if(!print_unknown_data(gndo,tptr,"\n\t\t ",
subl))
return(0);
break;
}
return(1);
-
+
trunctlv:
printf("%spacket exceeded snapshot",ident);
return(0);
u_int te_class,priority_level,gmpls_switch_cap;
union { /* int to float conversion buffer for several subTLVs */
- float f;
+ float f;
u_int32_t i;
} bw;
goto trunctlv;
switch(subt) {
- case ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP:
+ case ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP:
case ISIS_SUBTLV_EXT_IS_REACH_LINK_LOCAL_REMOTE_ID:
case ISIS_SUBTLV_EXT_IS_REACH_LINK_REMOTE_ID:
if (subl >= 4) {
printf(", %s", ipaddr_string(tptr));
break;
case ISIS_SUBTLV_EXT_IS_REACH_MAX_LINK_BW :
- case ISIS_SUBTLV_EXT_IS_REACH_RESERVABLE_BW:
+ case ISIS_SUBTLV_EXT_IS_REACH_RESERVABLE_BW:
if (subl >= 4) {
bw.i = EXTRACT_32BITS(tptr);
printf(", %.3f Mbps", bw.f*8/1000000 );
/* there is some optional stuff left to decode but this is as of yet
not specified so just lets hexdump what is left */
if(subl>0){
- if(!print_unknown_data(tptr,"\n\t\t ",
+ if(!print_unknown_data(gndo,tptr,"\n\t\t ",
subl))
return(0);
}
}
break;
default:
- if(!print_unknown_data(tptr,"\n\t\t ",
+ if(!print_unknown_data(gndo,tptr,"\n\t\t ",
subl))
return(0);
break;
char ident_buffer[20];
int subtlv_type,subtlv_len,subtlv_sum_len;
int proc_bytes = 0; /* how many bytes did we process ? */
-
+
if (!TTEST2(*tptr, NODE_ID_LEN))
return(0);
printf(", Metric: %d",EXTRACT_24BITS(tptr));
tptr+=3;
}
-
+
if (!TTEST2(*tptr, 1))
return(0);
subtlv_sum_len=*(tptr++); /* read out subTLV length */
static int
isis_print_mtid (const u_int8_t *tptr,const char *ident) {
-
+
if (!TTEST2(*tptr, 2))
return(0);
metric = EXTRACT_32BITS(tptr);
processed=4;
tptr+=4;
-
+
if (afi == AF_INET) {
if (!TTEST2(*tptr, 1)) /* fetch status byte */
return (0);
return (0); /* somebody is fooling us */
byte_length = (bit_length + 7) / 8; /* prefix has variable length encoding */
-
+
if (!TTEST2(*tptr, byte_length))
return (0);
memset(prefix, 0, sizeof prefix); /* clear the copy buffer */
ident,
ip6addr_string(prefix),
bit_length);
-#endif
-
+#endif
+
printf(", Distribution: %s, Metric: %u",
ISIS_MASK_TLV_EXTD_IP_UPDOWN(status_byte) ? "down" : "up",
metric);
ISIS_MASK_TLV_EXTD_IP6_IE(status_byte) ? "External" : "Internal",
ISIS_MASK_TLV_EXTD_IP6_SUBTLV(status_byte) ? ", sub-TLVs present" : "");
#endif
-
+
if ((afi == AF_INET && ISIS_MASK_TLV_EXTD_IP_SUBTLV(status_byte))
#ifdef INET6
|| (afi == AF_INET6 && ISIS_MASK_TLV_EXTD_IP6_SUBTLV(status_byte))
sublen=*(tptr++);
processed+=sublen+1;
printf(" (%u)",sublen); /* print out subTLV length */
-
+
while (sublen>0) {
if (!TTEST2(*tptr,2))
return (0);
}
/* toss any non 6-byte sys-ID len PDUs */
- if (id_length != 6 ) {
+ if (id_length != 6 ) {
printf("bad packet -- illegal sys-ID length (%u)", id_length);
return (0);
}
isis_header->max_area);
if (vflag > 1) {
- if(!print_unknown_data(optr,"\n\t",8)) /* provide the _o_riginal pointer */
+ if(!print_unknown_data(gndo,optr,"\n\t",8)) /* provide the _o_riginal pointer */
return(0); /* for optionally debugging the common header */
}
pdu_len);
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_IIH_LAN_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_IIH_LAN_HEADER_SIZE))
return(0);
}
pdu_len);
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_IIH_PTP_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_IIH_PTP_HEADER_SIZE))
return(0);
}
header_lsp->checksum[1] = 0;
header_lsp->remaining_lifetime[0] = 0;
header_lsp->remaining_lifetime[1] = 0;
-
+
printf(", PDU length: %u, Flags: [ %s",
pdu_len,
printf("%s ]", tok2str(isis_lsp_istype_values,"Unknown(0x%x)",ISIS_MASK_LSP_ISTYPE_BITS(header_lsp->typeblock)));
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_LSP_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_LSP_HEADER_SIZE))
return(0);
}
isis_print_id(header_csnp->end_lsp_id, LSP_ID_LEN));
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_CSNP_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_CSNP_HEADER_SIZE))
return(0);
}
pdu_len);
if (vflag > 1) {
- if(!print_unknown_data(pptr,"\n\t ",ISIS_PSNP_HEADER_SIZE))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",ISIS_PSNP_HEADER_SIZE))
return(0);
}
break;
default:
- if(!print_unknown_data(pptr,"\n\t ",length))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",length))
return(0);
return (0);
}
ext_is_len = isis_print_ext_is_reach(tptr,"\n\t ",tlv_type);
if (ext_is_len == 0) /* did something go wrong ? */
goto trunctlv;
-
+
tmp-=ext_is_len;
tptr+=ext_is_len;
}
while (tmp >= NODE_ID_LEN+3+1) { /* is it worth attempting a decode ? */
ext_is_len = isis_print_ext_is_reach(tptr,"\n\t ",tlv_type);
if (ext_is_len == 0) /* did something go wrong ? */
- goto trunctlv;
+ goto trunctlv;
tmp-=ext_is_len;
tptr+=ext_is_len;
}
break;
case ISIS_SUBTLV_AUTH_GENERIC:
key_id = EXTRACT_16BITS((tptr+1));
- printf("%u, password: ", key_id);
+ printf("%u, password: ", key_id);
for(i=1 + sizeof(u_int16_t);i<tlv_len;i++) {
if (!TTEST2(*(tptr+i), 1))
goto trunctlv;
break;
case ISIS_SUBTLV_AUTH_PRIVATE:
default:
- if(!print_unknown_data(tptr+1,"\n\t\t ",tlv_len-1))
+ if(!print_unknown_data(gndo,tptr+1,"\n\t\t ",tlv_len-1))
return(0);
break;
}
goto trunctlv;
printf("\n\t RES: %d, MTID(s): %d",
- (EXTRACT_16BITS (tptr) >> 12),
+ (EXTRACT_16BITS (tptr) >> 12),
(EXTRACT_16BITS (tptr) & 0x0fff));
tmp = tmp-2;
if (!TTEST2(*tptr, SYSTEM_ID_LEN))
goto trunctlv;
printf(", for %s",isis_print_id(tptr,SYSTEM_ID_LEN));
- }
+ }
break;
case ISIS_TLV_IDRP_INFO:
case ISIS_SUBTLV_IDRP_LOCAL:
case ISIS_SUBTLV_IDRP_RES:
default:
- if(!print_unknown_data(tptr,"\n\t ",tlv_len-1))
+ if(!print_unknown_data(gndo,tptr,"\n\t ",tlv_len-1))
return(0);
break;
}
tptr+=3;
tmp-=3;
if (tmp > 0) /* hexdump the rest */
- if(!print_unknown_data(tptr,"\n\t\t",tmp))
+ if(!print_unknown_data(gndo,tptr,"\n\t\t",tmp))
return(0);
break;
/*
default:
if (vflag <= 1) {
- if(!print_unknown_data(pptr,"\n\t\t",tlv_len))
+ if(!print_unknown_data(gndo,pptr,"\n\t\t",tlv_len))
return(0);
}
break;
}
/* do we want to see an additionally hexdump ? */
if (vflag> 1) {
- if(!print_unknown_data(pptr,"\n\t ",tlv_len))
+ if(!print_unknown_data(gndo,pptr,"\n\t ",tlv_len))
return(0);
}