]> 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 f4470ad833b19f816ee98a05e017ed17d3a9bbda..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>
@@ -47,8 +32,6 @@
 
 DEFINE_MTYPE_STATIC(OSPFD, BFD_CONFIG, "BFD configuration data");
 
-extern struct zclient *zclient;
-
 /*
  * ospf_bfd_trigger_event - Neighbor is registered/deregistered with BFD when
  *                          neighbor state is changed to/from 2way.
@@ -70,18 +53,18 @@ static void ospf_bfd_session_change(struct bfd_session_params *bsp,
        /* BFD peer went down. */
        if (bss->state == BFD_STATUS_DOWN
            && bss->previous_state == BFD_STATUS_UP) {
-               if (IS_DEBUG_OSPF(nsm, NSM_EVENTS))
-                       zlog_debug("NSM[%s:%pI4]: BFD Down", IF_NAME(nbr->oi),
-                                  &nbr->address.u.prefix4);
+               if (IS_DEBUG_OSPF(bfd, BFD_LIB))
+                       zlog_debug("%s: NSM[%s:%pI4]: BFD Down", __func__,
+                                  IF_NAME(nbr->oi), &nbr->address.u.prefix4);
 
                OSPF_NSM_EVENT_SCHEDULE(nbr, NSM_InactivityTimer);
        }
 
        /* BFD peer went up. */
        if (bss->state == BSS_UP && bss->previous_state == BSS_DOWN)
-               if (IS_DEBUG_OSPF(nsm, NSM_EVENTS))
-                       zlog_debug("NSM[%s:%pI4]: BFD Up", IF_NAME(nbr->oi),
-                                  &nbr->address.u.prefix4);
+               if (IS_DEBUG_OSPF(bfd, BFD_LIB))
+                       zlog_debug("%s: NSM[%s:%pI4]: BFD Up", __func__,
+                                  IF_NAME(nbr->oi), &nbr->address.u.prefix4);
 }
 
 void ospf_neighbor_bfd_apply(struct ospf_neighbor *nbr)
@@ -101,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. */
@@ -168,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);
@@ -267,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);
@@ -289,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);