• Home
  • Raw
  • Download

Lines Matching +full:ipv4 +full:- +full:simple +full:- +full:service +full:- +full:config

24  * complete IS-IS & CLNP support.
30 #include "config.h"
33 #include <netdissect-stdinc.h>
49 * IS-IS is defined in ISO 10589. Look there for protocol definitions.
94 * list taken from rfc3359 plus some memory from veterans ;-)
112 #define ISIS_TLV_EXT_IS_REACH 22 /* draft-ietf-isis-traffic-05 */
113 #define ISIS_TLV_IS_ALIAS_ID 24 /* draft-ietf-isis-ext-lsp-frags-02 */
123 #define ISIS_TLV_TE_ROUTER_ID 134 /* draft-ietf-isis-traffic-05 */
124 #define ISIS_TLV_EXTD_IP_REACH 135 /* draft-ietf-isis-traffic-05 */
126 #define ISIS_TLV_SHARED_RISK_GROUP 138 /* draft-ietf-isis-gmpls-extensions */
134 #define ISIS_TLV_MT_IS_REACH 222 /* draft-ietf-isis-wg-multi-topology-05 */
135 #define ISIS_TLV_MT_SUPPORTED 229 /* draft-ietf-isis-wg-multi-topology-05 */
137 #define ISIS_TLV_IP6ADDR 232 /* draft-ietf-isis-ipv6-02 */
138 #define ISIS_TLV_MT_IP_REACH 235 /* draft-ietf-isis-wg-multi-topology-05 */
139 #define ISIS_TLV_IP6_REACH 236 /* draft-ietf-isis-ipv6-02 */
140 #define ISIS_TLV_MT_IP6_REACH 237 /* draft-ietf-isis-wg-multi-topology-05 */
142 #define ISIS_TLV_IIH_SEQNR 241 /* draft-shen-isis-iih-sequence-00 */
144 #define ISIS_TLV_VENDOR_PRIVATE 250 /* draft-ietf-isis-experimental-tlv-01 */
165 { ISIS_TLV_INT_IP_REACH, "IPv4 Internal Reachability"},
167 { ISIS_TLV_EXT_IP_REACH, "IPv4 External Reachability"},
168 { ISIS_TLV_IDRP_INFO, "Inter-Domain Information Type"},
169 { ISIS_TLV_IPADDR, "IPv4 Interface address(es)"},
170 { ISIS_TLV_IPAUTH, "IPv4 authentication (deprecated)"},
172 { ISIS_TLV_EXTD_IP_REACH, "Extended IPv4 Reachability"},
174 { ISIS_TLV_MT_PORT_CAP, "Multi-Topology-Aware Port Capability"},
175 { ISIS_TLV_MT_CAPABILITY, "Multi-Topology Capability"},
183 { ISIS_TLV_MT_IP_REACH, "Multi-Topology IPv4 Reachability"},
185 { ISIS_TLV_MT_IP6_REACH, "Multi-Topology IP6 Reachability"},
186 { ISIS_TLV_PTP_ADJ, "Point-to-point Adjacency State"},
286 /* array of 16 error-classes */
341 #define ISIS_SUBTLV_EXT_IS_REACH_ADMIN_GROUP 3 /* draft-ietf-isis-traffic-05 */
343 #define ISIS_SUBTLV_EXT_IS_REACH_LINK_REMOTE_ID 5 /* draft-ietf-isis-traffic-05 */
344 #define ISIS_SUBTLV_EXT_IS_REACH_IPV4_INTF_ADDR 6 /* draft-ietf-isis-traffic-05 */
345 #define ISIS_SUBTLV_EXT_IS_REACH_IPV4_NEIGHBOR_ADDR 8 /* draft-ietf-isis-traffic-05 */
346 #define ISIS_SUBTLV_EXT_IS_REACH_MAX_LINK_BW 9 /* draft-ietf-isis-traffic-05 */
347 #define ISIS_SUBTLV_EXT_IS_REACH_RESERVABLE_BW 10 /* draft-ietf-isis-traffic-05 */
349 #define ISIS_SUBTLV_EXT_IS_REACH_BW_CONSTRAINTS_OLD 12 /* draft-ietf-tewg-diff-te-proto-06 */
350 #define ISIS_SUBTLV_EXT_IS_REACH_TE_METRIC 18 /* draft-ietf-isis-traffic-05 */
351 #define ISIS_SUBTLV_EXT_IS_REACH_LINK_ATTRIBUTE 19 /* draft-ietf-isis-link-attr-01 */
362 { ISIS_SUBTLV_EXT_IS_REACH_IPV4_INTF_ADDR, "IPv4 interface address" },
363 { ISIS_SUBTLV_EXT_IS_REACH_IPV4_NEIGHBOR_ADDR, "IPv4 neighbor address" },
383 #define ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG32 1 /* draft-ietf-isis-admin-tags-01 */
384 #define ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG64 2 /* draft-ietf-isis-admin-tags-01 */
385 #define ISIS_SUBTLV_EXTD_IP_REACH_MGMT_PREFIX_COLOR 117 /* draft-ietf-isis-wg-multi-topology-05 */
388 { ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG32, "32-Bit Administrative tag" },
389 { ISIS_SUBTLV_EXTD_IP_REACH_ADMIN_TAG64, "64-Bit Administrative tag" },
408 { ISIS_SUBTLV_AUTH_SIMPLE, "simple text password"},
409 { ISIS_SUBTLV_AUTH_GENERIC, "Generic Crypto key-id"},
410 { ISIS_SUBTLV_AUTH_MD5, "HMAC-MD5 password"},
421 { ISIS_SUBTLV_IDRP_LOCAL, "Routing-Domain Specific"},
449 { ISIS_SUBTLV_SPBM_SI, "SPBM Service Identifier and Unicast Address" },
516 { 0, "IPv4 unicast"},
517 { 1, "In-Band Management"},
680 if (ndo->ndo_eflag) in isoclns_print()
700 ND_PRINT((ndo, "%slength: %u", ndo->ndo_eflag ? "" : ", ", length)); in isoclns_print()
704 q933_print(ndo, p + 1, length - 1); in isoclns_print()
708 ip_print(ndo, p + 1, length - 1); in isoclns_print()
712 ip6_print(ndo, p + 1, length - 1); in isoclns_print()
716 ppp_print(ndo, p + 1, length - 1); in isoclns_print()
720 if (!ndo->ndo_eflag) in isoclns_print()
722 ND_PRINT((ndo, "%slength: %u", ndo->ndo_eflag ? "" : ", ", length)); in isoclns_print()
778 li = clnp_header->length_indicator; in clnp_print()
781 if (!ndo->ndo_eflag) in clnp_print()
788 if (clnp_header->version != CLNP_VERSION) { in clnp_print()
789 ND_PRINT((ndo, "version %d packet not supported", clnp_header->version)); in clnp_print()
800 while (pptr < ndo->ndo_snapend) in clnp_print()
807 clnp_pdu_type = clnp_header->type & CLNP_PDU_TYPE_MASK; in clnp_print()
808 clnp_flags = clnp_header->type & CLNP_FLAG_MASK; in clnp_print()
811 li -= sizeof(struct clnp_header_t); in clnp_print()
820 li -= 1; in clnp_print()
828 li -= dest_address_length; in clnp_print()
837 li -= 1; in clnp_print()
845 li -= source_address_length; in clnp_print()
847 if (ndo->ndo_vflag < 1) { in clnp_print()
849 ndo->ndo_eflag ? "" : ", ", in clnp_print()
856 ND_PRINT((ndo, "%slength %u", ndo->ndo_eflag ? "" : ", ", length)); in clnp_print()
860 clnp_header->length_indicator, in clnp_print()
861 clnp_header->version, in clnp_print()
862 clnp_header->lifetime/2, in clnp_print()
863 (clnp_header->lifetime%2)*5, in clnp_print()
864 EXTRACT_16BITS(clnp_header->segment_length), in clnp_print()
865 EXTRACT_16BITS(clnp_header->cksum))); in clnp_print()
867 osi_print_cksum(ndo, optr, EXTRACT_16BITS(clnp_header->cksum), 7, in clnp_print()
868 clnp_header->length_indicator); in clnp_print()
887 EXTRACT_16BITS(clnp_segment_header->data_unit_id), in clnp_print()
888 EXTRACT_16BITS(clnp_segment_header->segment_offset), in clnp_print()
889 EXTRACT_16BITS(clnp_segment_header->total_length))); in clnp_print()
891 li-=sizeof(const struct clnp_segment_header_t); in clnp_print()
906 li -= 2; in clnp_print()
912 li -= opli; in clnp_print()
946 nsap_offset-=1; /* offset to nsap list */ in clnp_print()
952 tlen-=nsap_offset; in clnp_print()
966 tlen-=source_address_length+1; in clnp_print()
998 ND_PRINT((ndo, "\n\t Format Code: %s, Security-Level %u", in clnp_print()
1023 * you are welcome to contribute code ;-) in clnp_print()
1030 if (ndo->ndo_vflag > 1) in clnp_print()
1041 ND_PRINT((ndo, "\n\t-----original packet-----\n\t")); in clnp_print()
1043 clnp_print(ndo, pptr, length - clnp_header->length_indicator); in clnp_print()
1053 if (length-(pptr-optr) > 0) { in clnp_print()
1054 …ND_PRINT((ndo, "\n\t undecoded non-header data, length %u", length-clnp_header->length_indicator)… in clnp_print()
1055 print_unknown_data(ndo, pptr, "\n\t ", length - (pptr - optr)); in clnp_print()
1097 if (!ndo->ndo_eflag) in esis_print()
1098 ND_PRINT((ndo, "ES-IS")); in esis_print()
1101 ND_PRINT((ndo, ndo->ndo_qflag ? "bad pkt!" : "no header at all!")); in esis_print()
1107 li = esis_header->length_indicator; in esis_print()
1114 if (esis_header->nlpid != NLPID_ESIS) { in esis_print()
1115 ND_PRINT((ndo, " nlpid 0x%02x packet not supported", esis_header->nlpid)); in esis_print()
1119 if (esis_header->version != ESIS_VERSION) { in esis_print()
1120 ND_PRINT((ndo, " version %d packet not supported", esis_header->version)); in esis_print()
1131 while (pptr < ndo->ndo_snapend) in esis_print()
1136 esis_pdu_type = esis_header->type & ESIS_PDU_TYPE_MASK; in esis_print()
1138 if (ndo->ndo_vflag < 1) { in esis_print()
1140 ndo->ndo_eflag ? "" : ", ", in esis_print()
1146 ndo->ndo_eflag ? "" : ", ", in esis_print()
1151 …ND_PRINT((ndo, ", v: %u%s", esis_header->version, esis_header->version == ESIS_VERSION ? "" : "uns… in esis_print()
1152 ND_PRINT((ndo, ", checksum: 0x%04x", EXTRACT_16BITS(esis_header->cksum))); in esis_print()
1154 osi_print_cksum(ndo, pptr, EXTRACT_16BITS(esis_header->cksum), 7, li); in esis_print()
1157 EXTRACT_16BITS(esis_header->holdtime), li)); in esis_print()
1159 if (ndo->ndo_vflag > 1) in esis_print()
1163 li -= sizeof(struct esis_header_t); in esis_print()
1177 li--; in esis_print()
1185 li -= dstl; in esis_print()
1195 li--; in esis_print()
1203 li -= snpal; in esis_print()
1218 li -= netal; in esis_print()
1243 li--; in esis_print()
1255 li--; in esis_print()
1266 li -= source_address_length; in esis_print()
1267 source_address_number--; in esis_print()
1280 li--; in esis_print()
1288 li -= source_address_length; in esis_print()
1293 if (ndo->ndo_vflag <= 1) { in esis_print()
1294 if (pptr < ndo->ndo_snapend) in esis_print()
1295 print_unknown_data(ndo, pptr, "\n\t ", ndo->ndo_snapend - pptr); in esis_print()
1312 li -= 2; in esis_print()
1317 li -= opli; in esis_print()
1343 if (opli>1) /* further NPLIDs ? - put comma */ in esis_print()
1346 opli--; in esis_print()
1352 * you are welcome to contribute code ;-) in esis_print()
1365 if (ndo->ndo_vflag > 1) in esis_print()
1380 ND_PRINT((ndo, "ID: %d, Name: ", mcid->format_id)); in isis_print_mcid()
1382 if (fn_printzp(ndo, mcid->name, 32, ndo->ndo_snapend)) in isis_print_mcid()
1385 ND_PRINT((ndo, "\n\t Lvl: %d", EXTRACT_16BITS(mcid->revision_lvl))); in isis_print_mcid()
1390 ND_PRINT((ndo, "%.2x ", mcid->digest[i])); in isis_print_mcid()
1416 /*len -= TLV_TYPE_LEN_OFFSET;*/ in isis_print_mt_port_cap_subtlv()
1417 len = len -2; in isis_print_mt_port_cap_subtlv()
1435 isis_print_mcid(ndo, &(subtlv_spb_mcid->mcid)); in isis_print_mt_port_cap_subtlv()
1438 len -= SPB_MCID_MIN_LEN; */ in isis_print_mt_port_cap_subtlv()
1440 ND_PRINT((ndo, "\n\t AUX-MCID: ")); in isis_print_mt_port_cap_subtlv()
1441 isis_print_mcid(ndo, &(subtlv_spb_mcid->aux_mcid)); in isis_print_mt_port_cap_subtlv()
1444 len -= SPB_MCID_MIN_LEN; */ in isis_print_mt_port_cap_subtlv()
1446 len = len - ISIS_SUBTLV_SPB_MCID_MIN_LEN; in isis_print_mt_port_cap_subtlv()
1447 stlv_len = stlv_len - ISIS_SUBTLV_SPB_MCID_MIN_LEN; in isis_print_mt_port_cap_subtlv()
1473 len = len - ISIS_SUBTLV_SPB_DIGEST_MIN_LEN; in isis_print_mt_port_cap_subtlv()
1474 stlv_len = stlv_len - ISIS_SUBTLV_SPB_DIGEST_MIN_LEN; in isis_print_mt_port_cap_subtlv()
1494 len = len - ISIS_SUBTLV_SPB_BVID_MIN_LEN; in isis_print_mt_port_cap_subtlv()
1495 stlv_len = stlv_len - ISIS_SUBTLV_SPB_BVID_MIN_LEN; in isis_print_mt_port_cap_subtlv()
1505 len -= stlv_len; in isis_print_mt_port_cap_subtlv()
1534 len = len - 2; in isis_print_mt_capability_subtlv()
1548 ND_PRINT((ndo, "\n\t CIST Root-ID: %08x", EXTRACT_32BITS(tptr))); in isis_print_mt_capability_subtlv()
1560 ND_PRINT((ndo, ", SPSource-ID: %d", in isis_print_mt_capability_subtlv()
1567 len = len - ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN; in isis_print_mt_capability_subtlv()
1568 stlv_len = stlv_len - ISIS_SUBTLV_SPB_INSTANCE_MIN_LEN; in isis_print_mt_capability_subtlv()
1590 len = len - ISIS_SUBTLV_SPB_INSTANCE_VLAN_TUPLE_LEN; in isis_print_mt_capability_subtlv()
1591 stlv_len = stlv_len - ISIS_SUBTLV_SPB_INSTANCE_VLAN_TUPLE_LEN; in isis_print_mt_capability_subtlv()
1592 tmp--; in isis_print_mt_capability_subtlv()
1610 len = len - 8; in isis_print_mt_capability_subtlv()
1611 stlv_len = stlv_len - 8; in isis_print_mt_capability_subtlv()
1622 len = len - 4; in isis_print_mt_capability_subtlv()
1623 stlv_len = stlv_len - 4; in isis_print_mt_capability_subtlv()
1632 len -= stlv_len; in isis_print_mt_capability_subtlv()
1642 /* shared routine for printing system, node and lsp-ids */
1647 static char id[sizeof("xxxx.xxxx.xxxx.yy-zz")]; in isis_print_id()
1655 snprintf(pos, sizeof(id) - (pos - id), "%02x", *cp++); in isis_print_id()
1661 snprintf(pos, sizeof(id) - (pos - id), ".%02x", *cp++); in isis_print_id()
1665 snprintf(pos, sizeof(id) - (pos - id), "-%02x", *cp); in isis_print_id()
1669 /* print the 4-byte metric block which is common found in the old-style TLVs */
1675 ISIS_LSP_TLV_METRIC_VALUE(isis_metric_block->metric_default), in isis_print_metric_block()
1676 ISIS_LSP_TLV_METRIC_IE(isis_metric_block->metric_default) ? "External" : "Internal")); in isis_print_metric_block()
1677 if (!ISIS_LSP_TLV_METRIC_SUPPORTED(isis_metric_block->metric_delay)) in isis_print_metric_block()
1679 ISIS_LSP_TLV_METRIC_VALUE(isis_metric_block->metric_delay), in isis_print_metric_block()
1680 ISIS_LSP_TLV_METRIC_IE(isis_metric_block->metric_delay) ? "External" : "Internal")); in isis_print_metric_block()
1681 if (!ISIS_LSP_TLV_METRIC_SUPPORTED(isis_metric_block->metric_expense)) in isis_print_metric_block()
1683 ISIS_LSP_TLV_METRIC_VALUE(isis_metric_block->metric_expense), in isis_print_metric_block()
1684 … ISIS_LSP_TLV_METRIC_IE(isis_metric_block->metric_expense) ? "External" : "Internal")); in isis_print_metric_block()
1685 if (!ISIS_LSP_TLV_METRIC_SUPPORTED(isis_metric_block->metric_error)) in isis_print_metric_block()
1687 ISIS_LSP_TLV_METRIC_VALUE(isis_metric_block->metric_error), in isis_print_metric_block()
1688 ISIS_LSP_TLV_METRIC_IE(isis_metric_block->metric_error) ? "External" : "Internal")); in isis_print_metric_block()
1704 ND_PRINT((ndo, "short IPv4 Reachability (%d vs %lu)", in isis_print_tlv_ip_reach()
1713 prefix_len = mask2plen(EXTRACT_32BITS(tlv_ip_reach->mask)); in isis_print_tlv_ip_reach()
1715 if (prefix_len == -1) in isis_print_tlv_ip_reach()
1718 ipaddr_string(ndo, (tlv_ip_reach->prefix)), in isis_print_tlv_ip_reach()
1719 ipaddr_string(ndo, (tlv_ip_reach->mask)))); in isis_print_tlv_ip_reach()
1723 ipaddr_string(ndo, (tlv_ip_reach->prefix)), in isis_print_tlv_ip_reach()
1727 … ISIS_LSP_TLV_METRIC_UPDOWN(tlv_ip_reach->isis_metric_block.metric_default) ? "down" : "up", in isis_print_tlv_ip_reach()
1728 ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_default), in isis_print_tlv_ip_reach()
1729 …ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_default) ? "External" : "Internal")); in isis_print_tlv_ip_reach()
1731 if (!ISIS_LSP_TLV_METRIC_SUPPORTED(tlv_ip_reach->isis_metric_block.metric_delay)) in isis_print_tlv_ip_reach()
1734 ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_delay), in isis_print_tlv_ip_reach()
1735 … ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_delay) ? "External" : "Internal")); in isis_print_tlv_ip_reach()
1737 if (!ISIS_LSP_TLV_METRIC_SUPPORTED(tlv_ip_reach->isis_metric_block.metric_expense)) in isis_print_tlv_ip_reach()
1740 … ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_expense), in isis_print_tlv_ip_reach()
1741 …ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_expense) ? "External" : "Internal")); in isis_print_tlv_ip_reach()
1743 if (!ISIS_LSP_TLV_METRIC_SUPPORTED(tlv_ip_reach->isis_metric_block.metric_error)) in isis_print_tlv_ip_reach()
1746 ISIS_LSP_TLV_METRIC_VALUE(tlv_ip_reach->isis_metric_block.metric_error), in isis_print_tlv_ip_reach()
1747 … ISIS_LSP_TLV_METRIC_IE(tlv_ip_reach->isis_metric_block.metric_error) ? "External" : "Internal")); in isis_print_tlv_ip_reach()
1749 length -= sizeof(struct isis_tlv_ip_reach); in isis_print_tlv_ip_reach()
1756 * this is the common IP-REACH subTLV decoder it is called
1757 * from various EXTD-IP REACH TLVs (135,235,236,237)
1780 subl-=4; in isis_print_ip_reach_subtlv()
1789 subl-=8; in isis_print_ip_reach_subtlv()
1806 * this is the common IS-REACH subTLV decoder it is called
1854 ND_PRINT((ndo, "%s TE-Class %u: %.3f Mbps", in isis_print_is_reach_subtlv()
1872 for (te_class = 0; te_class < (subl-1)/4; te_class++) { in isis_print_is_reach_subtlv()
1907 ND_PRINT((ndo, ", P-ID: %u", EXTRACT_16BITS(tptr))); in isis_print_is_reach_subtlv()
1928 subl-=36; in isis_print_is_reach_subtlv()
1970 * this is the common IS-REACH decoder it is called
1971 * from various EXTD-IS REACH style TLVs (22,24,222)
1999 ND_PRINT((ndo, ", %ssub-TLVs present",subtlv_sum_len ? "" : "no ")); in isis_print_ext_is_reach()
2012 subtlv_sum_len-=(subtlv_len+2); in isis_print_ext_is_reach()
2021 * it is called from various MT-TLVs (222,229,235,237)
2056 uint8_t prefix[sizeof(struct in6_addr)]; /* shared copy buffer for IPv4 and IPv6 prefixes */ in isis_print_extd_ip_reach()
2117 ND_PRINT((ndo, ", sub-TLVs present")); in isis_print_extd_ip_reach()
2121 ISIS_MASK_TLV_EXTD_IP6_SUBTLV(status_byte) ? ", sub-TLVs present" : "")); in isis_print_extd_ip_reach()
2127 than one subTLV - therefore the first byte must reflect in isis_print_extd_ip_reach()
2146 sublen-=(subtlvlen+2); in isis_print_extd_ip_reach()
2160 header_lsp->checksum[0] = 0; in isis_clear_checksum_lifetime()
2161 header_lsp->checksum[1] = 0; in isis_clear_checksum_lifetime()
2162 header_lsp->remaining_lifetime[0] = 0; in isis_clear_checksum_lifetime()
2163 header_lsp->remaining_lifetime[1] = 0; in isis_clear_checksum_lifetime()
2168 * Decode IS-IS packets. Return 0 on error.
2196 optr = p; /* initialize the _o_riginal pointer to the packet start - in isis_print()
2210 if (!ndo->ndo_eflag) in isis_print()
2211 ND_PRINT((ndo, "IS-IS")); in isis_print()
2217 if (isis_header->version != ISIS_VERSION) { in isis_print()
2218 ND_PRINT((ndo, "version %d packet not supported", isis_header->version)); in isis_print()
2222 if ((isis_header->id_length != SYSTEM_ID_LEN) && (isis_header->id_length != 0)) { in isis_print()
2224 isis_header->id_length)); in isis_print()
2228 if (isis_header->pdu_version != ISIS_VERSION) { in isis_print()
2229 ND_PRINT((ndo, "version %d packet not supported", isis_header->pdu_version)); in isis_print()
2233 if (length < isis_header->fixed_len) { in isis_print()
2234 ND_PRINT((ndo, "fixed header length %u > packet length %u", isis_header->fixed_len, length)); in isis_print()
2238 if (isis_header->fixed_len < ISIS_COMMON_HEADER_SIZE) { in isis_print()
2239 …ND_PRINT((ndo, "fixed header length %u < minimum header size %u", isis_header->fixed_len, (u_int)I… in isis_print()
2243 max_area = isis_header->max_area; in isis_print()
2249 ND_PRINT((ndo, "bad packet -- 255 areas")); in isis_print()
2255 id_length = isis_header->id_length; in isis_print()
2260 case 1: /* 1-8 are valid sys-ID lenghts */ in isis_print()
2276 /* toss any non 6-byte sys-ID len PDUs */ in isis_print()
2278 ND_PRINT((ndo, "bad packet -- illegal sys-ID length (%u)", id_length)); in isis_print()
2282 pdu_type=isis_header->pdu_type; in isis_print()
2284 /* in non-verbose mode print the basic PDU Type plus PDU specific brief information*/ in isis_print()
2285 if (ndo->ndo_vflag == 0) { in isis_print()
2287 ndo->ndo_eflag ? "" : ", ", in isis_print()
2288 tok2str(isis_pdu_values, "unknown PDU-Type %u", pdu_type))); in isis_print()
2290 /* ok they seem to want to know everything - lets fully decode it */ in isis_print()
2291 ND_PRINT((ndo, "%slength %u", ndo->ndo_eflag ? "" : ", ", length)); in isis_print()
2293 ND_PRINT((ndo, "\n\t%s, hlen: %u, v: %u, pdu-v: %u, sys-id-len: %u (%u), max-area: %u (%u)", in isis_print()
2297 isis_header->fixed_len, in isis_print()
2298 isis_header->version, in isis_print()
2299 isis_header->pdu_version, in isis_print()
2301 isis_header->id_length, in isis_print()
2303 isis_header->max_area)); in isis_print()
2305 if (ndo->ndo_vflag > 1) { in isis_print()
2315 if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_LAN_HEADER_SIZE)) { in isis_print()
2317 … isis_header->fixed_len, (unsigned long)(ISIS_COMMON_HEADER_SIZE+ISIS_IIH_LAN_HEADER_SIZE))); in isis_print()
2323 if (ndo->ndo_vflag == 0) { in isis_print()
2324 ND_PRINT((ndo, ", src-id %s", in isis_print()
2325 isis_print_id(header_iih_lan->source_id, SYSTEM_ID_LEN))); in isis_print()
2326 ND_PRINT((ndo, ", lan-id %s, prio %u", in isis_print()
2327 isis_print_id(header_iih_lan->lan_id,NODE_ID_LEN), in isis_print()
2328 header_iih_lan->priority)); in isis_print()
2332 pdu_len=EXTRACT_16BITS(header_iih_lan->pdu_len); in isis_print()
2338 ND_PRINT((ndo, "\n\t source-id: %s, holding time: %us, Flags: [%s]", in isis_print()
2339 isis_print_id(header_iih_lan->source_id,SYSTEM_ID_LEN), in isis_print()
2340 EXTRACT_16BITS(header_iih_lan->holding_time), in isis_print()
2343 header_iih_lan->circuit_type))); in isis_print()
2345 ND_PRINT((ndo, "\n\t lan-id: %s, Priority: %u, PDU length: %u", in isis_print()
2346 isis_print_id(header_iih_lan->lan_id, NODE_ID_LEN), in isis_print()
2347 (header_iih_lan->priority) & ISIS_LAN_PRIORITY_MASK, in isis_print()
2350 if (ndo->ndo_vflag > 1) { in isis_print()
2355 packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_LAN_HEADER_SIZE); in isis_print()
2360 if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_PTP_HEADER_SIZE)) { in isis_print()
2362 … isis_header->fixed_len, (unsigned long)(ISIS_COMMON_HEADER_SIZE+ISIS_IIH_PTP_HEADER_SIZE))); in isis_print()
2368 if (ndo->ndo_vflag == 0) { in isis_print()
2369 ND_PRINT((ndo, ", src-id %s", isis_print_id(header_iih_ptp->source_id, SYSTEM_ID_LEN))); in isis_print()
2373 pdu_len=EXTRACT_16BITS(header_iih_ptp->pdu_len); in isis_print()
2379 ND_PRINT((ndo, "\n\t source-id: %s, holding time: %us, Flags: [%s]", in isis_print()
2380 isis_print_id(header_iih_ptp->source_id,SYSTEM_ID_LEN), in isis_print()
2381 EXTRACT_16BITS(header_iih_ptp->holding_time), in isis_print()
2384 header_iih_ptp->circuit_type))); in isis_print()
2386 ND_PRINT((ndo, "\n\t circuit-id: 0x%02x, PDU length: %u", in isis_print()
2387 header_iih_ptp->circuit_id, in isis_print()
2390 if (ndo->ndo_vflag > 1) { in isis_print()
2395 packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_IIH_PTP_HEADER_SIZE); in isis_print()
2401 if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_LSP_HEADER_SIZE)) { in isis_print()
2403 isis_header->fixed_len, (unsigned long)ISIS_LSP_HEADER_SIZE)); in isis_print()
2409 if (ndo->ndo_vflag == 0) { in isis_print()
2410 ND_PRINT((ndo, ", lsp-id %s, seq 0x%08x, lifetime %5us", in isis_print()
2411 isis_print_id(header_lsp->lsp_id, LSP_ID_LEN), in isis_print()
2412 EXTRACT_32BITS(header_lsp->sequence_number), in isis_print()
2413 EXTRACT_16BITS(header_lsp->remaining_lifetime))); in isis_print()
2417 pdu_len=EXTRACT_16BITS(header_lsp->pdu_len); in isis_print()
2423 ND_PRINT((ndo, "\n\t lsp-id: %s, seq: 0x%08x, lifetime: %5us\n\t chksum: 0x%04x", in isis_print()
2424 isis_print_id(header_lsp->lsp_id, LSP_ID_LEN), in isis_print()
2425 EXTRACT_32BITS(header_lsp->sequence_number), in isis_print()
2426 EXTRACT_16BITS(header_lsp->remaining_lifetime), in isis_print()
2427 EXTRACT_16BITS(header_lsp->checksum))); in isis_print()
2429 osi_print_cksum(ndo, (const uint8_t *)header_lsp->lsp_id, in isis_print()
2430 EXTRACT_16BITS(header_lsp->checksum), in isis_print()
2431 12, length-12); in isis_print()
2435 ISIS_MASK_LSP_OL_BIT(header_lsp->typeblock) ? "Overload bit set, " : "")); in isis_print()
2437 if (ISIS_MASK_LSP_ATT_BITS(header_lsp->typeblock)) { in isis_print()
2438 … ND_PRINT((ndo, "%s", ISIS_MASK_LSP_ATT_DEFAULT_BIT(header_lsp->typeblock) ? "default " : "")); in isis_print()
2439 … ND_PRINT((ndo, "%s", ISIS_MASK_LSP_ATT_DELAY_BIT(header_lsp->typeblock) ? "delay " : "")); in isis_print()
2440 … ND_PRINT((ndo, "%s", ISIS_MASK_LSP_ATT_EXPENSE_BIT(header_lsp->typeblock) ? "expense " : "")); in isis_print()
2441 … ND_PRINT((ndo, "%s", ISIS_MASK_LSP_ATT_ERROR_BIT(header_lsp->typeblock) ? "error " : "")); in isis_print()
2444 … ND_PRINT((ndo, "%s", ISIS_MASK_LSP_PARTITION_BIT(header_lsp->typeblock) ? "P bit set, " : "")); in isis_print()
2446 ISIS_MASK_LSP_ISTYPE_BITS(header_lsp->typeblock)))); in isis_print()
2448 if (ndo->ndo_vflag > 1) { in isis_print()
2453 packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_LSP_HEADER_SIZE); in isis_print()
2459 if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_CSNP_HEADER_SIZE)) { in isis_print()
2461 … isis_header->fixed_len, (unsigned long)(ISIS_COMMON_HEADER_SIZE+ISIS_CSNP_HEADER_SIZE))); in isis_print()
2467 if (ndo->ndo_vflag == 0) { in isis_print()
2468 ND_PRINT((ndo, ", src-id %s", isis_print_id(header_csnp->source_id, NODE_ID_LEN))); in isis_print()
2472 pdu_len=EXTRACT_16BITS(header_csnp->pdu_len); in isis_print()
2478 ND_PRINT((ndo, "\n\t source-id: %s, PDU length: %u", in isis_print()
2479 isis_print_id(header_csnp->source_id, NODE_ID_LEN), in isis_print()
2481 ND_PRINT((ndo, "\n\t start lsp-id: %s", in isis_print()
2482 isis_print_id(header_csnp->start_lsp_id, LSP_ID_LEN))); in isis_print()
2483 ND_PRINT((ndo, "\n\t end lsp-id: %s", in isis_print()
2484 isis_print_id(header_csnp->end_lsp_id, LSP_ID_LEN))); in isis_print()
2486 if (ndo->ndo_vflag > 1) { in isis_print()
2491 packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_CSNP_HEADER_SIZE); in isis_print()
2497 if (isis_header->fixed_len != (ISIS_COMMON_HEADER_SIZE+ISIS_PSNP_HEADER_SIZE)) { in isis_print()
2498 ND_PRINT((ndo, "- bogus fixed header length %u should be %lu", in isis_print()
2499 … isis_header->fixed_len, (unsigned long)(ISIS_COMMON_HEADER_SIZE+ISIS_PSNP_HEADER_SIZE))); in isis_print()
2505 if (ndo->ndo_vflag == 0) { in isis_print()
2506 ND_PRINT((ndo, ", src-id %s", isis_print_id(header_psnp->source_id, NODE_ID_LEN))); in isis_print()
2510 pdu_len=EXTRACT_16BITS(header_psnp->pdu_len); in isis_print()
2516 ND_PRINT((ndo, "\n\t source-id: %s, PDU length: %u", in isis_print()
2517 isis_print_id(header_psnp->source_id, NODE_ID_LEN), in isis_print()
2520 if (ndo->ndo_vflag > 1) { in isis_print()
2525 packet_len -= (ISIS_COMMON_HEADER_SIZE+ISIS_PSNP_HEADER_SIZE); in isis_print()
2530 if (ndo->ndo_vflag == 0) { in isis_print()
2550 packet_len -= 2; in isis_print()
2577 tmp -= alen + 1; in isis_print()
2588 tmp -= ETHER_ADDR_LEN; in isis_print()
2601 tmp --; in isis_print()
2606 tmp -= lan_alen; in isis_print()
2619 tmp-=mt_len; in isis_print()
2625 tmp-=ext_is_len; in isis_print()
2635 tmp-=ext_is_len; in isis_print()
2645 tmp-=ext_is_len; in isis_print()
2659 isis_print_id(tlv_is_reach->neighbor_nodeid, NODE_ID_LEN))); in isis_print()
2660 isis_print_metric_block(ndo, &tlv_is_reach->isis_metric_block); in isis_print()
2661 tmp -= sizeof(struct isis_tlv_is_reach); in isis_print()
2671 isis_print_id(tlv_es_reach->neighbor_sysid, SYSTEM_ID_LEN))); in isis_print()
2672 isis_print_metric_block(ndo, &tlv_es_reach->isis_metric_block); in isis_print()
2673 tmp -= sizeof(struct isis_tlv_es_reach); in isis_print()
2691 tmp-=ext_ip_len; in isis_print()
2701 tmp-=mt_len; in isis_print()
2708 tmp-=ext_ip_len; in isis_print()
2718 tmp-=ext_ip_len; in isis_print()
2728 tmp-=mt_len; in isis_print()
2735 tmp-=ext_ip_len; in isis_print()
2747 tmp -= sizeof(struct in6_addr); in isis_print()
2760 if (fn_printzp(ndo, tptr + 1, tlv_len - 1, ndo->ndo_snapend)) in isis_print()
2788 if (!print_unknown_data(ndo, tptr + 1, "\n\t\t ", tlv_len - 1)) in isis_print()
2801 tmp--; in isis_print()
2803 if(tmp>sizeof(tlv_ptp_adj->extd_local_circuit_id)) { in isis_print()
2804 ND_TCHECK(tlv_ptp_adj->extd_local_circuit_id); in isis_print()
2805 ND_PRINT((ndo, "\n\t Extended Local circuit-ID: 0x%08x", in isis_print()
2806 EXTRACT_32BITS(tlv_ptp_adj->extd_local_circuit_id))); in isis_print()
2807 tmp-=sizeof(tlv_ptp_adj->extd_local_circuit_id); in isis_print()
2810 ND_TCHECK2(tlv_ptp_adj->neighbor_sysid, SYSTEM_ID_LEN); in isis_print()
2811 ND_PRINT((ndo, "\n\t Neighbor System-ID: %s", in isis_print()
2812 isis_print_id(tlv_ptp_adj->neighbor_sysid, SYSTEM_ID_LEN))); in isis_print()
2813 tmp-=SYSTEM_ID_LEN; in isis_print()
2815 if(tmp>=sizeof(tlv_ptp_adj->neighbor_extd_local_circuit_id)) { in isis_print()
2816 ND_TCHECK(tlv_ptp_adj->neighbor_extd_local_circuit_id); in isis_print()
2817 ND_PRINT((ndo, "\n\t Neighbor Extended Local circuit-ID: 0x%08x", in isis_print()
2818 EXTRACT_32BITS(tlv_ptp_adj->neighbor_extd_local_circuit_id))); in isis_print()
2831 if (tmp>1) /* further NPLIDs ? - put comma */ in isis_print()
2834 tmp--; in isis_print()
2846 tmp = tmp-2; in isis_print()
2864 tmp = tmp-2; in isis_print()
2880 ND_PRINT((ndo, "\n\t IPv4 interface address: %s", ipaddr_string(ndo, tptr))); in isis_print()
2882 tmp -= sizeof(struct in_addr); in isis_print()
2888 if (fn_printzp(ndo, tptr, tmp, ndo->ndo_snapend)) in isis_print()
2898 tmp-=(NODE_ID_LEN); in isis_print()
2904 tmp--; in isis_print()
2909 ND_PRINT((ndo, "\n\t IPv4 interface address: %s", ipaddr_string(ndo, tptr))); in isis_print()
2911 tmp-=sizeof(struct in_addr); in isis_print()
2916 ND_PRINT((ndo, "\n\t IPv4 neighbor address: %s", ipaddr_string(ndo, tptr))); in isis_print()
2918 tmp-=sizeof(struct in_addr); in isis_print()
2922 ND_PRINT((ndo, "\n\t Link-ID: 0x%08x", EXTRACT_32BITS(tptr))); in isis_print()
2924 tmp-=4; in isis_print()
2931 ND_TCHECK((tlv_lsp->lsp_id)[LSP_ID_LEN-1]); in isis_print()
2932 ND_PRINT((ndo, "\n\t lsp-id: %s", in isis_print()
2933 isis_print_id(tlv_lsp->lsp_id, LSP_ID_LEN))); in isis_print()
2934 ND_TCHECK2(tlv_lsp->sequence_number, 4); in isis_print()
2935 ND_PRINT((ndo, ", seq: 0x%08x", EXTRACT_32BITS(tlv_lsp->sequence_number))); in isis_print()
2936 ND_TCHECK2(tlv_lsp->remaining_lifetime, 2); in isis_print()
2937 ND_PRINT((ndo, ", lifetime: %5ds", EXTRACT_16BITS(tlv_lsp->remaining_lifetime))); in isis_print()
2938 ND_TCHECK2(tlv_lsp->checksum, 2); in isis_print()
2939 ND_PRINT((ndo, ", chksum: 0x%04x", EXTRACT_16BITS(tlv_lsp->checksum))); in isis_print()
2940 tmp-=sizeof(struct isis_tlv_lsp); in isis_print()
2951 * most likely a HMAC-MD5 TLV is also present and in isis_print()
2955 osi_print_cksum(ndo, optr, EXTRACT_16BITS(tptr), tptr-optr, in isis_print()
2962 ND_PRINT((ndo, "\n\t Purge Originator System-ID: %s", in isis_print()
2968 ND_PRINT((ndo, "\n\t Received from System-ID: %s", in isis_print()
2978 something broken -> so decode down until length is 1 */ in isis_print()
2984 tmp-=mt_len; in isis_print()
2986 ND_PRINT((ndo, "\n\t invalid MT-ID")); in isis_print()
3000 tmp-=ISIS_TLV_RESTART_SIGNALING_FLAGLEN; in isis_print()
3012 tmp-=ISIS_TLV_RESTART_SIGNALING_HOLDTIMELEN; in isis_print()
3025 ND_PRINT((ndo, "\n\t Inter-Domain Information Type: %s", in isis_print()
3037 if (!print_unknown_data(ndo, tptr, "\n\t ", tlv_len - 1)) in isis_print()
3055 tmp-=SYSTEM_ID_LEN; in isis_print()
3066 tmp-=sizeof(struct isis_metric_block); in isis_print()
3075 tmp--; in isis_print()
3082 tmp-=prefix_len/2; in isis_print()
3102 tmp-=3; in isis_print()
3109 * you are welcome to contribute code ;-) in isis_print()
3119 if (ndo->ndo_vflag <= 1) { in isis_print()
3126 if (ndo->ndo_vflag> 1) { in isis_print()
3132 packet_len -= tlv_len; in isis_print()
3181 * c-style: whitesmith
3182 * c-basic-offset: 8