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