summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_evpn.c7
-rw-r--r--doc/user/overview.rst2
-rw-r--r--isisd/isis_northbound.c41
-rw-r--r--vrrpd/vrrp.c20
4 files changed, 27 insertions, 43 deletions
diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c
index 3f2f11dbe2..07d3f7b31e 100644
--- a/bgpd/bgp_evpn.c
+++ b/bgpd/bgp_evpn.c
@@ -2608,9 +2608,10 @@ static int install_evpn_route_entry(struct bgp *bgp, struct bgpevpn *vpn,
&& (struct bgp_path_info *)pi->extra->parent == parent_pi)
break;
- if (!pi)
- pi = bgp_create_evpn_bgp_path_info(parent_pi, rn);
- else {
+ if (!pi) {
+ /* Create an info */
+ (void)bgp_create_evpn_bgp_path_info(parent_pi, rn);
+ } else {
if (attrhash_cmp(pi->attr, parent_pi->attr)
&& !CHECK_FLAG(pi->flags, BGP_PATH_REMOVED)) {
bgp_unlock_node(rn);
diff --git a/doc/user/overview.rst b/doc/user/overview.rst
index 5f9a7b937e..24d9ece93b 100644
--- a/doc/user/overview.rst
+++ b/doc/user/overview.rst
@@ -230,6 +230,8 @@ features with system dependencies are included here.
+-----------------------------------+----------------+--------------+------------+------------+------------+
| EVPN BUM Forwarding | :mark:`≥5.0` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
+-----------------------------------+----------------+--------------+------------+------------+------------+
+| `vrrpd` (VRRP) | :mark:`≥5.1` | :mark:`N` | :mark:`N` | :mark:`N` | :mark:`N` |
++-----------------------------------+----------------+--------------+------------+------------+------------+
The indicators have the following semantics:
diff --git a/isisd/isis_northbound.c b/isisd/isis_northbound.c
index 1e21efa7ce..97b7ae4f7e 100644
--- a/isisd/isis_northbound.c
+++ b/isisd/isis_northbound.c
@@ -1418,29 +1418,12 @@ static int isis_instance_mpls_te_create(enum nb_event event,
area->mta->status = enable;
}
- /*
- * Following code is intended to handle two cases;
- *
- * 1) MPLS-TE was disabled at startup time, but now become enabled.
- * In this case, we must enable MPLS-TE Circuit regarding interface
- * MPLS_TE flag
- * 2) MPLS-TE was once enabled then disabled, and now enabled again.
- */
- for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) {
- if (circuit->ext == NULL)
- continue;
-
- if (!IS_EXT_TE(circuit->ext)
- && HAS_LINK_PARAMS(circuit->interface))
- isis_link_params_update(circuit, circuit->interface);
- else
- continue;
+ /* Update Extended TLVs according to Interface link parameters */
+ for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit))
+ isis_link_params_update(circuit, circuit->interface);
- /* Reoriginate STD_TE & GMPLS circuits */
- if (circuit->area)
- lsp_regenerate_schedule(circuit->area, circuit->is_type,
- 0);
- }
+ /* Reoriginate STD_TE & GMPLS circuits */
+ lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
@@ -1473,13 +1456,11 @@ static int isis_instance_mpls_te_destroy(enum nb_event event,
circuit->ext->status = EXT_LAN_ADJ_SID;
else
circuit->ext->status = 0;
-
- /* Re-originate circuit without STD_TE & GMPLS parameters */
- if (circuit->area)
- lsp_regenerate_schedule(circuit->area, circuit->is_type,
- 0);
}
+ /* Reoriginate STD_TE & GMPLS circuits */
+ lsp_regenerate_schedule(area, area->is_type, 0);
+
zlog_debug("ISIS-TE(%s): Disabled MPLS Traffic Engineering",
area->area_tag);
@@ -1509,8 +1490,7 @@ static int isis_instance_mpls_te_router_address_modify(enum nb_event event,
area->mta->router_id.s_addr = value.s_addr;
/* And re-schedule LSP update */
- if (listcount(area->area_addrs) > 0)
- lsp_regenerate_schedule(area, area->is_type, 0);
+ lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
@@ -1532,8 +1512,7 @@ static int isis_instance_mpls_te_router_address_destroy(enum nb_event event,
area->mta->router_id.s_addr = INADDR_ANY;
/* And re-schedule LSP update */
- if (listcount(area->area_addrs) > 0)
- lsp_regenerate_schedule(area, area->is_type, 0);
+ lsp_regenerate_schedule(area, area->is_type, 0);
return NB_OK;
}
diff --git a/vrrpd/vrrp.c b/vrrpd/vrrp.c
index 819a06e99a..54089b3612 100644
--- a/vrrpd/vrrp.c
+++ b/vrrpd/vrrp.c
@@ -281,7 +281,7 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
{
struct vrrp_router *r;
bool start;
- const char *whynot = NULL;
+ const char *whynot;
if (vr->shutdown || vr->ifp == NULL)
return;
@@ -289,27 +289,28 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
r = vr->v4;
/* Must not already be started */
start = r->fsm.state == VRRP_STATE_INITIALIZE;
+ whynot = NULL;
/* Must have a parent interface */
start = start && (vr->ifp != NULL);
- whynot = (!start && !whynot) ? "No base interface" : NULL;
+ whynot = (!start && !whynot) ? "No base interface" : whynot;
#if 0
/* Parent interface must be up */
start = start && if_is_operative(vr->ifp);
#endif
/* Parent interface must have at least one v4 */
start = start && vr->ifp->connected->count > 1;
- whynot = (!start && !whynot) ? "No primary IPv4 address" : NULL;
+ whynot = (!start && !whynot) ? "No primary IPv4 address" : whynot;
/* Must have a macvlan interface */
start = start && (r->mvl_ifp != NULL);
- whynot = (!start && !whynot) ? "No VRRP interface" : NULL;
+ whynot = (!start && !whynot) ? "No VRRP interface" : whynot;
#if 0
/* Macvlan interface must be admin up */
start = start && CHECK_FLAG(r->mvl_ifp->flags, IFF_UP);
#endif
/* Must have at least one VIP configured */
start = start && r->addrs->count > 0;
- whynot =
- (!start && !whynot) ? "No Virtual IP address configured" : NULL;
+ whynot = (!start && !whynot) ? "No Virtual IP address configured"
+ : whynot;
if (start)
vrrp_event(r, VRRP_EVENT_STARTUP);
else if (whynot)
@@ -320,19 +321,20 @@ void vrrp_check_start(struct vrrp_vrouter *vr)
r = vr->v6;
/* Must not already be started */
start = r->fsm.state == VRRP_STATE_INITIALIZE;
+ whynot = NULL;
/* Must not be v2 */
start = start && vr->version != 2;
- whynot = (!start && !whynot) ? "VRRPv2 does not support v6" : NULL;
+ whynot = (!start && !whynot) ? "VRRPv2 does not support v6" : whynot;
/* Must have a parent interface */
start = start && (vr->ifp != NULL);
- whynot = (!start && !whynot) ? "No base interface" : NULL;
+ whynot = (!start && !whynot) ? "No base interface" : whynot;
#if 0
/* Parent interface must be up */
start = start && if_is_operative(vr->ifp);
#endif
/* Must have a macvlan interface */
start = start && (r->mvl_ifp != NULL);
- whynot = (!start && !whynot) ? "No VRRP interface" : NULL;
+ whynot = (!start && !whynot) ? "No VRRP interface" : whynot;
#if 0
/* Macvlan interface must be admin up */
start = start && CHECK_FLAG(r->mvl_ifp->flags, IFF_UP);