]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospfd/ospf_bfd.c
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / ospfd / ospf_bfd.c
index b202cd01f12958407a82a312d05c6597d43dc284..0b0016745d421e64ffd8f1fe2d84a104a56f36f5 100644 (file)
@@ -1,23 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /**
  * ospf_bfd.c: OSPF BFD handling routines
  *
  * @copyright Copyright (C) 2015 Cumulus Networks, Inc.
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * GNU Zebra is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; see the file COPYING; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <zebra.h>
@@ -99,7 +84,6 @@ void ospf_neighbor_bfd_apply(struct ospf_neighbor *nbr)
                bfd_sess_set_ipv4_addrs(nbr->bfd_session, NULL, &nbr->src);
                bfd_sess_set_interface(nbr->bfd_session, oi->ifp->name);
                bfd_sess_set_vrf(nbr->bfd_session, oi->ospf->vrf_id);
-               bfd_sess_enable(nbr->bfd_session, true);
        }
 
        /* Set new configuration. */
@@ -166,7 +150,9 @@ void ospf_bfd_write_config(struct vty *vty, const struct ospf_if_params *params
                           __attribute__((unused)))
 {
 #if HAVE_BFDD == 0
-       if (CHECK_FLAG(bfd_info->flags, BFD_FLAG_PARAM_CFG))
+       if (params->bfd_config->detection_multiplier != BFD_DEF_DETECT_MULT
+           || params->bfd_config->min_rx != BFD_DEF_MIN_RX
+           || params->bfd_config->min_tx != BFD_DEF_MIN_TX)
                vty_out(vty, " ip ospf bfd %d %d %d\n",
                        params->bfd_config->detection_multiplier,
                        params->bfd_config->min_rx, params->bfd_config->min_tx);
@@ -265,8 +251,12 @@ DEFUN (ip_ospf_bfd_prof,
        struct ospf_if_params *params;
        int idx_prof = 4;
 
-       ospf_interface_enable_bfd(ifp);
        params = IF_DEF_PARAMS(ifp);
+       if (!params->bfd_config) {
+               vty_out(vty, "ip ospf bfd has not been set\n");
+               return CMD_WARNING;
+       }
+
        strlcpy(params->bfd_config->profile, argv[idx_prof]->arg,
                sizeof(params->bfd_config->profile));
        ospf_interface_bfd_apply(ifp);
@@ -287,8 +277,10 @@ DEFUN (no_ip_ospf_bfd_prof,
        VTY_DECLVAR_CONTEXT(interface, ifp);
        struct ospf_if_params *params;
 
-       ospf_interface_enable_bfd(ifp);
        params = IF_DEF_PARAMS(ifp);
+       if (!params->bfd_config)
+               return CMD_SUCCESS;
+
        params->bfd_config->profile[0] = 0;
        ospf_interface_bfd_apply(ifp);