summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfdd/bfd_packet.c7
-rw-r--r--bfdd/bfdd_vty.c6
-rwxr-xr-xtools/frr-reload.py17
3 files changed, 27 insertions, 3 deletions
diff --git a/bfdd/bfd_packet.c b/bfdd/bfd_packet.c
index 0c72ee7581..5d8bf47fcd 100644
--- a/bfdd/bfd_packet.c
+++ b/bfdd/bfd_packet.c
@@ -1742,9 +1742,10 @@ void bfd_peer_mac_set(int sd, struct bfd_session *bfd,
strlcpy(arpreq_.arp_dev, ifp->name, sizeof(arpreq_.arp_dev));
if (ioctl(sd, SIOCGARP, &arpreq_) < 0) {
- zlog_warn(
- "BFD: getting peer's mac on %s failed error %s",
- ifp->name, strerror(errno));
+ if (bglobal.debug_network)
+ zlog_debug(
+ "BFD: getting peer's mac on %s failed error %s",
+ ifp->name, strerror(errno));
UNSET_FLAG(bfd->flags, BFD_SESS_FLAG_MAC_SET);
memset(bfd->peer_hw_addr, 0, sizeof(bfd->peer_hw_addr));
diff --git a/bfdd/bfdd_vty.c b/bfdd/bfdd_vty.c
index 15444e4e9d..496d5019b5 100644
--- a/bfdd/bfdd_vty.c
+++ b/bfdd/bfdd_vty.c
@@ -213,6 +213,8 @@ static struct json_object *__display_peer_json(struct bfd_session *bs)
uint32_t avg = 0;
uint32_t max = 0;
+ if (bs->key.ifname[0])
+ json_object_string_add(jo, "interface", bs->key.ifname);
json_object_int_add(jo, "id", bs->discrs.my_discr);
json_object_int_add(jo, "remote-id", bs->discrs.remote_discr);
json_object_boolean_add(jo, "passive-mode",
@@ -246,6 +248,10 @@ static struct json_object *__display_peer_json(struct bfd_session *bs)
json_object_string_add(jo, "diagnostic", diag2str(bs->local_diag));
json_object_string_add(jo, "remote-diagnostic",
diag2str(bs->remote_diag));
+ if (CHECK_FLAG(bs->flags, BFD_SESS_FLAG_CONFIG))
+ json_object_string_add(jo, "type", "configured");
+ else
+ json_object_string_add(jo, "type", "dynamic");
json_object_int_add(jo, "receive-interval",
bs->timers.required_min_rx / 1000);
diff --git a/tools/frr-reload.py b/tools/frr-reload.py
index a0ddeb72b1..17bf73316c 100755
--- a/tools/frr-reload.py
+++ b/tools/frr-reload.py
@@ -1567,6 +1567,7 @@ def compare_context_objects(newconf, running):
candidates_to_add = []
delete_bgpd = False
area_stub_no_sum = "area (\S+) stub no-summary"
+ deleted_keychains = []
# Find contexts that are in newconf but not in running
# Find contexts that are in running but not in newconf
@@ -1617,6 +1618,22 @@ def compare_context_objects(newconf, running):
):
continue
+ # Check if key chain is being deleted:
+ # - If it is being deleted then avoid deleting its contexts
+ # - Else delete its configuration without removing the root node
+ elif (
+ running_ctx_keys[0].startswith("key chain ")
+ and len(running_ctx_keys) == 1
+ ):
+ deleted_keychains.append(running_ctx_keys[0])
+ lines_to_del.append((running_ctx_keys, None))
+ elif (
+ running_ctx_keys[0].startswith("key chain ")
+ and len(running_ctx_keys) > 1
+ and running_ctx_keys[0] in deleted_keychains
+ ):
+ continue
+
# Delete an entire vni sub-context under "address-family l2vpn evpn"
elif (
"router bgp" in running_ctx_keys[0]