]> git.proxmox.com Git - mirror_frr.git/commitdiff
Merge pull request #4155 from pguibert6WIND/bfd_increase_config
authorRuss White <russ@riw.us>
Thu, 25 Apr 2019 22:48:35 +0000 (18:48 -0400)
committerGitHub <noreply@github.com>
Thu, 25 Apr 2019 22:48:35 +0000 (18:48 -0400)
bfdd: avoid having bfd config inherited from operation context

bfdd/bfd.h
bfdd/bfdd_vty.c
bfdd/ptm_adapter.c

index 28832e4c4831ba6798c43f7c5a561ab9538fa62b..e08a1ff724e8bec4ec5bafde7a3dd4b432b0a39f 100644 (file)
@@ -166,6 +166,7 @@ enum bfd_session_flags {
                                                 * expires
                                                 */
        BFD_SESS_FLAG_SHUTDOWN = 1 << 7,        /* disable BGP peer function */
+       BFD_SESS_FLAG_CONFIG = 1 << 8,  /* Session configured with bfd NB API */
 };
 
 #define BFD_SET_FLAG(field, flag) (field |= flag)
index c13949207642fe1e81673269291b48a957afda2f..4efdd817c1c78a44a22844d84cb9b907fd9f6379 100644 (file)
@@ -158,6 +158,12 @@ DEFUN_NOSH(
                }
        }
 
+       if (!BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_CONFIG)) {
+               if (bs->refcount)
+                       vty_out(vty, "%% session peer is now configurable via bfd daemon.\n");
+               BFD_SET_FLAG(bs->flags, BFD_SESS_FLAG_CONFIG);
+       }
+
        VTY_PUSH_CONTEXT(BFD_PEER_NODE, bs);
 
        return CMD_SUCCESS;
@@ -984,6 +990,9 @@ static void _bfdd_peer_write_config_iter(struct hash_bucket *hb, void *arg)
        struct vty *vty = arg;
        struct bfd_session *bs = hb->data;
 
+       if (!BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_CONFIG))
+               return;
+
        _bfdd_peer_write_config(vty, bs);
 }
 
index 8d80b9468db5374af1dbdeda8af84b00b05f9ff2..e92500cd80990722b60620f4068b95dbaa0d8e2a 100644 (file)
@@ -431,6 +431,10 @@ static void bfdd_dest_deregister(struct stream *msg)
        /* Unregister client peer notification. */
        pcn = pcn_lookup(pc, bs);
        pcn_free(pcn);
+       if (bs->refcount ||
+           BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_CONFIG))
+               return;
+       ptm_bfd_ses_del(&bpc);
 }
 
 /*