isis_circuit_if_bind(circuit, ifp);
+ circuit->ip_addrs = list_new();
+ circuit->ipv6_link = list_new();
+ circuit->ipv6_non_link = list_new();
+
if (ifp->ifindex != IFINDEX_INTERNAL)
isis_circuit_enable(circuit);
isis_lfa_excluded_ifaces_clear(circuit, ISIS_LEVEL1);
isis_lfa_excluded_ifaces_clear(circuit, ISIS_LEVEL2);
+ list_delete(&circuit->ip_addrs);
+ list_delete(&circuit->ipv6_link);
+ list_delete(&circuit->ipv6_non_link);
+
XFREE(MTYPE_TMP, circuit->bfd_config.profile);
XFREE(MTYPE_ISIS_CIRCUIT, circuit->tag);
circuit->circ_type = CIRCUIT_T_UNKNOWN;
}
- circuit->ip_addrs = list_new();
- circuit->ipv6_link = list_new();
- circuit->ipv6_non_link = list_new();
-
for (ALL_LIST_ELEMENTS(ifp->connected, node, nnode, conn))
isis_circuit_add_addr(circuit, conn);
for (ALL_LIST_ELEMENTS(ifp->connected, node, nnode, conn))
isis_circuit_del_addr(circuit, conn);
- if (circuit->ip_addrs) {
- assert(listcount(circuit->ip_addrs) == 0);
- list_delete(&circuit->ip_addrs);
- }
-
- if (circuit->ipv6_link) {
- assert(listcount(circuit->ipv6_link) == 0);
- list_delete(&circuit->ipv6_link);
- }
-
- if (circuit->ipv6_non_link) {
- assert(listcount(circuit->ipv6_non_link) == 0);
- list_delete(&circuit->ipv6_non_link);
- }
-
circuit->circ_type = CIRCUIT_T_UNKNOWN;
}
json_object_array_add(levels_json, level_json);
}
- if (circuit->ip_addrs && listcount(circuit->ip_addrs) > 0) {
+ if (listcount(circuit->ip_addrs) > 0) {
ipv4_addr_json = json_object_new_object();
json_object_object_add(iface_json, "ip-prefix",
ipv4_addr_json);
buf_prx);
}
}
- if (circuit->ipv6_link && listcount(circuit->ipv6_link) > 0) {
+ if (listcount(circuit->ipv6_link) > 0) {
ipv6_link_json = json_object_new_object();
json_object_object_add(iface_json, "ipv6-link-locals",
ipv6_link_json);
buf_prx);
}
}
- if (circuit->ipv6_non_link &&
- listcount(circuit->ipv6_non_link) > 0) {
+ if (listcount(circuit->ipv6_non_link) > 0) {
ipv6_non_link_json = json_object_new_object();
json_object_object_add(iface_json, "ipv6-prefixes",
ipv6_non_link_json);
vty_out(vty, "\n");
}
}
- if (circuit->ip_addrs && listcount(circuit->ip_addrs) > 0) {
+ if (listcount(circuit->ip_addrs) > 0) {
vty_out(vty, " IP Prefix(es):\n");
for (ALL_LIST_ELEMENTS_RO(circuit->ip_addrs, node,
ip_addr))
vty_out(vty, " %pFX\n", ip_addr);
}
- if (circuit->ipv6_link && listcount(circuit->ipv6_link) > 0) {
+ if (listcount(circuit->ipv6_link) > 0) {
vty_out(vty, " IPv6 Link-Locals:\n");
for (ALL_LIST_ELEMENTS_RO(circuit->ipv6_link, node,
ip_addr))
vty_out(vty, " %pFX\n", ip_addr);
}
- if (circuit->ipv6_non_link
- && listcount(circuit->ipv6_non_link) > 0) {
+ if (listcount(circuit->ipv6_non_link) > 0) {
vty_out(vty, " IPv6 Prefixes:\n");
for (ALL_LIST_ELEMENTS_RO(circuit->ipv6_non_link, node,
ip_addr))
iih.v4_usable = (fabricd_ip_addrs(circuit)
&& iih.tlvs->ipv4_address.count);
- iih.v6_usable = (circuit->ipv6_link && listcount(circuit->ipv6_link)
- && iih.tlvs->ipv6_address.count);
+ iih.v6_usable =
+ (listcount(circuit->ipv6_link) && iih.tlvs->ipv6_address.count);
if (!iih.v4_usable && !iih.v6_usable) {
if (IS_DEBUG_ADJ_PACKETS) {
isis_tlvs_add_ipv4_addresses(tlvs, circuit_ip_addrs);
}
- if (circuit->ipv6_router && circuit->ipv6_link)
+ if (circuit->ipv6_router)
isis_tlvs_add_ipv6_addresses(tlvs, circuit->ipv6_link);
/* RFC6119 section 4 define TLV 233 to provide Global IPv6 address */
- if (circuit->ipv6_router && circuit->ipv6_non_link)
+ if (circuit->ipv6_router)
isis_tlvs_add_global_ipv6_addresses(tlvs,
circuit->ipv6_non_link);
UNSET_SUBTLV(ext, EXT_ADM_GRP);
/* If known, register local IPv4 addr from ip_addr list */
- if (circuit->ip_addrs != NULL
- && listcount(circuit->ip_addrs) != 0) {
+ if (listcount(circuit->ip_addrs) != 0) {
addr = (struct prefix_ipv4 *)listgetdata(
(struct listnode *)listhead(circuit->ip_addrs));
IPV4_ADDR_COPY(&ext->local_addr, &addr->prefix);
UNSET_SUBTLV(ext, EXT_LOCAL_ADDR);
/* If known, register local IPv6 addr from ip_addr list */
- if (circuit->ipv6_non_link != NULL
- && listcount(circuit->ipv6_non_link) != 0) {
+ if (listcount(circuit->ipv6_non_link) != 0) {
addr6 = (struct prefix_ipv6 *)listgetdata(
(struct listnode *)listhead(
circuit->ipv6_non_link));