]> git.proxmox.com Git - mirror_frr.git/blame - zebra/zebra_nb_rpcs.c
build, vtysh: extract vtysh commands from .xref
[mirror_frr.git] / zebra / zebra_nb_rpcs.c
CommitLineData
ce45ffe7
CS
1/*
2 * Copyright (C) 2020 Cumulus Networks, Inc.
3 * Chirag Shah
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#include <zebra.h>
21#include "northbound.h"
22#include "libfrr.h"
23
24#include "zebra/zebra_nb.h"
c37c6fd8
CS
25#include "zebra/zebra_router.h"
26#include "zebra/zebra_vrf.h"
27#include "zebra/zebra_vxlan.h"
28
29/*
30 * XPath: /frr-zebra:clear-evpn-dup-addr
31 */
60ee8be1 32int clear_evpn_dup_addr_rpc(struct nb_cb_rpc_args *args)
c37c6fd8
CS
33{
34 struct zebra_vrf *zvrf;
35 int ret = NB_OK;
36 struct yang_data *yang_dup_choice = NULL, *yang_dup_vni = NULL,
37 *yang_dup_ip = NULL, *yang_dup_mac = NULL;
38
60ee8be1 39 yang_dup_choice = yang_data_list_find(args->input, "%s/%s", args->xpath,
c37c6fd8
CS
40 "input/clear-dup-choice");
41
42 zvrf = zebra_vrf_get_evpn();
43
44 if (yang_dup_choice
45 && strcmp(yang_dup_choice->value, "all-case") == 0) {
d36228c9 46 zebra_vxlan_clear_dup_detect_vni_all(zvrf);
c37c6fd8
CS
47 } else {
48 vni_t vni;
49 struct ipaddr host_ip = {.ipa_type = IPADDR_NONE};
50 struct ethaddr mac;
51
52 yang_dup_vni = yang_data_list_find(
60ee8be1 53 args->input, "%s/%s", args->xpath,
c37c6fd8
CS
54 "input/clear-dup-choice/single-case/vni-id");
55 if (yang_dup_vni) {
56 vni = yang_str2uint32(yang_dup_vni->value);
57
58 yang_dup_mac = yang_data_list_find(
60ee8be1 59 args->input, "%s/%s", args->xpath,
c37c6fd8
CS
60 "input/clear-dup-choice/single-case/vni-id/mac-addr");
61 yang_dup_ip = yang_data_list_find(
60ee8be1 62 args->input, "%s/%s", args->xpath,
c37c6fd8
CS
63 "input/clear-dup-choice/single-case/vni-id/vni-ipaddr");
64
65 if (yang_dup_mac) {
d36228c9 66 yang_str2mac(yang_dup_mac->value, &mac);
c37c6fd8 67 ret = zebra_vxlan_clear_dup_detect_vni_mac(
9bee0232
CS
68 zvrf, vni, &mac, args->errmsg,
69 args->errmsg_len);
c37c6fd8
CS
70 } else if (yang_dup_ip) {
71 yang_str2ip(yang_dup_ip->value, &host_ip);
72 ret = zebra_vxlan_clear_dup_detect_vni_ip(
9bee0232
CS
73 zvrf, vni, &host_ip, args->errmsg,
74 args->errmsg_len);
c37c6fd8
CS
75 } else
76 ret = zebra_vxlan_clear_dup_detect_vni(zvrf,
77 vni);
78 }
79 }
9bee0232
CS
80 if (ret < 0)
81 return NB_ERR;
c37c6fd8 82
9bee0232 83 return NB_OK;
c37c6fd8 84}
ce45ffe7
CS
85
86/*
87 * XPath: /frr-zebra:get-route-information
88 */
60ee8be1 89int get_route_information_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
90{
91 /* TODO: implement me. */
92 return NB_ERR_NOT_FOUND;
93}
94
95/*
96 * XPath: /frr-zebra:get-v6-mroute-info
97 */
60ee8be1 98int get_v6_mroute_info_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
99{
100 /* TODO: implement me. */
101 return NB_ERR_NOT_FOUND;
102}
103
104/*
105 * XPath: /frr-zebra:get-vrf-info
106 */
60ee8be1 107int get_vrf_info_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
108{
109 /* TODO: implement me. */
110 return NB_ERR_NOT_FOUND;
111}
112
113/*
114 * XPath: /frr-zebra:get-vrf-vni-info
115 */
60ee8be1 116int get_vrf_vni_info_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
117{
118 /* TODO: implement me. */
119 return NB_ERR_NOT_FOUND;
120}
121
122/*
123 * XPath: /frr-zebra:get-evpn-info
124 */
60ee8be1 125int get_evpn_info_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
126{
127 /* TODO: implement me. */
128 return NB_ERR_NOT_FOUND;
129}
130
131/*
132 * XPath: /frr-zebra:get-vni-info
133 */
60ee8be1 134int get_vni_info_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
135{
136 /* TODO: implement me. */
137 return NB_ERR_NOT_FOUND;
138}
139
140/*
141 * XPath: /frr-zebra:get-evpn-vni-rmac
142 */
60ee8be1 143int get_evpn_vni_rmac_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
144{
145 /* TODO: implement me. */
146 return NB_ERR_NOT_FOUND;
147}
148
149/*
150 * XPath: /frr-zebra:get-evpn-vni-nexthops
151 */
60ee8be1 152int get_evpn_vni_nexthops_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
153{
154 /* TODO: implement me. */
155 return NB_ERR_NOT_FOUND;
156}
157
158/*
159 * XPath: /frr-zebra:get-evpn-macs
160 */
60ee8be1 161int get_evpn_macs_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
162{
163 /* TODO: implement me. */
164 return NB_ERR_NOT_FOUND;
165}
166
167/*
168 * XPath: /frr-zebra:get-evpn-arp-cache
169 */
60ee8be1 170int get_evpn_arp_cache_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
171{
172 /* TODO: implement me. */
173 return NB_ERR_NOT_FOUND;
174}
175
176/*
177 * XPath: /frr-zebra:get-pbr-ipset
178 */
60ee8be1 179int get_pbr_ipset_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
180{
181 /* TODO: implement me. */
182 return NB_ERR_NOT_FOUND;
183}
184
185/*
186 * XPath: /frr-zebra:get-pbr-iptable
187 */
60ee8be1 188int get_pbr_iptable_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
189{
190 /* TODO: implement me. */
191 return NB_ERR_NOT_FOUND;
192}
193
194/*
195 * XPath: /frr-zebra:get-debugs
196 */
60ee8be1 197int get_debugs_rpc(struct nb_cb_rpc_args *args)
ce45ffe7
CS
198{
199 /* TODO: implement me. */
200 return NB_ERR_NOT_FOUND;
201}