]> git.proxmox.com Git - mirror_frr.git/blob - pimd/pim_nb.h
bgpd: fix the IGP metric for best path selection on VPN import
[mirror_frr.git] / pimd / pim_nb.h
1 /*
2 * Copyright (C) 2020 VmWare
3 * Sarita Patra
4 *
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)
8 * any later version.
9 *
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
13 * more details.
14 *
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
18 */
19
20 #ifndef _FRR_PIM_NB_H_
21 #define _FRR_PIM_NB_H_
22
23 extern const struct frr_yang_module_info frr_pim_info;
24 extern const struct frr_yang_module_info frr_pim_rp_info;
25 extern const struct frr_yang_module_info frr_gmp_info;
26
27 /* frr-pim prototypes*/
28 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_modify(
29 struct nb_cb_modify_args *args);
30 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ecmp_rebalance_modify(
31 struct nb_cb_modify_args *args);
32 int pim_address_family_join_prune_interval_modify(struct nb_cb_modify_args *args);
33 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_keep_alive_timer_modify(
34 struct nb_cb_modify_args *args);
35 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_keep_alive_timer_modify(
36 struct nb_cb_modify_args *args);
37 int pim_address_family_create(struct nb_cb_create_args *args);
38 int pim_address_family_destroy(struct nb_cb_destroy_args *args);
39 int pim_address_family_packets_modify(struct nb_cb_modify_args *args);
40 int pim_address_family_register_suppress_time_modify(
41 struct nb_cb_modify_args *args);
42 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_create(
43 struct nb_cb_create_args *args);
44 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_destroy(
45 struct nb_cb_destroy_args *args);
46 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_send_v6_secondary_modify(
47 struct nb_cb_modify_args *args);
48 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_send_v6_secondary_destroy(
49 struct nb_cb_destroy_args *args);
50 void routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_apply_finish(
51 struct nb_cb_apply_finish_args *args);
52 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_action_modify(
53 struct nb_cb_modify_args *args);
54 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_infinity_prefix_list_modify(
55 struct nb_cb_modify_args *args);
56 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_spt_switchover_spt_infinity_prefix_list_destroy(
57 struct nb_cb_destroy_args *args);
58 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_prefix_list_modify(
59 struct nb_cb_modify_args *args);
60 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_prefix_list_destroy(
61 struct nb_cb_destroy_args *args);
62 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_pingd_source_ip_create(
63 struct nb_cb_create_args *args);
64 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_ssm_pingd_source_ip_destroy(
65 struct nb_cb_destroy_args *args);
66 int pim_msdp_hold_time_modify(struct nb_cb_modify_args *args);
67 int pim_msdp_keep_alive_modify(struct nb_cb_modify_args *args);
68 int pim_msdp_connection_retry_modify(struct nb_cb_modify_args *args);
69 int pim_msdp_mesh_group_create(struct nb_cb_create_args *args);
70 int pim_msdp_mesh_group_destroy(struct nb_cb_destroy_args *args);
71 int pim_msdp_mesh_group_members_create(struct nb_cb_create_args *args);
72 int pim_msdp_mesh_group_members_destroy(struct nb_cb_destroy_args *args);
73 int pim_msdp_mesh_group_source_modify(struct nb_cb_modify_args *args);
74 int pim_msdp_mesh_group_source_destroy(struct nb_cb_destroy_args *args);
75 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_create(
76 struct nb_cb_create_args *args);
77 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_destroy(
78 struct nb_cb_destroy_args *args);
79 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_msdp_peer_source_ip_modify(
80 struct nb_cb_modify_args *args);
81 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_create(
82 struct nb_cb_create_args *args);
83 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_destroy(
84 struct nb_cb_destroy_args *args);
85 void routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_apply_finish(
86 struct nb_cb_apply_finish_args *args);
87 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peerlink_rif_modify(
88 struct nb_cb_modify_args *args);
89 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peerlink_rif_destroy(
90 struct nb_cb_destroy_args *args);
91 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_reg_address_modify(
92 struct nb_cb_modify_args *args);
93 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_reg_address_destroy(
94 struct nb_cb_destroy_args *args);
95 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_my_role_modify(
96 struct nb_cb_modify_args *args);
97 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_mlag_peer_state_modify(
98 struct nb_cb_modify_args *args);
99 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_modify(
100 struct nb_cb_modify_args *args);
101 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_register_accept_list_destroy(
102 struct nb_cb_destroy_args *args);
103 int lib_interface_pim_address_family_dr_priority_modify(
104 struct nb_cb_modify_args *args);
105 int lib_interface_pim_address_family_create(struct nb_cb_create_args *args);
106 int lib_interface_pim_address_family_destroy(struct nb_cb_destroy_args *args);
107 int lib_interface_pim_address_family_pim_enable_modify(
108 struct nb_cb_modify_args *args);
109 int lib_interface_pim_address_family_pim_passive_enable_modify(
110 struct nb_cb_modify_args *args);
111 int lib_interface_pim_address_family_hello_interval_modify(
112 struct nb_cb_modify_args *args);
113 int lib_interface_pim_address_family_hello_holdtime_modify(
114 struct nb_cb_modify_args *args);
115 int lib_interface_pim_address_family_hello_holdtime_destroy(
116 struct nb_cb_destroy_args *args);
117 int lib_interface_pim_address_family_bfd_create(struct nb_cb_create_args *args);
118 int lib_interface_pim_address_family_bfd_destroy(
119 struct nb_cb_destroy_args *args);
120 void lib_interface_pim_address_family_bfd_apply_finish(
121 struct nb_cb_apply_finish_args *args);
122 int lib_interface_pim_address_family_bfd_min_rx_interval_modify(
123 struct nb_cb_modify_args *args);
124 int lib_interface_pim_address_family_bfd_min_tx_interval_modify(
125 struct nb_cb_modify_args *args);
126 int lib_interface_pim_address_family_bfd_detect_mult_modify(
127 struct nb_cb_modify_args *args);
128 int lib_interface_pim_address_family_bfd_profile_modify(
129 struct nb_cb_modify_args *args);
130 int lib_interface_pim_address_family_bfd_profile_destroy(
131 struct nb_cb_destroy_args *args);
132 int lib_interface_pim_address_family_bsm_modify(struct nb_cb_modify_args *args);
133 int lib_interface_pim_address_family_unicast_bsm_modify(
134 struct nb_cb_modify_args *args);
135 int lib_interface_pim_address_family_active_active_modify(
136 struct nb_cb_modify_args *args);
137 int lib_interface_pim_address_family_use_source_modify(
138 struct nb_cb_modify_args *args);
139 int lib_interface_pim_address_family_use_source_destroy(
140 struct nb_cb_destroy_args *args);
141 int lib_interface_pim_address_family_multicast_boundary_oil_modify(
142 struct nb_cb_modify_args *args);
143 int lib_interface_pim_address_family_multicast_boundary_oil_destroy(
144 struct nb_cb_destroy_args *args);
145 int lib_interface_pim_address_family_mroute_create(
146 struct nb_cb_create_args *args);
147 int lib_interface_pim_address_family_mroute_destroy(
148 struct nb_cb_destroy_args *args);
149 int lib_interface_pim_address_family_mroute_oif_modify(
150 struct nb_cb_modify_args *args);
151 int lib_interface_pim_address_family_mroute_oif_destroy(
152 struct nb_cb_destroy_args *args);
153
154 /* frr-pim-rp prototypes*/
155 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_create(
156 struct nb_cb_create_args *args);
157 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_destroy(
158 struct nb_cb_destroy_args *args);
159 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_group_list_create(
160 struct nb_cb_create_args *args);
161 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_group_list_destroy(
162 struct nb_cb_destroy_args *args);
163 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_modify(
164 struct nb_cb_modify_args *args);
165 int routing_control_plane_protocols_control_plane_protocol_pim_address_family_rp_static_rp_rp_list_prefix_list_destroy(
166 struct nb_cb_destroy_args *args);
167
168 /* frr-gmp prototypes*/
169 int lib_interface_gmp_address_family_create(
170 struct nb_cb_create_args *args);
171 int lib_interface_gmp_address_family_destroy(
172 struct nb_cb_destroy_args *args);
173 int lib_interface_gmp_address_family_enable_modify(
174 struct nb_cb_modify_args *args);
175 int lib_interface_gmp_address_family_igmp_version_modify(
176 struct nb_cb_modify_args *args);
177 int lib_interface_gmp_address_family_igmp_version_destroy(
178 struct nb_cb_destroy_args *args);
179 int lib_interface_gmp_address_family_mld_version_modify(
180 struct nb_cb_modify_args *args);
181 int lib_interface_gmp_address_family_mld_version_destroy(
182 struct nb_cb_destroy_args *args);
183 int lib_interface_gmp_address_family_query_interval_modify(
184 struct nb_cb_modify_args *args);
185 int lib_interface_gmp_address_family_query_max_response_time_modify(
186 struct nb_cb_modify_args *args);
187 int lib_interface_gmp_address_family_last_member_query_interval_modify(
188 struct nb_cb_modify_args *args);
189 int lib_interface_gmp_address_family_robustness_variable_modify(
190 struct nb_cb_modify_args *args);
191 int lib_interface_gmp_address_family_static_group_create(
192 struct nb_cb_create_args *args);
193 int lib_interface_gmp_address_family_static_group_destroy(
194 struct nb_cb_destroy_args *args);
195
196 /*
197 * Callback registered with routing_nb lib to validate only
198 * one instance of staticd is allowed
199 */
200 int routing_control_plane_protocols_name_validate(
201 struct nb_cb_create_args *args);
202
203 #if PIM_IPV == 4
204 #define FRR_PIM_AF_XPATH_VAL "frr-routing:ipv4"
205 #else
206 #define FRR_PIM_AF_XPATH_VAL "frr-routing:ipv6"
207 #endif
208
209 #define FRR_PIM_VRF_XPATH \
210 "/frr-routing:routing/control-plane-protocols/" \
211 "control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \
212 "frr-pim:pim/address-family[address-family='%s']"
213 #define FRR_PIM_INTERFACE_XPATH \
214 "./frr-pim:pim/address-family[address-family='%s']"
215 #define FRR_PIM_ENABLE_XPATH \
216 "%s/frr-pim:pim/address-family[address-family='%s']/pim-enable"
217 #define FRR_PIM_ROUTER_XPATH \
218 "/frr-pim:pim/address-family[address-family='%s']"
219 #define FRR_PIM_MROUTE_XPATH \
220 "./frr-pim:pim/address-family[address-family='%s']/" \
221 "mroute[source-addr='%s'][group-addr='%s']"
222 #define FRR_PIM_STATIC_RP_XPATH \
223 "/frr-routing:routing/control-plane-protocols/" \
224 "control-plane-protocol[type='%s'][name='%s'][vrf='%s']/" \
225 "frr-pim:pim/address-family[address-family='%s']/" \
226 "frr-pim-rp:rp/static-rp/rp-list[rp-address='%s']"
227 #define FRR_GMP_INTERFACE_XPATH \
228 "./frr-gmp:gmp/address-family[address-family='%s']"
229 #define FRR_GMP_ENABLE_XPATH \
230 "%s/frr-gmp:gmp/address-family[address-family='%s']/enable"
231 #define FRR_GMP_JOIN_XPATH \
232 "./frr-gmp:gmp/address-family[address-family='%s']/" \
233 "static-group[group-addr='%s'][source-addr='%s']"
234 #define FRR_PIM_MSDP_XPATH FRR_PIM_VRF_XPATH "/msdp"
235
236 #endif /* _FRR_PIM_NB_H_ */