2 * Copyright (C) 2020 VmWare
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the Free
7 * Software Foundation; either version 2 of the License, or (at your option)
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 * You should have received a copy of the GNU General Public License along
16 * with this program; see the file COPYING; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 #include "northbound.h"
25 #include "pimd/pim_nb.h"
27 /* clang-format off */
28 const struct frr_yang_module_info frr_pim_info
= {
32 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/ecmp",
34 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_ecmp_modify
,
38 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/ecmp-rebalance",
40 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_ecmp_rebalance_modify
,
44 .xpath
= "/frr-pim:pim/join-prune-interval",
46 .modify
= pim_join_prune_interval_modify
,
50 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/keep-alive-timer",
52 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_keep_alive_timer_modify
,
56 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/rp-keep-alive-timer",
58 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_rp_keep_alive_timer_modify
,
62 .xpath
= "/frr-pim:pim/packets",
64 .modify
= pim_packets_modify
,
68 .xpath
= "/frr-pim:pim/register-suppress-time",
70 .modify
= pim_register_suppress_time_modify
,
74 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family",
76 .create
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_create
,
77 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_destroy
,
81 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/send-v6-secondary",
83 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_send_v6_secondary_modify
,
84 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_send_v6_secondary_destroy
,
88 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/spt-switchover",
90 .apply_finish
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_apply_finish
,
94 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/spt-switchover/spt-action",
96 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_action_modify
,
100 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/spt-switchover/spt-infinity-prefix-list",
102 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_infinity_prefix_list_modify
,
103 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_infinity_prefix_list_destroy
,
107 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ssm-prefix-list",
109 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_prefix_list_modify
,
110 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_prefix_list_destroy
,
114 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/ssm-pingd-source-ip",
116 .create
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_pingd_source_ip_create
,
117 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_pingd_source_ip_destroy
,
121 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/msdp-mesh-group",
123 .create
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_mesh_group_create
,
124 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_mesh_group_destroy
,
128 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/msdp-mesh-group/mesh-group-name",
130 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_mesh_group_mesh_group_name_modify
,
131 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_mesh_group_mesh_group_name_destroy
,
135 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/msdp-mesh-group/member-ip",
137 .create
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_mesh_group_member_ip_create
,
138 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_mesh_group_member_ip_destroy
,
142 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/msdp-mesh-group/source-ip",
144 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_mesh_group_source_ip_modify
,
145 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_mesh_group_source_ip_destroy
,
149 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/msdp-peer",
151 .create
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_create
,
152 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_destroy
,
156 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/msdp-peer/source-ip",
158 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_source_ip_modify
,
159 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_source_ip_destroy
,
163 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/mlag",
165 .create
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_create
,
166 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_destroy
,
167 .apply_finish
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_apply_finish
,
171 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/mlag/peerlink-rif",
173 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peerlink_rif_modify
,
174 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peerlink_rif_destroy
,
178 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/mlag/reg-address",
180 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_reg_address_modify
,
181 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_reg_address_destroy
,
185 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/mlag/my-role",
187 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_my_role_modify
,
191 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/mlag/peer-state",
193 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peer_state_modify
,
197 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/register-accept-list",
199 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_modify
,
200 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_destroy
,
204 .xpath
= "/frr-interface:lib/interface/frr-pim:pim",
206 .create
= lib_interface_pim_create
,
207 .destroy
= lib_interface_pim_destroy
,
211 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/pim-enable",
213 .modify
= lib_interface_pim_pim_enable_modify
,
217 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/dr-priority",
219 .modify
= lib_interface_pim_dr_priority_modify
,
223 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/hello-interval",
225 .modify
= lib_interface_pim_hello_interval_modify
,
229 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/hello-holdtime",
231 .modify
= lib_interface_pim_hello_holdtime_modify
,
232 .destroy
= lib_interface_pim_hello_holdtime_destroy
,
236 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/bfd",
238 .create
= lib_interface_pim_bfd_create
,
239 .destroy
= lib_interface_pim_bfd_destroy
,
240 .apply_finish
= lib_interface_pim_bfd_apply_finish
,
244 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/bfd/min-rx-interval",
246 .modify
= lib_interface_pim_bfd_min_rx_interval_modify
,
250 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/bfd/min-tx-interval",
252 .modify
= lib_interface_pim_bfd_min_tx_interval_modify
,
256 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/bfd/detect_mult",
258 .modify
= lib_interface_pim_bfd_detect_mult_modify
,
262 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/bsm",
264 .modify
= lib_interface_pim_bsm_modify
,
268 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/unicast-bsm",
270 .modify
= lib_interface_pim_unicast_bsm_modify
,
274 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/active-active",
276 .modify
= lib_interface_pim_active_active_modify
,
280 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/address-family",
282 .create
= lib_interface_pim_address_family_create
,
283 .destroy
= lib_interface_pim_address_family_destroy
,
287 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/address-family/use-source",
289 .modify
= lib_interface_pim_address_family_use_source_modify
,
290 .destroy
= lib_interface_pim_address_family_use_source_destroy
,
294 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/address-family/multicast-boundary-oil",
296 .modify
= lib_interface_pim_address_family_multicast_boundary_oil_modify
,
297 .destroy
= lib_interface_pim_address_family_multicast_boundary_oil_destroy
,
301 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/address-family/mroute",
303 .create
= lib_interface_pim_address_family_mroute_create
,
304 .destroy
= lib_interface_pim_address_family_mroute_destroy
,
308 .xpath
= "/frr-interface:lib/interface/frr-pim:pim/address-family/mroute/oif",
310 .modify
= lib_interface_pim_address_family_mroute_oif_modify
,
311 .destroy
= lib_interface_pim_address_family_mroute_oif_destroy
,
320 /* clang-format off */
321 const struct frr_yang_module_info frr_pim_rp_info
= {
322 .name
= "frr-pim-rp",
325 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/frr-pim-rp:rp/static-rp/rp-list",
327 .create
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_create
,
328 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_destroy
,
332 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/frr-pim-rp:rp/static-rp/rp-list/group-list",
334 .create
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_group_list_create
,
335 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_group_list_destroy
,
339 .xpath
= "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-pim:pim/address-family/frr-pim-rp:rp/static-rp/rp-list/prefix-list",
341 .modify
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_modify
,
342 .destroy
= routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_destroy
,
351 /* clang-format off */
352 const struct frr_yang_module_info frr_igmp_info
= {
356 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp",
358 .create
= lib_interface_igmp_create
,
359 .destroy
= lib_interface_igmp_destroy
,
363 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp/igmp-enable",
365 .modify
= lib_interface_igmp_igmp_enable_modify
,
369 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp/version",
371 .modify
= lib_interface_igmp_version_modify
,
372 .destroy
= lib_interface_igmp_version_destroy
,
376 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp/query-interval",
378 .modify
= lib_interface_igmp_query_interval_modify
,
382 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp/query-max-response-time",
384 .modify
= lib_interface_igmp_query_max_response_time_modify
,
388 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp/last-member-query-interval",
390 .modify
= lib_interface_igmp_last_member_query_interval_modify
,
394 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp/robustness-variable",
396 .modify
= lib_interface_igmp_robustness_variable_modify
,
400 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp/address-family",
402 .create
= lib_interface_igmp_address_family_create
,
403 .destroy
= lib_interface_igmp_address_family_destroy
,
407 .xpath
= "/frr-interface:lib/interface/frr-igmp:igmp/address-family/static-group",
409 .create
= lib_interface_igmp_address_family_static_group_create
,
410 .destroy
= lib_interface_igmp_address_family_static_group_destroy
,