struct prefix prefix;
} N;
- u_int32_t d_N; /* d(N) Distance from this IS */
- u_int16_t depth; /* The depth in the imaginary tree */
- struct list *Adj_N; /* {Adj(N)} next hop or neighbor list */
- struct list *parents; /* list of parents for ECMP */
+ u_int32_t d_N; /* d(N) Distance from this IS */
+ u_int16_t depth; /* The depth in the imaginary tree */
+ struct list *Adj_N; /* {Adj(N)} next hop or neighbor list */
+ struct list *parents; /* list of parents for ECMP */
uint64_t insert_counter;
};
struct isis_spftree {
struct isis_vertex_queue paths; /* the SPT */
struct isis_vertex_queue tents; /* TENT */
- struct isis_area *area; /* back pointer to area */
- unsigned int runcount; /* number of runs since uptime */
- time_t last_run_timestamp; /* last run timestamp as wall time for
- display */
- time_t last_run_monotime; /* last run as monotime for scheduling */
- time_t last_run_duration; /* last run duration in msec */
+ struct isis_area *area; /* back pointer to area */
+ unsigned int runcount; /* number of runs since uptime */
+ time_t last_run_timestamp; /* last run timestamp as wall time for display */
+ time_t last_run_monotime; /* last run as monotime for scheduling */
+ time_t last_run_duration; /* last run duration in msec */
uint16_t mtid;
int family;
return ISIS_OK;
/* RFC3787 section 4 SHOULD ignore overload bit in pseudo LSPs */
- bool no_overload =
- (pseudo_lsp || (spftree->mtid == ISIS_MT_IPV4_UNICAST
+ bool no_overload = (pseudo_lsp
+ || (spftree->mtid == ISIS_MT_IPV4_UNICAST
&& !ISIS_MASK_LSP_OL_BIT(lsp->hdr.lsp_bits))
- || (mt_router_info && !mt_router_info->overload));
+ || (mt_router_info && !mt_router_info->overload));
lspfragloop:
if (lsp->hdr.seqno == 0) {
/* wait configured min_spf_interval before doing the SPF */
long timer;
if (diff >= area->min_spf_interval[level - 1]) {
- /* Last run is more than min interval ago, schedule immediate
- * run */
+ /* Last run is more than min interval ago, schedule immediate run */
timer = 0;
} else {
timer = area->min_spf_interval[level - 1] - diff;
continue;
if (area->ip_circuits > 0 && area->spftree[level - 1]
- && isis_vertex_queue_count(
- &area->spftree[level - 1]->paths)
- > 0) {
+ && isis_vertex_queue_count(&area->spftree[level - 1]->paths) > 0) {
vty_out(vty,
"IS-IS paths to level-%d routers that speak IP\n",
level);
vty_out(vty, "\n");
}
if (area->ipv6_circuits > 0 && area->spftree6[level - 1]
- && isis_vertex_queue_count(
- &area->spftree6[level - 1]->paths)
- > 0) {
+ && isis_vertex_queue_count(&area->spftree6[level - 1]->paths) > 0) {
vty_out(vty,
"IS-IS paths to level-%d routers that speak IPv6\n",
level);
A = (u_int32_t)ntohl(tlv->low) & TE_EXT_ANORMAL;
high = (u_int32_t)ntohl(tlv->high) & TE_EXT_MASK;
- sbuf_push(buf, indent, "%s Min/Max Link Delay: %" PRIu32 " / %" PRIu32
- " (micro-sec)\n",
+ sbuf_push(buf, indent, "%s Min/Max Link Delay: %" PRIu32 " / %" PRIu32 " (micro-sec)\n",
A ? "Anomalous" : "Normal", low, high);
return (SUBTLV_HDR_SIZE + SUBTLV_DEF_SIZE);
}
/* Main Show function */
-void mpls_te_print_detail(struct sbuf *buf, int indent, uint8_t *subtlvs,
- uint8_t subtlv_len)
+void mpls_te_print_detail(struct sbuf *buf, int indent,
+ uint8_t *subtlvs, uint8_t subtlv_len)
{
struct subtlv_header *tlvh = (struct subtlv_header *)subtlvs;
uint16_t sum = 0;
for (; sum < subtlv_len; tlvh = SUBTLV_HDR_NEXT(tlvh)) {
switch (tlvh->type) {
case TE_SUBTLV_ADMIN_GRP:
- sum += print_subtlv_admin_grp(
- buf, indent,
+ sum += print_subtlv_admin_grp(buf, indent,
(struct te_subtlv_admin_grp *)tlvh);
break;
case TE_SUBTLV_LLRI:
(struct te_subtlv_llri *)tlvh);
break;
case TE_SUBTLV_LOCAL_IPADDR:
- sum += print_subtlv_local_ipaddr(
- buf, indent,
+ sum += print_subtlv_local_ipaddr(buf, indent,
(struct te_subtlv_local_ipaddr *)tlvh);
break;
case TE_SUBTLV_RMT_IPADDR:
- sum += print_subtlv_rmt_ipaddr(
- buf, indent,
+ sum += print_subtlv_rmt_ipaddr(buf, indent,
(struct te_subtlv_rmt_ipaddr *)tlvh);
break;
case TE_SUBTLV_MAX_BW:
- sum += print_subtlv_max_bw(
- buf, indent, (struct te_subtlv_max_bw *)tlvh);
+ sum += print_subtlv_max_bw(buf, indent,
+ (struct te_subtlv_max_bw *)tlvh);
break;
case TE_SUBTLV_MAX_RSV_BW:
- sum += print_subtlv_max_rsv_bw(
- buf, indent,
+ sum += print_subtlv_max_rsv_bw(buf, indent,
(struct te_subtlv_max_rsv_bw *)tlvh);
break;
case TE_SUBTLV_UNRSV_BW:
- sum += print_subtlv_unrsv_bw(
- buf, indent, (struct te_subtlv_unrsv_bw *)tlvh);
+ sum += print_subtlv_unrsv_bw(buf, indent,
+ (struct te_subtlv_unrsv_bw *)tlvh);
break;
case TE_SUBTLV_TE_METRIC:
- sum += print_subtlv_te_metric(
- buf, indent,
+ sum += print_subtlv_te_metric(buf, indent,
(struct te_subtlv_te_metric *)tlvh);
break;
case TE_SUBTLV_RAS:
(struct te_subtlv_rip *)tlvh);
break;
case TE_SUBTLV_AV_DELAY:
- sum += print_subtlv_av_delay(
- buf, indent, (struct te_subtlv_av_delay *)tlvh);
+ sum += print_subtlv_av_delay(buf, indent,
+ (struct te_subtlv_av_delay *)tlvh);
break;
case TE_SUBTLV_MM_DELAY:
- sum += print_subtlv_mm_delay(
- buf, indent, (struct te_subtlv_mm_delay *)tlvh);
+ sum += print_subtlv_mm_delay(buf, indent,
+ (struct te_subtlv_mm_delay *)tlvh);
break;
case TE_SUBTLV_DELAY_VAR:
- sum += print_subtlv_delay_var(
- buf, indent,
+ sum += print_subtlv_delay_var(buf, indent,
(struct te_subtlv_delay_var *)tlvh);
break;
case TE_SUBTLV_PKT_LOSS:
- sum += print_subtlv_pkt_loss(
- buf, indent, (struct te_subtlv_pkt_loss *)tlvh);
+ sum += print_subtlv_pkt_loss(buf, indent,
+ (struct te_subtlv_pkt_loss *)tlvh);
break;
case TE_SUBTLV_RES_BW:
- sum += print_subtlv_res_bw(
- buf, indent, (struct te_subtlv_res_bw *)tlvh);
+ sum += print_subtlv_res_bw(buf, indent,
+ (struct te_subtlv_res_bw *)tlvh);
break;
case TE_SUBTLV_AVA_BW:
- sum += print_subtlv_ava_bw(
- buf, indent, (struct te_subtlv_ava_bw *)tlvh);
+ sum += print_subtlv_ava_bw(buf, indent,
+ (struct te_subtlv_ava_bw *)tlvh);
break;
case TE_SUBTLV_USE_BW:
- sum += print_subtlv_use_bw(
- buf, indent, (struct te_subtlv_use_bw *)tlvh);
+ sum += print_subtlv_use_bw(buf, indent,
+ (struct te_subtlv_use_bw *)tlvh);
break;
default:
sum += print_unknown_tlv(buf, indent, tlvh);
sbuf_push(log, indent, "Unpacking IPv6 Source Prefix Sub-TLV...\n");
if (tlv_len < 1) {
- sbuf_push(
- log, indent,
- "Not enough data left. (expected 1 or more bytes, got %" PRIu8
- ")\n",
- tlv_len);
+ sbuf_push(log, indent,
+ "Not enough data left. (expected 1 or more bytes, got %" PRIu8 ")\n",
+ tlv_len);
return 1;
}
(mtid == ISIS_MT_IPV4_UNICAST) ? "extended" : "mt");
if (len < 11) {
- sbuf_push(
- log, indent,
- "Not enough data left. (expected 11 or more bytes, got %" PRIu8
- ")\n",
- len);
+ sbuf_push(log, indent,
+ "Not enough data left. (expected 11 or more bytes, got %"
+ PRIu8 ")\n",
+ len);
goto out;
}
struct isis_mt_router_info *info = (struct isis_mt_router_info *)i;
sbuf_push(buf, indent, "MT Router Info: %s%s%s\n",
- isis_mtid2str(info->mtid), info->overload ? " Overload" : "",
+ isis_mtid2str(info->mtid),
+ info->overload ? " Overload" : "",
info->attached ? " Attached" : "");
}
sbuf_push(buf, indent, "%s IP Reachability: %s (Metric: %u)%s",
(mtid == ISIS_MT_IPV4_UNICAST) ? "Extended" : "MT",
- prefix2str(&r->prefix, prefixbuf, sizeof(prefixbuf)),
- r->metric, r->down ? " Down" : "");
+ prefix2str(&r->prefix, prefixbuf, sizeof(prefixbuf)), r->metric,
+ r->down ? " Down" : "");
if (mtid != ISIS_MT_IPV4_UNICAST)
sbuf_push(buf, 0, " %s", isis_mtid2str(mtid));
sbuf_push(buf, 0, "\n");
consume = 5;
if (len < consume) {
- sbuf_push(
- log, indent,
- "Not enough data left. (expected 5 or more bytes, got %" PRIu8
- ")\n",
- len);
+ sbuf_push(log, indent,
+ "Not enough data left. (expected 5 or more bytes, got %" PRIu8 ")\n",
+ len);
goto out;
}
consume += PSIZE(rv->prefix.prefixlen);
if (len < consume) {
- sbuf_push(
- log, indent,
- "Expected %u bytes of prefix, but only %u bytes available.\n",
- PSIZE(rv->prefix.prefixlen), len - 5);
+ sbuf_push(log, indent,
+ "Expected %u bytes of prefix, but only %u bytes available.\n",
+ PSIZE(rv->prefix.prefixlen), len - 5);
goto out;
}
stream_get(&rv->prefix.prefix.s_addr, s, PSIZE(rv->prefix.prefixlen));
if (control & ISIS_EXTENDED_IP_REACH_SUBTLV) {
consume += 1;
if (len < consume) {
- sbuf_push(
- log, indent,
- "Expected 1 byte of subtlv len, but no more data present.\n");
+ sbuf_push(log, indent,
+ "Expected 1 byte of subtlv len, but no more data present.\n");
goto out;
}
subtlv_len = stream_getc(s);
if (!subtlv_len) {
- sbuf_push(
- log, indent + 2,
- " WARNING: subtlv bit is set, but there are no subtlvs.\n");
+ sbuf_push(log, indent + 2,
+ " WARNING: subtlv bit is set, but there are no subtlvs.\n");
}
consume += subtlv_len;
if (len < consume) {
- sbuf_push(
- log, indent,
- "Expected %" PRIu8
- " bytes of subtlvs, but only %u bytes available.\n",
- subtlv_len,
- len - 6 - PSIZE(rv->prefix.prefixlen));
+ sbuf_push(log, indent,
+ "Expected %" PRIu8
+ " bytes of subtlvs, but only %u bytes available.\n",
+ subtlv_len,
+ len - 6 - PSIZE(rv->prefix.prefixlen));
goto out;
}
sbuf_push(log, indent, "Skipping %" PRIu8 " bytes of subvls",
sbuf_push(buf, indent, "%sIPv6 Reachability: %s (Metric: %u)%s%s",
(mtid == ISIS_MT_IPV4_UNICAST) ? "" : "MT ",
prefix2str(&r->prefix, prefixbuf, sizeof(prefixbuf)),
- r->metric, r->down ? " Down" : "",
+ r->metric,
+ r->down ? " Down" : "",
r->external ? " External" : "");
if (mtid != ISIS_MT_IPV4_UNICAST)
sbuf_push(buf, 0, " %s", isis_mtid2str(mtid));
(mtid == ISIS_MT_IPV4_UNICAST) ? "" : "mt ");
consume = 6;
if (len < consume) {
- sbuf_push(
- log, indent,
- "Not enough data left. (expected 6 or more bytes, got %" PRIu8
- ")\n",
- len);
+ sbuf_push(log, indent,
+ "Not enough data left. (expected 6 or more bytes, got %"
+ PRIu8 ")\n",
+ len);
goto out;
}
consume += PSIZE(rv->prefix.prefixlen);
if (len < consume) {
- sbuf_push(
- log, indent,
- "Expected %u bytes of prefix, but only %u bytes available.\n",
- PSIZE(rv->prefix.prefixlen), len - 6);
+ sbuf_push(log, indent,
+ "Expected %u bytes of prefix, but only %u bytes available.\n",
+ PSIZE(rv->prefix.prefixlen), len - 6);
goto out;
}
stream_get(&rv->prefix.prefix.s6_addr, s, PSIZE(rv->prefix.prefixlen));
if (control & ISIS_IPV6_REACH_SUBTLV) {
consume += 1;
if (len < consume) {
- sbuf_push(
- log, indent,
- "Expected 1 byte of subtlv len, but no more data persent.\n");
+ sbuf_push(log, indent,
+ "Expected 1 byte of subtlv len, but no more data persent.\n");
goto out;
}
subtlv_len = stream_getc(s);
if (!subtlv_len) {
- sbuf_push(
- log, indent + 2,
- " WARNING: subtlv bit set, but there are no subtlvs.\n");
+ sbuf_push(log, indent + 2,
+ " WARNING: subtlv bit set, but there are no subtlvs.\n");
}
consume += subtlv_len;
if (len < consume) {
- sbuf_push(
- log, indent,
- "Expected %" PRIu8
- " bytes of subtlvs, but only %u bytes available.\n",
- subtlv_len,
- len - 6 - PSIZE(rv->prefix.prefixlen));
+ sbuf_push(log, indent,
+ "Expected %" PRIu8
+ " bytes of subtlvs, but only %u bytes available.\n",
+ subtlv_len,
+ len - 6 - PSIZE(rv->prefix.prefixlen));
goto out;
}
return 1;
}
-static void add_item_to_fragment(struct isis_item *i,
- struct pack_order_entry *pe,
+static void add_item_to_fragment(struct isis_item *i, struct pack_order_entry *pe,
struct isis_tlvs *fragment_tlvs, uint16_t mtid)
{
struct isis_item_list *l;
if (pe->how_to_pack == ISIS_ITEMS) {
- l = (struct isis_item_list *)(((char *)fragment_tlvs)
- + pe->what_to_pack);
+ l = (struct isis_item_list *)(((char *)fragment_tlvs) + pe->what_to_pack);
} else {
struct isis_mt_item_list *m;
- m = (struct isis_mt_item_list *)(((char *)fragment_tlvs)
- + pe->what_to_pack);
+ m = (struct isis_mt_item_list *)(((char *)fragment_tlvs) + pe->what_to_pack);
l = isis_get_mt_items(m, mtid);
}
tlv_type, tlv_len);
if (avail_len < ((size_t)tlv_len) + 2) {
- sbuf_push(
- log, indent + 2,
- "Available data %zu too short for claimed TLV len %" PRIu8
- ".\n",
- avail_len - 2, tlv_len);
+ sbuf_push(log, indent + 2,
+ "Available data %zu too short for claimed TLV len %" PRIu8 ".\n",
+ avail_len - 2, tlv_len);
return 1;
}
static const struct tlv_ops tlv_##_name_##_ops = { \
.name = _desc_, \
.unpack = unpack_tlv_with_items, \
- \
+ \
.pack_item = pack_item_##_name_, \
.free_item = free_item_##_name_, \
.unpack_item = unpack_item_##_name_, \
SUBTLV_OPS(ipv6_source_prefix, "Sub-TLV 22 IPv6 Source Prefix");
-static const struct tlv_ops *tlv_table[ISIS_CONTEXT_MAX][ISIS_TLV_MAX] =
- {[ISIS_CONTEXT_LSP] =
- {
- [ISIS_TLV_AREA_ADDRESSES] =
- &tlv_area_address_ops,
- [ISIS_TLV_OLDSTYLE_REACH] =
- &tlv_oldstyle_reach_ops,
- [ISIS_TLV_LAN_NEIGHBORS] =
- &tlv_lan_neighbor_ops,
- [ISIS_TLV_LSP_ENTRY] = &tlv_lsp_entry_ops,
- [ISIS_TLV_AUTH] = &tlv_auth_ops,
- [ISIS_TLV_EXTENDED_REACH] =
- &tlv_extended_reach_ops,
- [ISIS_TLV_MT_REACH] = &tlv_extended_reach_ops,
- [ISIS_TLV_OLDSTYLE_IP_REACH] =
- &tlv_oldstyle_ip_reach_ops,
- [ISIS_TLV_PROTOCOLS_SUPPORTED] =
- &tlv_protocols_supported_ops,
- [ISIS_TLV_OLDSTYLE_IP_REACH_EXT] =
- &tlv_oldstyle_ip_reach_ops,
- [ISIS_TLV_IPV4_ADDRESS] =
- &tlv_ipv4_address_ops,
- [ISIS_TLV_TE_ROUTER_ID] =
- &tlv_te_router_id_ops,
- [ISIS_TLV_EXTENDED_IP_REACH] =
- &tlv_extended_ip_reach_ops,
- [ISIS_TLV_MT_IP_REACH] =
- &tlv_extended_ip_reach_ops,
- [ISIS_TLV_DYNAMIC_HOSTNAME] =
- &tlv_dynamic_hostname_ops,
- [ISIS_TLV_MT_ROUTER_INFO] =
- &tlv_mt_router_info_ops,
- [ISIS_TLV_IPV6_ADDRESS] =
- &tlv_ipv6_address_ops,
- [ISIS_TLV_IPV6_REACH] = &tlv_ipv6_reach_ops,
- [ISIS_TLV_MT_IPV6_REACH] = &tlv_ipv6_reach_ops,
- },
- [ISIS_CONTEXT_SUBTLV_NE_REACH] = {},
- [ISIS_CONTEXT_SUBTLV_IP_REACH] = {},
- [ISIS_CONTEXT_SUBTLV_IPV6_REACH] = {
- [ISIS_SUBTLV_IPV6_SOURCE_PREFIX] =
- &subtlv_ipv6_source_prefix_ops,
- }};
+static const struct tlv_ops *tlv_table[ISIS_CONTEXT_MAX][ISIS_TLV_MAX] = {
+ [ISIS_CONTEXT_LSP] = {
+ [ISIS_TLV_AREA_ADDRESSES] = &tlv_area_address_ops,
+ [ISIS_TLV_OLDSTYLE_REACH] = &tlv_oldstyle_reach_ops,
+ [ISIS_TLV_LAN_NEIGHBORS] = &tlv_lan_neighbor_ops,
+ [ISIS_TLV_LSP_ENTRY] = &tlv_lsp_entry_ops,
+ [ISIS_TLV_AUTH] = &tlv_auth_ops,
+ [ISIS_TLV_EXTENDED_REACH] = &tlv_extended_reach_ops,
+ [ISIS_TLV_MT_REACH] = &tlv_extended_reach_ops,
+ [ISIS_TLV_OLDSTYLE_IP_REACH] = &tlv_oldstyle_ip_reach_ops,
+ [ISIS_TLV_PROTOCOLS_SUPPORTED] = &tlv_protocols_supported_ops,
+ [ISIS_TLV_OLDSTYLE_IP_REACH_EXT] = &tlv_oldstyle_ip_reach_ops,
+ [ISIS_TLV_IPV4_ADDRESS] = &tlv_ipv4_address_ops,
+ [ISIS_TLV_TE_ROUTER_ID] = &tlv_te_router_id_ops,
+ [ISIS_TLV_EXTENDED_IP_REACH] = &tlv_extended_ip_reach_ops,
+ [ISIS_TLV_MT_IP_REACH] = &tlv_extended_ip_reach_ops,
+ [ISIS_TLV_DYNAMIC_HOSTNAME] = &tlv_dynamic_hostname_ops,
+ [ISIS_TLV_MT_ROUTER_INFO] = &tlv_mt_router_info_ops,
+ [ISIS_TLV_IPV6_ADDRESS] = &tlv_ipv6_address_ops,
+ [ISIS_TLV_IPV6_REACH] = &tlv_ipv6_reach_ops,
+ [ISIS_TLV_MT_IPV6_REACH] = &tlv_ipv6_reach_ops,
+ },
+ [ISIS_CONTEXT_SUBTLV_NE_REACH] = {},
+ [ISIS_CONTEXT_SUBTLV_IP_REACH] = {},
+ [ISIS_CONTEXT_SUBTLV_IPV6_REACH] = {
+ [ISIS_SUBTLV_IPV6_SOURCE_PREFIX] = &subtlv_ipv6_source_prefix_ops,
+ }
+};
/* Accessor functions */