summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_conditional_adv.c1
-rw-r--r--bgpd/bgp_evpn.c5
-rw-r--r--bgpd/bgp_evpn_mh.c3
-rw-r--r--bgpd/bgp_route.c3
-rw-r--r--bgpd/bgp_updgrp_adv.c4
-rw-r--r--doc/user/bgp.rst4
-rw-r--r--lib/skiplist.c6
7 files changed, 19 insertions, 7 deletions
diff --git a/bgpd/bgp_conditional_adv.c b/bgpd/bgp_conditional_adv.c
index 0731adcb84..ca67d49c8a 100644
--- a/bgpd/bgp_conditional_adv.c
+++ b/bgpd/bgp_conditional_adv.c
@@ -51,6 +51,7 @@ bgp_check_rmap_prefixes_in_bgp_table(struct bgp_table *table,
if (ret != RMAP_PERMITMATCH)
bgp_attr_flush(&dummy_attr);
else {
+ bgp_dest_unlock_node(dest);
if (BGP_DEBUG(update, UPDATE_OUT))
zlog_debug(
"%s: Condition map routes present in BGP table",
diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c
index 67d0a95cb6..2fae10e24c 100644
--- a/bgpd/bgp_evpn.c
+++ b/bgpd/bgp_evpn.c
@@ -2930,6 +2930,8 @@ static int install_uninstall_routes_for_vrf(struct bgp *bgp_vrf, int install)
evp,
vrf_id_to_name(
bgp_vrf->vrf_id));
+ bgp_dest_unlock_node(rd_dest);
+ bgp_dest_unlock_node(dest);
return ret;
}
}
@@ -3009,6 +3011,9 @@ static int install_uninstall_routes_for_vni(struct bgp *bgp,
? "MACIP"
: "IMET",
vpn->vni);
+
+ bgp_dest_unlock_node(rd_dest);
+ bgp_dest_unlock_node(dest);
return ret;
}
}
diff --git a/bgpd/bgp_evpn_mh.c b/bgpd/bgp_evpn_mh.c
index 021e811147..bf9a2f849a 100644
--- a/bgpd/bgp_evpn_mh.c
+++ b/bgpd/bgp_evpn_mh.c
@@ -763,6 +763,9 @@ static int bgp_evpn_type4_remote_routes_import(struct bgp *bgp,
install ? "install"
: "uninstall",
evp, es->esi_str);
+
+ bgp_dest_unlock_node(rd_dest);
+ bgp_dest_unlock_node(dest);
return ret;
}
}
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 9873057fa2..5e7bf3f626 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -3538,6 +3538,9 @@ int bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id,
else
has_valid_label = bgp_is_valid_label(label);
+ if (has_valid_label)
+ assert(label != NULL);
+
/* The flag BGP_NODE_FIB_INSTALL_PENDING is for the following
* condition :
* Suppress fib is enabled
diff --git a/bgpd/bgp_updgrp_adv.c b/bgpd/bgp_updgrp_adv.c
index a03232466c..6793fa1ca3 100644
--- a/bgpd/bgp_updgrp_adv.c
+++ b/bgpd/bgp_updgrp_adv.c
@@ -842,8 +842,10 @@ void subgroup_default_originate(struct update_subgroup *subgrp, int withdraw)
break;
}
}
- if (ret == RMAP_PERMITMATCH)
+ if (ret == RMAP_PERMITMATCH) {
+ bgp_dest_unlock_node(dest);
break;
+ }
}
bgp->peer_self->rmap_type = 0;
diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
index 00ae4c082e..4f036ee709 100644
--- a/doc/user/bgp.rst
+++ b/doc/user/bgp.rst
@@ -962,7 +962,7 @@ Networks
traditional did not check for existence. For versions 7.4 and beyond
both traditional and datacenter the network must exist.
-.. _ipv6-support:
+.. _bgp-ipv6-support:
IPv6 Support
------------
@@ -970,7 +970,7 @@ IPv6 Support
.. index:: [no] neighbor A.B.C.D activate
.. clicmd:: [no] neighbor A.B.C.D activate
- This coonfiguration modifies whether to enable an address family for a
+ This configuration modifies whether to enable an address family for a
specific neighbor. By default only the IPv4 unicast address family is
enabled.
diff --git a/lib/skiplist.c b/lib/skiplist.c
index 2bef18f525..b79dfa6772 100644
--- a/lib/skiplist.c
+++ b/lib/skiplist.c
@@ -74,7 +74,6 @@ DEFINE_MTYPE_STATIC(LIB, SKIP_LIST_NODE, "Skip Node")
static int randomsLeft;
static int randomBits;
-static struct skiplist *skiplist_last_created; /* debugging hack */
#if 1
#define CHECKLAST(sl) \
@@ -150,8 +149,6 @@ struct skiplist *skiplist_new(int flags,
if (del)
new->del = del;
- skiplist_last_created = new; /* debug */
-
return new;
}
@@ -586,7 +583,8 @@ void skiplist_debug(struct vty *vty, struct skiplist *l)
int i;
if (!l)
- l = skiplist_last_created;
+ return;
+
vty_out(vty, "Skiplist %p has max level %d\n", l, l->level);
for (i = l->level; i >= 0; --i)
vty_out(vty, " @%d: %ld\n", i,