]> git.proxmox.com Git - mirror_frr.git/blobdiff - babeld/babel_zebra.c
Merge pull request #13086 from donaldsharp/suppress_fib_pending
[mirror_frr.git] / babeld / babel_zebra.c
index 86f8bc721e73886f9f7182760f6780459b2791fe..bead9f27ef1672bd99e296f1ff833481dc7cb5cc 100644 (file)
@@ -1,23 +1,6 @@
+// SPDX-License-Identifier: MIT
 /*
 Copyright 2011 by Matthieu Boutier and Juliusz Chroboczek
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
 */
 
 /* FRR's includes */
@@ -139,7 +122,7 @@ DEFUN (debug_babel,
     for(i = 0; debug_type[i].str != NULL; i++) {
         if (strncmp (debug_type[i].str, argv[2]->arg,
                      debug_type[i].str_min_len) == 0) {
-            debug |= debug_type[i].type;
+            SET_FLAG(debug, debug_type[i].type);
             return CMD_SUCCESS;
         }
     }
@@ -169,7 +152,7 @@ DEFUN (no_debug_babel,
     for (i = 0; debug_type[i].str; i++) {
         if (strncmp(debug_type[i].str, argv[3]->arg,
                     debug_type[i].str_min_len) == 0) {
-            debug &= ~debug_type[i].type;
+            UNSET_FLAG(debug, debug_type[i].type);
             return CMD_SUCCESS;
         }
     }
@@ -195,16 +178,18 @@ debug_babel_config_write (struct vty * vty)
         lines++;
     }
     else
+    {
         for (i = 0; debug_type[i].str != NULL; i++)
-            if
-            (
-                debug_type[i].type != BABEL_DEBUG_ALL
-                && CHECK_FLAG (debug, debug_type[i].type)
-            )
+        {
+            if (debug_type[i].type != BABEL_DEBUG_ALL
+                && CHECK_FLAG (debug, debug_type[i].type))
             {
                 vty_out (vty, "debug babel %s\n", debug_type[i].str);
                 lines++;
             }
+        }
+    }
+
     if (lines)
     {
         vty_out (vty, "!\n");
@@ -225,6 +210,8 @@ DEFUN_NOSH (show_debugging_babel,
 
        debug_babel_config_write(vty);
 
+       cmd_show_lib_debugs(vty);
+
        return CMD_SUCCESS;
 }
 
@@ -234,16 +221,20 @@ babel_zebra_connected (struct zclient *zclient)
   zclient_send_reg_requests (zclient, VRF_DEFAULT);
 }
 
+static zclient_handler *const babel_handlers[] = {
+    [ZEBRA_INTERFACE_ADDRESS_ADD] = babel_interface_address_add,
+    [ZEBRA_INTERFACE_ADDRESS_DELETE] = babel_interface_address_delete,
+    [ZEBRA_REDISTRIBUTE_ROUTE_ADD] = babel_zebra_read_route,
+    [ZEBRA_REDISTRIBUTE_ROUTE_DEL] = babel_zebra_read_route,
+};
+
 void babelz_zebra_init(void)
 {
-    zclient = zclient_new(master, &zclient_options_default);
+    zclient = zclient_new(master, &zclient_options_default, babel_handlers,
+                         array_size(babel_handlers));
     zclient_init(zclient, ZEBRA_ROUTE_BABEL, 0, &babeld_privs);
 
     zclient->zebra_connected = babel_zebra_connected;
-    zclient->interface_address_add = babel_interface_address_add;
-    zclient->interface_address_delete = babel_interface_address_delete;
-    zclient->redistribute_route_add = babel_zebra_read_route;
-    zclient->redistribute_route_del = babel_zebra_read_route;
 
     install_element(BABEL_NODE, &babel_redistribute_type_cmd);
     install_element(ENABLE_NODE, &debug_babel_cmd);
@@ -251,7 +242,7 @@ void babelz_zebra_init(void)
     install_element(CONFIG_NODE, &debug_babel_cmd);
     install_element(CONFIG_NODE, &no_debug_babel_cmd);
 
-    install_element(VIEW_NODE, &show_debugging_babel_cmd);
+    install_element(ENABLE_NODE, &show_debugging_babel_cmd);
 }
 
 void