2 * Copyright (C) 2020 Cumulus Networks, Inc.
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
21 #include "northbound.h"
25 const char *zebra_afi_safi_value2identity(afi_t afi
, safi_t safi
)
27 if (afi
== AFI_IP
&& safi
== SAFI_UNICAST
)
28 return "ipv4-unicast";
29 if (afi
== AFI_IP6
&& safi
== SAFI_UNICAST
)
30 return "ipv6-unicast";
31 if (afi
== AFI_IP
&& safi
== SAFI_MULTICAST
)
32 return "ipv4-multicast";
33 if (afi
== AFI_IP6
&& safi
== SAFI_MULTICAST
)
34 return "ipv6-multicast";
39 void zebra_afi_safi_identity2value(const char *key
, afi_t
*afi
, safi_t
*safi
)
41 if (strmatch(key
, "frr-zebra:ipv4-unicast")) {
44 } else if (strmatch(key
, "frr-zebra:ipv6-unicast")) {
47 } else if (strmatch(key
, "frr-zebra:ipv4-multicast")) {
49 *safi
= SAFI_MULTICAST
;
50 } else if (strmatch(key
, "frr-zebra:ipv6-multicast")) {
52 *safi
= SAFI_MULTICAST
;
59 /* clang-format off */
60 const struct frr_yang_module_info frr_zebra_info
= {
64 .xpath
= "/frr-zebra:zebra/mcast-rpf-lookup",
66 .modify
= zebra_mcast_rpf_lookup_modify
,
70 .xpath
= "/frr-zebra:zebra/ip-forwarding",
72 .modify
= zebra_ip_forwarding_modify
,
73 .destroy
= zebra_ip_forwarding_destroy
,
77 .xpath
= "/frr-zebra:zebra/ipv6-forwarding",
79 .modify
= zebra_ipv6_forwarding_modify
,
80 .destroy
= zebra_ipv6_forwarding_destroy
,
84 .xpath
= "/frr-zebra:zebra/workqueue-hold-timer",
86 .modify
= zebra_workqueue_hold_timer_modify
,
90 .xpath
= "/frr-zebra:zebra/zapi-packets",
92 .modify
= zebra_zapi_packets_modify
,
96 .xpath
= "/frr-zebra:zebra/import-kernel-table/table-id",
98 .modify
= zebra_import_kernel_table_table_id_modify
,
99 .destroy
= zebra_import_kernel_table_table_id_destroy
,
103 .xpath
= "/frr-zebra:zebra/import-kernel-table/distance",
105 .modify
= zebra_import_kernel_table_distance_modify
,
109 .xpath
= "/frr-zebra:zebra/import-kernel-table/route-map",
111 .modify
= zebra_import_kernel_table_route_map_modify
,
112 .destroy
= zebra_import_kernel_table_route_map_destroy
,
116 .xpath
= "/frr-zebra:zebra/allow-external-route-update",
118 .create
= zebra_allow_external_route_update_create
,
119 .destroy
= zebra_allow_external_route_update_destroy
,
123 .xpath
= "/frr-zebra:zebra/dplane-queue-limit",
125 .modify
= zebra_dplane_queue_limit_modify
,
129 .xpath
= "/frr-zebra:zebra/vrf-vni-mapping",
131 .create
= zebra_vrf_vni_mapping_create
,
132 .destroy
= zebra_vrf_vni_mapping_destroy
,
136 .xpath
= "/frr-zebra:zebra/vrf-vni-mapping/vni-id",
138 .modify
= zebra_vrf_vni_mapping_vni_id_modify
,
139 .destroy
= zebra_vrf_vni_mapping_vni_id_destroy
,
143 .xpath
= "/frr-zebra:zebra/vrf-vni-mapping/prefix-only",
145 .create
= zebra_vrf_vni_mapping_prefix_only_create
,
146 .destroy
= zebra_vrf_vni_mapping_prefix_only_destroy
,
150 .xpath
= "/frr-zebra:zebra/debugs/debug-events",
152 .modify
= zebra_debugs_debug_events_modify
,
153 .destroy
= zebra_debugs_debug_events_destroy
,
157 .xpath
= "/frr-zebra:zebra/debugs/debug-zapi-send",
159 .modify
= zebra_debugs_debug_zapi_send_modify
,
160 .destroy
= zebra_debugs_debug_zapi_send_destroy
,
164 .xpath
= "/frr-zebra:zebra/debugs/debug-zapi-recv",
166 .modify
= zebra_debugs_debug_zapi_recv_modify
,
167 .destroy
= zebra_debugs_debug_zapi_recv_destroy
,
171 .xpath
= "/frr-zebra:zebra/debugs/debug-zapi-detail",
173 .modify
= zebra_debugs_debug_zapi_detail_modify
,
174 .destroy
= zebra_debugs_debug_zapi_detail_destroy
,
178 .xpath
= "/frr-zebra:zebra/debugs/debug-kernel",
180 .modify
= zebra_debugs_debug_kernel_modify
,
181 .destroy
= zebra_debugs_debug_kernel_destroy
,
185 .xpath
= "/frr-zebra:zebra/debugs/debug-kernel-msg-send",
187 .modify
= zebra_debugs_debug_kernel_msg_send_modify
,
188 .destroy
= zebra_debugs_debug_kernel_msg_send_destroy
,
192 .xpath
= "/frr-zebra:zebra/debugs/debug-kernel-msg-recv",
194 .modify
= zebra_debugs_debug_kernel_msg_recv_modify
,
195 .destroy
= zebra_debugs_debug_kernel_msg_recv_destroy
,
199 .xpath
= "/frr-zebra:zebra/debugs/debug-rib",
201 .modify
= zebra_debugs_debug_rib_modify
,
202 .destroy
= zebra_debugs_debug_rib_destroy
,
206 .xpath
= "/frr-zebra:zebra/debugs/debug-rib-detail",
208 .modify
= zebra_debugs_debug_rib_detail_modify
,
209 .destroy
= zebra_debugs_debug_rib_detail_destroy
,
213 .xpath
= "/frr-zebra:zebra/debugs/debug-fpm",
215 .modify
= zebra_debugs_debug_fpm_modify
,
216 .destroy
= zebra_debugs_debug_fpm_destroy
,
220 .xpath
= "/frr-zebra:zebra/debugs/debug-nht",
222 .modify
= zebra_debugs_debug_nht_modify
,
223 .destroy
= zebra_debugs_debug_nht_destroy
,
227 .xpath
= "/frr-zebra:zebra/debugs/debug-nht-detail",
229 .modify
= zebra_debugs_debug_nht_detail_modify
,
230 .destroy
= zebra_debugs_debug_nht_detail_destroy
,
234 .xpath
= "/frr-zebra:zebra/debugs/debug-mpls",
236 .modify
= zebra_debugs_debug_mpls_modify
,
237 .destroy
= zebra_debugs_debug_mpls_destroy
,
241 .xpath
= "/frr-zebra:zebra/debugs/debug-vxlan",
243 .modify
= zebra_debugs_debug_vxlan_modify
,
244 .destroy
= zebra_debugs_debug_vxlan_destroy
,
248 .xpath
= "/frr-zebra:zebra/debugs/debug-pw",
250 .modify
= zebra_debugs_debug_pw_modify
,
251 .destroy
= zebra_debugs_debug_pw_destroy
,
255 .xpath
= "/frr-zebra:zebra/debugs/debug-dplane",
257 .modify
= zebra_debugs_debug_dplane_modify
,
258 .destroy
= zebra_debugs_debug_dplane_destroy
,
262 .xpath
= "/frr-zebra:zebra/debugs/debug-dplane-detail",
264 .modify
= zebra_debugs_debug_dplane_detail_modify
,
265 .destroy
= zebra_debugs_debug_dplane_detail_destroy
,
269 .xpath
= "/frr-zebra:zebra/debugs/debug-mlag",
271 .modify
= zebra_debugs_debug_mlag_modify
,
272 .destroy
= zebra_debugs_debug_mlag_destroy
,
276 .xpath
= "/frr-zebra:get-route-information",
278 .rpc
= get_route_information_rpc
,
282 .xpath
= "/frr-zebra:get-v6-mroute-info",
284 .rpc
= get_v6_mroute_info_rpc
,
288 .xpath
= "/frr-zebra:get-vrf-info",
290 .rpc
= get_vrf_info_rpc
,
294 .xpath
= "/frr-zebra:get-vrf-vni-info",
296 .rpc
= get_vrf_vni_info_rpc
,
300 .xpath
= "/frr-zebra:get-evpn-info",
302 .rpc
= get_evpn_info_rpc
,
306 .xpath
= "/frr-zebra:get-vni-info",
308 .rpc
= get_vni_info_rpc
,
312 .xpath
= "/frr-zebra:get-evpn-vni-rmac",
314 .rpc
= get_evpn_vni_rmac_rpc
,
318 .xpath
= "/frr-zebra:get-evpn-vni-nexthops",
320 .rpc
= get_evpn_vni_nexthops_rpc
,
324 .xpath
= "/frr-zebra:clear-evpn-dup-addr",
326 .rpc
= clear_evpn_dup_addr_rpc
,
330 .xpath
= "/frr-zebra:get-evpn-macs",
332 .rpc
= get_evpn_macs_rpc
,
336 .xpath
= "/frr-zebra:get-evpn-arp-cache",
338 .rpc
= get_evpn_arp_cache_rpc
,
342 .xpath
= "/frr-zebra:get-pbr-ipset",
344 .rpc
= get_pbr_ipset_rpc
,
348 .xpath
= "/frr-zebra:get-pbr-iptable",
350 .rpc
= get_pbr_iptable_rpc
,
354 .xpath
= "/frr-zebra:get-debugs",
356 .rpc
= get_debugs_rpc
,
360 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs",
362 .create
= lib_interface_zebra_ip_addrs_create
,
363 .destroy
= lib_interface_zebra_ip_addrs_destroy
,
367 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs/label",
369 .modify
= lib_interface_zebra_ip_addrs_label_modify
,
370 .destroy
= lib_interface_zebra_ip_addrs_label_destroy
,
374 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/ip-addrs/ip4-peer",
376 .modify
= lib_interface_zebra_ip_addrs_ip4_peer_modify
,
377 .destroy
= lib_interface_zebra_ip_addrs_ip4_peer_destroy
,
381 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/multicast",
383 .modify
= lib_interface_zebra_multicast_modify
,
384 .destroy
= lib_interface_zebra_multicast_destroy
,
388 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/link-detect",
390 .modify
= lib_interface_zebra_link_detect_modify
,
391 .destroy
= lib_interface_zebra_link_detect_destroy
,
395 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/shutdown",
397 .modify
= lib_interface_zebra_shutdown_modify
,
398 .destroy
= lib_interface_zebra_shutdown_destroy
,
402 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/bandwidth",
404 .modify
= lib_interface_zebra_bandwidth_modify
,
405 .destroy
= lib_interface_zebra_bandwidth_destroy
,
409 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/state/up-count",
411 .get_elem
= lib_interface_zebra_state_up_count_get_elem
,
415 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/state/down-count",
417 .get_elem
= lib_interface_zebra_state_down_count_get_elem
,
421 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/state/zif-type",
423 .get_elem
= lib_interface_zebra_state_zif_type_get_elem
,
427 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/state/ptm-status",
429 .get_elem
= lib_interface_zebra_state_ptm_status_get_elem
,
433 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/state/vlan-id",
435 .get_elem
= lib_interface_zebra_state_vlan_id_get_elem
,
439 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/state/vni-id",
441 .get_elem
= lib_interface_zebra_state_vni_id_get_elem
,
445 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/state/remote-vtep",
447 .get_elem
= lib_interface_zebra_state_remote_vtep_get_elem
,
451 .xpath
= "/frr-interface:lib/interface/frr-zebra:zebra/state/mcast-group",
453 .get_elem
= lib_interface_zebra_state_mcast_group_get_elem
,
457 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib",
459 .create
= lib_vrf_zebra_ribs_rib_create
,
460 .destroy
= lib_vrf_zebra_ribs_rib_destroy
,
461 .get_next
= lib_vrf_zebra_ribs_rib_get_next
,
462 .get_keys
= lib_vrf_zebra_ribs_rib_get_keys
,
463 .lookup_entry
= lib_vrf_zebra_ribs_rib_lookup_entry
,
467 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route",
469 .get_next
= lib_vrf_zebra_ribs_rib_route_get_next
,
470 .get_keys
= lib_vrf_zebra_ribs_rib_route_get_keys
,
471 .lookup_entry
= lib_vrf_zebra_ribs_rib_route_lookup_entry
,
475 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/prefix",
477 .get_elem
= lib_vrf_zebra_ribs_rib_route_prefix_get_elem
,
481 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry",
483 .get_next
= lib_vrf_zebra_ribs_rib_route_route_entry_get_next
,
484 .get_keys
= lib_vrf_zebra_ribs_rib_route_route_entry_get_keys
,
485 .lookup_entry
= lib_vrf_zebra_ribs_rib_route_route_entry_lookup_entry
,
489 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/protocol",
491 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_protocol_get_elem
,
495 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/instance",
497 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_instance_get_elem
,
501 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/distance",
503 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_distance_get_elem
,
507 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/metric",
509 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_metric_get_elem
,
513 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/tag",
515 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_tag_get_elem
,
519 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/selected",
521 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_selected_get_elem
,
525 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/installed",
527 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_installed_get_elem
,
531 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/failed",
533 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_failed_get_elem
,
537 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/queued",
539 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_queued_get_elem
,
543 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/internal-flags",
545 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_internal_flags_get_elem
,
549 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/internal-status",
551 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_internal_status_get_elem
,
555 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/uptime",
557 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_uptime_get_elem
,
561 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group",
563 .get_next
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_next
,
564 .get_keys
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_get_keys
,
565 .lookup_entry
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_lookup_entry
,
569 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/name",
571 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_name_get_elem
,
575 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop",
577 .get_next
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_next
,
578 .get_keys
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_get_keys
,
579 .lookup_entry
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_lookup_entry
,
583 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/nh-type",
585 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_nh_type_get_elem
,
589 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/vrf",
591 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_vrf_get_elem
,
595 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/gateway",
597 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_gateway_get_elem
,
601 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/interface",
603 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_interface_get_elem
,
607 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/bh-type",
609 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_bh_type_get_elem
,
613 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/onlink",
615 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_onlink_get_elem
,
619 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry",
621 .get_next
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_next
,
622 .get_keys
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_get_keys
,
623 .lookup_entry
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_lookup_entry
,
627 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/id",
629 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_id_get_elem
,
633 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/label",
635 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_label_get_elem
,
639 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/ttl",
641 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_ttl_get_elem
,
645 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/mpls-label-stack/entry/traffic-class",
647 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_mpls_label_stack_entry_traffic_class_get_elem
,
651 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/duplicate",
653 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_duplicate_get_elem
,
657 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/recursive",
659 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_recursive_get_elem
,
663 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/active",
665 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_active_get_elem
,
669 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/fib",
671 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_fib_get_elem
,
675 .xpath
= "/frr-route-map:lib/route-map/entry/match-condition/frr-zebra:ipv4-prefix-length",
677 .modify
= lib_route_map_entry_match_condition_ipv4_prefix_length_modify
,
678 .destroy
= lib_route_map_entry_match_condition_ipv4_prefix_length_destroy
,
682 .xpath
= "/frr-route-map:lib/route-map/entry/match-condition/frr-zebra:ipv6-prefix-length",
684 .modify
= lib_route_map_entry_match_condition_ipv6_prefix_length_modify
,
685 .destroy
= lib_route_map_entry_match_condition_ipv6_prefix_length_destroy
,
689 .xpath
= "/frr-route-map:lib/route-map/entry/match-condition/frr-zebra:source-protocol",
691 .modify
= lib_route_map_entry_match_condition_source_protocol_modify
,
692 .destroy
= lib_route_map_entry_match_condition_source_protocol_destroy
,
696 .xpath
= "/frr-route-map:lib/route-map/entry/match-condition/frr-zebra:source-instance",
698 .modify
= lib_route_map_entry_match_condition_source_instance_modify
,
699 .destroy
= lib_route_map_entry_match_condition_source_instance_destroy
,
703 .xpath
= "/frr-route-map:lib/route-map/entry/set-action/frr-zebra:source-v4",
705 .modify
= lib_route_map_entry_set_action_source_v4_modify
,
706 .destroy
= lib_route_map_entry_set_action_source_v4_destroy
,
710 .xpath
= "/frr-route-map:lib/route-map/entry/set-action/frr-zebra:source-v6",
712 .modify
= lib_route_map_entry_set_action_source_v6_modify
,
713 .destroy
= lib_route_map_entry_set_action_source_v6_destroy
,
717 .xpath
= "/frr-vrf:lib/vrf/frr-zebra:zebra/ribs/rib/route/route-entry/nexthop-group/frr-nexthops/nexthop/weight",
719 .get_elem
= lib_vrf_zebra_ribs_rib_route_route_entry_nexthop_group_frr_nexthops_nexthop_weight_get_elem
,