]> git.proxmox.com Git - mirror_frr.git/blobdiff - ripd/rip_nb.c
ripd: support BFD integration
[mirror_frr.git] / ripd / rip_nb.c
index 4716041ad621c5a954e6e6e7c50b8c679892ffe5..d11f1e1d34fee98241d3adf7b0613cec8e04c4de 100644 (file)
@@ -1,20 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  * Copyright (C) 2018  NetDEF, Inc.
  *                     Renato Westphal
- *
- * This program 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 of the License, or (at your option)
- * any later version.
- *
- * This program 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>
@@ -23,6 +10,7 @@
 #include "libfrr.h"
 
 #include "ripd/rip_nb.h"
+#include "lib/if_rmap.h"
 
 /* clang-format off */
 const struct frr_yang_module_info frr_ripd_info = {
@@ -178,6 +166,28 @@ const struct frr_yang_module_info frr_ripd_info = {
                                .modify = ripd_instance_redistribute_metric_modify,
                        },
                },
+               {
+                       .xpath = "/frr-ripd:ripd/instance/if-route-maps/if-route-map",
+                       .cbs = {
+                               .create = ripd_instance_if_route_maps_if_route_map_create,
+                               .destroy = ripd_instance_if_route_maps_if_route_map_destroy,
+                               .cli_show = cli_show_if_route_map,
+                       }
+               },
+               {
+                       .xpath = "/frr-ripd:ripd/instance/if-route-maps/if-route-map/in-route-map",
+                       .cbs = {
+                               .modify = ripd_instance_if_route_maps_if_route_map_in_route_map_modify,
+                               .destroy = ripd_instance_if_route_maps_if_route_map_in_route_map_destroy,
+                       }
+               },
+               {
+                       .xpath = "/frr-ripd:ripd/instance/if-route-maps/if-route-map/out-route-map",
+                       .cbs = {
+                               .modify = ripd_instance_if_route_maps_if_route_map_out_route_map_modify,
+                               .destroy = ripd_instance_if_route_maps_if_route_map_out_route_map_destroy,
+                       }
+               },
                {
                        .xpath = "/frr-ripd:ripd/instance/static-route",
                        .cbs = {
@@ -229,6 +239,14 @@ const struct frr_yang_module_info frr_ripd_info = {
                                .modify = ripd_instance_version_send_modify,
                        },
                },
+               {
+                       .xpath = "/frr-ripd:ripd/instance/default-bfd-profile",
+                       .cbs = {
+                               .modify = ripd_instance_default_bfd_profile_modify,
+                               .destroy = ripd_instance_default_bfd_profile_destroy,
+                               .cli_show = cli_show_ripd_instance_default_bfd_profile,
+                       },
+               },
                {
                        .xpath = "/frr-interface:lib/interface/frr-ripd:rip/split-horizon",
                        .cbs = {
@@ -292,6 +310,28 @@ const struct frr_yang_module_info frr_ripd_info = {
                                .modify = lib_interface_rip_authentication_key_chain_modify,
                        },
                },
+               {
+                       .xpath = "/frr-interface:lib/interface/frr-ripd:rip/bfd-monitoring",
+                       .cbs = {
+                               .create = lib_interface_rip_bfd_create,
+                               .destroy = lib_interface_rip_bfd_destroy,
+                       },
+               },
+               {
+                       .xpath = "/frr-interface:lib/interface/frr-ripd:rip/bfd-monitoring/enable",
+                       .cbs = {
+                               .cli_show = cli_show_ip_rip_bfd_enable,
+                               .modify = lib_interface_rip_bfd_enable_modify,
+                       },
+               },
+               {
+                       .xpath = "/frr-interface:lib/interface/frr-ripd:rip/bfd-monitoring/profile",
+                       .cbs = {
+                               .cli_show = cli_show_ip_rip_bfd_profile,
+                               .modify = lib_interface_rip_bfd_profile_modify,
+                               .destroy = lib_interface_rip_bfd_profile_destroy,
+                       },
+               },
                {
                        .xpath = "/frr-ripd:ripd/instance/state/neighbors/neighbor",
                        .cbs = {
@@ -350,6 +390,66 @@ const struct frr_yang_module_info frr_ripd_info = {
                                .get_elem = ripd_instance_state_routes_route_interface_get_elem,
                        },
                },
+               {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop",
+                        .cbs = {
+                                .get_next = ripd_instance_state_routes_route_nexthops_nexthop_get_next,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/nh-type",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_nh_type_get_elem,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/protocol",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_protocol_get_elem,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/rip-type",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_rip_type_get_elem,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/gateway",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_gateway_get_elem,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/interface",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_interface_get_elem,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/from",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_from_get_elem,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/tag",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_tag_get_elem,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/external-metric",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_external_metric_get_elem,
+                        }
+                },
+                {
+                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/nexthops/nexthop/expire-time",
+                        .cbs = {
+                                .get_elem = ripd_instance_state_routes_route_nexthops_nexthop_expire_time_get_elem,
+                        }
+                },
                {
                        .xpath = "/frr-ripd:ripd/instance/state/routes/route/metric",
                        .cbs = {