Coverage Report

Created: 2026-08-26 06:54

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