Coverage Report

Created: 2025-12-12 06:43

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/frr/lib/vrf.h
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
 * VRF related header.
4
 * Copyright (C) 2014 6WIND S.A.
5
 */
6
7
#ifndef _ZEBRA_VRF_H
8
#define _ZEBRA_VRF_H
9
10
#include "openbsd-tree.h"
11
#include "linklist.h"
12
#include "qobj.h"
13
#include "vty.h"
14
#include "ns.h"
15
16
#ifdef __cplusplus
17
extern "C" {
18
#endif
19
20
/* The default VRF ID */
21
2.54k
#define VRF_UNKNOWN UINT32_MAX
22
23
/* Pending: May need to refine this. */
24
#ifndef IFLA_VRF_MAX
25
enum { IFLA_VRF_UNSPEC, IFLA_VRF_TABLE, __IFLA_VRF_MAX };
26
27
#define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1)
28
#endif
29
30
0
#define VRF_NAMSIZ      36
31
0
#define NS_NAMSIZ 36
32
33
/*
34
 * The command strings
35
 */
36
#define VRF_CMD_HELP_STR    "Specify the VRF\nThe VRF name\n"
37
#define VRF_ALL_CMD_HELP_STR    "Specify the VRF\nAll VRFs\n"
38
#define VRF_FULL_CMD_HELP_STR   "Specify the VRF\nThe VRF name\nAll VRFs\n"
39
40
0
#define FRR_VRF_XPATH "/frr-vrf:lib/vrf"
41
0
#define FRR_VRF_KEY_XPATH "/frr-vrf:lib/vrf[name='%s']"
42
43
/*
44
 * Pass some OS specific data up through
45
 * to the daemons
46
 */
47
struct vrf_data {
48
  union {
49
    struct {
50
      uint32_t table_id;
51
      char netns_name[NS_NAMSIZ];
52
    } l;
53
  };
54
};
55
56
struct vrf {
57
  RB_ENTRY(vrf) id_entry, name_entry;
58
59
  /* Identifier, same as the vector index */
60
  vrf_id_t vrf_id;
61
62
  /* Name */
63
  char name[VRF_NAMSIZ + 1];
64
65
  /* Zebra internal VRF status */
66
  uint8_t status;
67
0
#define VRF_ACTIVE     (1 << 0) /* VRF is up in kernel */
68
#define VRF_CONFIGURED (1 << 1) /* VRF has some FRR configuration */
69
70
  /* Interfaces belonging to this VRF */
71
  struct if_name_head ifaces_by_name;
72
  struct if_index_head ifaces_by_index;
73
74
  /* User data */
75
  void *info;
76
77
  /* The table_id from the kernel */
78
  struct vrf_data data;
79
80
  /* Back pointer to namespace context */
81
  void *ns_ctxt;
82
83
  QOBJ_FIELDS;
84
};
85
RB_HEAD(vrf_id_head, vrf);
86
RB_PROTOTYPE(vrf_id_head, vrf, id_entry, vrf_id_compare)
87
RB_HEAD(vrf_name_head, vrf);
88
RB_PROTOTYPE(vrf_name_head, vrf, name_entry, vrf_name_compare)
89
DECLARE_QOBJ_TYPE(vrf);
90
91
/* Allow VRF with netns as backend */
92
enum vrf_backend_type {
93
  VRF_BACKEND_VRF_LITE,
94
  VRF_BACKEND_NETNS,
95
  VRF_BACKEND_UNKNOWN,
96
  VRF_BACKEND_MAX,
97
};
98
99
extern struct vrf_id_head vrfs_by_id;
100
extern struct vrf_name_head vrfs_by_name;
101
102
extern struct vrf *vrf_lookup_by_id(vrf_id_t);
103
extern struct vrf *vrf_lookup_by_name(const char *);
104
extern struct vrf *vrf_get(vrf_id_t, const char *);
105
extern struct vrf *vrf_update(vrf_id_t new_vrf_id, const char *name);
106
extern const char *vrf_id_to_name(vrf_id_t vrf_id);
107
108
0
#define VRF_LOGNAME(V) V ? V->name : "Unknown"
109
110
#define VRF_GET_ID(V, NAME, USE_JSON)                                          \
111
0
  do {                                                                   \
112
0
    struct vrf *_vrf;                                              \
113
0
    if (!(_vrf = vrf_lookup_by_name(NAME))) {                      \
114
0
      if (USE_JSON) {                                        \
115
0
        vty_out(vty, "{}\n");                          \
116
0
      } else {                                               \
117
0
        vty_out(vty, "%% VRF %s not found\n", NAME);   \
118
0
      }                                                      \
119
0
      return CMD_WARNING;                                    \
120
0
    }                                                              \
121
0
    if (_vrf->vrf_id == VRF_UNKNOWN) {                             \
122
0
      if (USE_JSON) {                                        \
123
0
        vty_out(vty, "{}\n");                          \
124
0
      } else {                                               \
125
0
        vty_out(vty, "%% VRF %s not active\n", NAME);  \
126
0
      }                                                      \
127
0
      return CMD_WARNING;                                    \
128
0
    }                                                              \
129
0
    (V) = _vrf->vrf_id;                                            \
130
0
  } while (0)
131
132
/*
133
 * Check whether the VRF is enabled.
134
 */
135
static inline int vrf_is_enabled(struct vrf *vrf)
136
3
{
137
3
  return vrf && CHECK_FLAG(vrf->status, VRF_ACTIVE);
138
3
}
Unexecuted instantiation: ospf_main.c:vrf_is_enabled
Unexecuted instantiation: ospf_bfd.c:vrf_is_enabled
Unexecuted instantiation: ospf_dump.c:vrf_is_enabled
Unexecuted instantiation: ospf_dump_api.c:vrf_is_enabled
Unexecuted instantiation: ospf_interface.c:vrf_is_enabled
Unexecuted instantiation: ospf_lsa.c:vrf_is_enabled
Unexecuted instantiation: ospf_lsdb.c:vrf_is_enabled
Unexecuted instantiation: ospf_neighbor.c:vrf_is_enabled
Unexecuted instantiation: ospf_network.c:vrf_is_enabled
Unexecuted instantiation: ospf_nsm.c:vrf_is_enabled
Unexecuted instantiation: ospf_opaque.c:vrf_is_enabled
Unexecuted instantiation: ospf_packet.c:vrf_is_enabled
Unexecuted instantiation: ospf_ri.c:vrf_is_enabled
Unexecuted instantiation: ospf_routemap.c:vrf_is_enabled
Unexecuted instantiation: ospf_spf.c:vrf_is_enabled
Unexecuted instantiation: ospf_ti_lfa.c:vrf_is_enabled
Unexecuted instantiation: ospf_sr.c:vrf_is_enabled
Unexecuted instantiation: ospf_te.c:vrf_is_enabled
Unexecuted instantiation: ospf_vty.c:vrf_is_enabled
Unexecuted instantiation: ospf_zebra.c:vrf_is_enabled
Unexecuted instantiation: ospfd.c:vrf_is_enabled
Unexecuted instantiation: ospf_gr_helper.c:vrf_is_enabled
Unexecuted instantiation: ospf_abr.c:vrf_is_enabled
Unexecuted instantiation: ospf_apiserver.c:vrf_is_enabled
Unexecuted instantiation: ospf_asbr.c:vrf_is_enabled
Unexecuted instantiation: ospf_ase.c:vrf_is_enabled
Unexecuted instantiation: ospf_ext.c:vrf_is_enabled
Unexecuted instantiation: ospf_flood.c:vrf_is_enabled
Unexecuted instantiation: ospf_gr.c:vrf_is_enabled
Unexecuted instantiation: ospf_ia.c:vrf_is_enabled
Unexecuted instantiation: ospf_ism.c:vrf_is_enabled
Unexecuted instantiation: ospf_ldp_sync.c:vrf_is_enabled
Unexecuted instantiation: ospf_route.c:vrf_is_enabled
Unexecuted instantiation: ospf_api.c:vrf_is_enabled
Unexecuted instantiation: bfd.c:vrf_is_enabled
Unexecuted instantiation: command.c:vrf_is_enabled
Unexecuted instantiation: if.c:vrf_is_enabled
Unexecuted instantiation: ldp_sync.c:vrf_is_enabled
Unexecuted instantiation: libfrr.c:vrf_is_enabled
Unexecuted instantiation: link_state.c:vrf_is_enabled
Unexecuted instantiation: log.c:vrf_is_enabled
Unexecuted instantiation: mgmt_be_client.c:vrf_is_enabled
Unexecuted instantiation: mlag.c:vrf_is_enabled
Unexecuted instantiation: nexthop.c:vrf_is_enabled
Unexecuted instantiation: netns_linux.c:vrf_is_enabled
Unexecuted instantiation: nexthop_group.c:vrf_is_enabled
vrf.c:vrf_is_enabled
Line
Count
Source
136
3
{
137
3
  return vrf && CHECK_FLAG(vrf->status, VRF_ACTIVE);
138
3
}
Unexecuted instantiation: zclient.c:vrf_is_enabled
Unexecuted instantiation: routing_nb_config.c:vrf_is_enabled
Unexecuted instantiation: connected.c:vrf_is_enabled
Unexecuted instantiation: if_netlink.c:vrf_is_enabled
Unexecuted instantiation: interface.c:vrf_is_enabled
Unexecuted instantiation: ioctl.c:vrf_is_enabled
Unexecuted instantiation: kernel_netlink.c:vrf_is_enabled
Unexecuted instantiation: label_manager.c:vrf_is_enabled
Unexecuted instantiation: main.c:vrf_is_enabled
Unexecuted instantiation: netconf_netlink.c:vrf_is_enabled
Unexecuted instantiation: redistribute.c:vrf_is_enabled
Unexecuted instantiation: router-id.c:vrf_is_enabled
Unexecuted instantiation: rt_netlink.c:vrf_is_enabled
Unexecuted instantiation: rtadv.c:vrf_is_enabled
Unexecuted instantiation: rtread_netlink.c:vrf_is_enabled
Unexecuted instantiation: rule_netlink.c:vrf_is_enabled
Unexecuted instantiation: table_manager.c:vrf_is_enabled
Unexecuted instantiation: tc_netlink.c:vrf_is_enabled
Unexecuted instantiation: zapi_msg.c:vrf_is_enabled
Unexecuted instantiation: zebra_affinitymap.c:vrf_is_enabled
Unexecuted instantiation: zebra_dplane.c:vrf_is_enabled
Unexecuted instantiation: zebra_gr.c:vrf_is_enabled
Unexecuted instantiation: zebra_l2.c:vrf_is_enabled
Unexecuted instantiation: zebra_l2_bridge_if.c:vrf_is_enabled
Unexecuted instantiation: zebra_evpn.c:vrf_is_enabled
Unexecuted instantiation: zebra_evpn_mac.c:vrf_is_enabled
Unexecuted instantiation: zebra_evpn_neigh.c:vrf_is_enabled
Unexecuted instantiation: zebra_mlag.c:vrf_is_enabled
Unexecuted instantiation: zebra_mlag_vty.c:vrf_is_enabled
Unexecuted instantiation: zebra_mpls.c:vrf_is_enabled
Unexecuted instantiation: zebra_mpls_netlink.c:vrf_is_enabled
Unexecuted instantiation: zebra_mpls_null.c:vrf_is_enabled
Unexecuted instantiation: zebra_mpls_vty.c:vrf_is_enabled
Unexecuted instantiation: zebra_srv6.c:vrf_is_enabled
Unexecuted instantiation: zebra_srv6_vty.c:vrf_is_enabled
Unexecuted instantiation: zebra_mroute.c:vrf_is_enabled
Unexecuted instantiation: zebra_nb.c:vrf_is_enabled
Unexecuted instantiation: zebra_nb_config.c:vrf_is_enabled
Unexecuted instantiation: zebra_nb_rpcs.c:vrf_is_enabled
Unexecuted instantiation: zebra_nb_state.c:vrf_is_enabled
Unexecuted instantiation: zebra_netns_id.c:vrf_is_enabled
Unexecuted instantiation: zebra_netns_notify.c:vrf_is_enabled
Unexecuted instantiation: zebra_nhg.c:vrf_is_enabled
Unexecuted instantiation: zebra_ns.c:vrf_is_enabled
Unexecuted instantiation: zebra_opaque.c:vrf_is_enabled
Unexecuted instantiation: zebra_pbr.c:vrf_is_enabled
Unexecuted instantiation: zebra_ptm.c:vrf_is_enabled
Unexecuted instantiation: zebra_ptm_redistribute.c:vrf_is_enabled
Unexecuted instantiation: zebra_pw.c:vrf_is_enabled
Unexecuted instantiation: zebra_rib.c:vrf_is_enabled
Unexecuted instantiation: zebra_router.c:vrf_is_enabled
Unexecuted instantiation: zebra_rnh.c:vrf_is_enabled
Unexecuted instantiation: zebra_routemap.c:vrf_is_enabled
Unexecuted instantiation: zebra_routemap_nb_config.c:vrf_is_enabled
Unexecuted instantiation: zebra_script.c:vrf_is_enabled
Unexecuted instantiation: zebra_srte.c:vrf_is_enabled
Unexecuted instantiation: zebra_tc.c:vrf_is_enabled
Unexecuted instantiation: zebra_vrf.c:vrf_is_enabled
Unexecuted instantiation: zebra_vty.c:vrf_is_enabled
Unexecuted instantiation: zebra_vxlan.c:vrf_is_enabled
Unexecuted instantiation: zebra_vxlan_if.c:vrf_is_enabled
Unexecuted instantiation: zebra_evpn_mh.c:vrf_is_enabled
Unexecuted instantiation: zebra_neigh.c:vrf_is_enabled
Unexecuted instantiation: zserv.c:vrf_is_enabled
Unexecuted instantiation: debug_nl.c:vrf_is_enabled
Unexecuted instantiation: bgp_main.c:vrf_is_enabled
Unexecuted instantiation: bgp_attr.c:vrf_is_enabled
Unexecuted instantiation: bgp_attr_evpn.c:vrf_is_enabled
Unexecuted instantiation: bgp_clist.c:vrf_is_enabled
Unexecuted instantiation: bgp_community.c:vrf_is_enabled
Unexecuted instantiation: bgp_community_alias.c:vrf_is_enabled
Unexecuted instantiation: bgp_debug.c:vrf_is_enabled
Unexecuted instantiation: bgp_dump.c:vrf_is_enabled
Unexecuted instantiation: bgp_ecommunity.c:vrf_is_enabled
Unexecuted instantiation: bgp_evpn.c:vrf_is_enabled
Unexecuted instantiation: bgp_evpn_mh.c:vrf_is_enabled
Unexecuted instantiation: bgp_evpn_vty.c:vrf_is_enabled
Unexecuted instantiation: bgp_filter.c:vrf_is_enabled
Unexecuted instantiation: bgp_flowspec_vty.c:vrf_is_enabled
Unexecuted instantiation: bgp_fsm.c:vrf_is_enabled
Unexecuted instantiation: bgp_io.c:vrf_is_enabled
Unexecuted instantiation: bgp_keepalives.c:vrf_is_enabled
Unexecuted instantiation: bgp_labelpool.c:vrf_is_enabled
Unexecuted instantiation: bgp_lcommunity.c:vrf_is_enabled
Unexecuted instantiation: bgp_mac.c:vrf_is_enabled
Unexecuted instantiation: bgp_mpath.c:vrf_is_enabled
Unexecuted instantiation: bgp_mplsvpn.c:vrf_is_enabled
Unexecuted instantiation: bgp_network.c:vrf_is_enabled
Unexecuted instantiation: bgp_nexthop.c:vrf_is_enabled
Unexecuted instantiation: bgp_nht.c:vrf_is_enabled
Unexecuted instantiation: bgp_packet.c:vrf_is_enabled
Unexecuted instantiation: bgp_pbr.c:vrf_is_enabled
Unexecuted instantiation: bgp_rd.c:vrf_is_enabled
Unexecuted instantiation: bgp_regex.c:vrf_is_enabled
Unexecuted instantiation: bgp_route.c:vrf_is_enabled
Unexecuted instantiation: bgp_routemap.c:vrf_is_enabled
Unexecuted instantiation: bgp_routemap_nb.c:vrf_is_enabled
Unexecuted instantiation: bgp_routemap_nb_config.c:vrf_is_enabled
Unexecuted instantiation: bgp_table.c:vrf_is_enabled
Unexecuted instantiation: bgp_updgrp.c:vrf_is_enabled
Unexecuted instantiation: bgp_updgrp_adv.c:vrf_is_enabled
Unexecuted instantiation: bgp_updgrp_packet.c:vrf_is_enabled
Unexecuted instantiation: bgp_vpn.c:vrf_is_enabled
Unexecuted instantiation: bgp_vty.c:vrf_is_enabled
Unexecuted instantiation: bgp_zebra.c:vrf_is_enabled
Unexecuted instantiation: bgpd.c:vrf_is_enabled
Unexecuted instantiation: bgp_rfapi_cfg.c:vrf_is_enabled
Unexecuted instantiation: rfapi_import.c:vrf_is_enabled
Unexecuted instantiation: rfapi.c:vrf_is_enabled
Unexecuted instantiation: rfapi_ap.c:vrf_is_enabled
Unexecuted instantiation: rfapi_encap_tlv.c:vrf_is_enabled
Unexecuted instantiation: rfapi_nve_addr.c:vrf_is_enabled
Unexecuted instantiation: rfapi_monitor.c:vrf_is_enabled
Unexecuted instantiation: rfapi_rib.c:vrf_is_enabled
Unexecuted instantiation: rfapi_vty.c:vrf_is_enabled
Unexecuted instantiation: vnc_export_bgp.c:vrf_is_enabled
Unexecuted instantiation: vnc_export_table.c:vrf_is_enabled
Unexecuted instantiation: vnc_import_bgp.c:vrf_is_enabled
Unexecuted instantiation: vnc_zebra.c:vrf_is_enabled
Unexecuted instantiation: bgp_addpath.c:vrf_is_enabled
Unexecuted instantiation: bgp_advertise.c:vrf_is_enabled
Unexecuted instantiation: bgp_aspath.c:vrf_is_enabled
Unexecuted instantiation: bgp_bfd.c:vrf_is_enabled
Unexecuted instantiation: bgp_conditional_adv.c:vrf_is_enabled
Unexecuted instantiation: bgp_damp.c:vrf_is_enabled
Unexecuted instantiation: bgp_encap_tlv.c:vrf_is_enabled
Unexecuted instantiation: bgp_flowspec.c:vrf_is_enabled
Unexecuted instantiation: bgp_flowspec_util.c:vrf_is_enabled
Unexecuted instantiation: bgp_label.c:vrf_is_enabled
Unexecuted instantiation: bgp_open.c:vrf_is_enabled
Unexecuted instantiation: rfp_example.c:vrf_is_enabled
Unexecuted instantiation: pim_assert.c:vrf_is_enabled
Unexecuted instantiation: pim_bfd.c:vrf_is_enabled
Unexecuted instantiation: pim_bsm.c:vrf_is_enabled
Unexecuted instantiation: pim_cmd_common.c:vrf_is_enabled
Unexecuted instantiation: pim_hello.c:vrf_is_enabled
Unexecuted instantiation: pim_iface.c:vrf_is_enabled
Unexecuted instantiation: pim_ifchannel.c:vrf_is_enabled
Unexecuted instantiation: pim_instance.c:vrf_is_enabled
Unexecuted instantiation: pim_join.c:vrf_is_enabled
Unexecuted instantiation: pim_jp_agg.c:vrf_is_enabled
Unexecuted instantiation: pim_macro.c:vrf_is_enabled
Unexecuted instantiation: pim_mroute.c:vrf_is_enabled
Unexecuted instantiation: pim_msg.c:vrf_is_enabled
Unexecuted instantiation: pim_nb.c:vrf_is_enabled
Unexecuted instantiation: pim_nb_config.c:vrf_is_enabled
Unexecuted instantiation: pim_neighbor.c:vrf_is_enabled
Unexecuted instantiation: pim_nht.c:vrf_is_enabled
Unexecuted instantiation: pim_oil.c:vrf_is_enabled
Unexecuted instantiation: pim_pim.c:vrf_is_enabled
Unexecuted instantiation: pim_rp.c:vrf_is_enabled
Unexecuted instantiation: pim_rpf.c:vrf_is_enabled
Unexecuted instantiation: pim_sock.c:vrf_is_enabled
Unexecuted instantiation: pim_ssm.c:vrf_is_enabled
Unexecuted instantiation: pim_ssmpingd.c:vrf_is_enabled
Unexecuted instantiation: pim_static.c:vrf_is_enabled
Unexecuted instantiation: pim_tib.c:vrf_is_enabled
Unexecuted instantiation: pim_tlv.c:vrf_is_enabled
Unexecuted instantiation: pim_upstream.c:vrf_is_enabled
Unexecuted instantiation: pim_util.c:vrf_is_enabled
Unexecuted instantiation: pim_vty.c:vrf_is_enabled
Unexecuted instantiation: pim_zebra.c:vrf_is_enabled
Unexecuted instantiation: pim_zlookup.c:vrf_is_enabled
Unexecuted instantiation: pim_vxlan.c:vrf_is_enabled
Unexecuted instantiation: pim_register.c:vrf_is_enabled
Unexecuted instantiation: pimd.c:vrf_is_enabled
Unexecuted instantiation: pim_cmd.c:vrf_is_enabled
Unexecuted instantiation: pim_igmp.c:vrf_is_enabled
Unexecuted instantiation: pim_igmp_mtrace.c:vrf_is_enabled
Unexecuted instantiation: pim_igmpv2.c:vrf_is_enabled
Unexecuted instantiation: pim_igmpv3.c:vrf_is_enabled
Unexecuted instantiation: pim_main.c:vrf_is_enabled
Unexecuted instantiation: pim_mlag.c:vrf_is_enabled
Unexecuted instantiation: pim_msdp.c:vrf_is_enabled
Unexecuted instantiation: pim_msdp_packet.c:vrf_is_enabled
Unexecuted instantiation: pim_msdp_socket.c:vrf_is_enabled
Unexecuted instantiation: pim_zpthread.c:vrf_is_enabled
139
140
/* check if the vrf is user configured */
141
static inline int vrf_is_user_cfged(struct vrf *vrf)
142
0
{
143
0
  return vrf && CHECK_FLAG(vrf->status, VRF_CONFIGURED);
144
0
}
Unexecuted instantiation: ospf_main.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_bfd.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_dump.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_dump_api.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_interface.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_lsa.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_lsdb.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_neighbor.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_network.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_nsm.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_opaque.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_packet.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_ri.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_routemap.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_spf.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_ti_lfa.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_sr.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_te.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_vty.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_zebra.c:vrf_is_user_cfged
Unexecuted instantiation: ospfd.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_gr_helper.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_abr.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_apiserver.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_asbr.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_ase.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_ext.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_flood.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_gr.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_ia.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_ism.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_ldp_sync.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_route.c:vrf_is_user_cfged
Unexecuted instantiation: ospf_api.c:vrf_is_user_cfged
Unexecuted instantiation: bfd.c:vrf_is_user_cfged
Unexecuted instantiation: command.c:vrf_is_user_cfged
Unexecuted instantiation: if.c:vrf_is_user_cfged
Unexecuted instantiation: ldp_sync.c:vrf_is_user_cfged
Unexecuted instantiation: libfrr.c:vrf_is_user_cfged
Unexecuted instantiation: link_state.c:vrf_is_user_cfged
Unexecuted instantiation: log.c:vrf_is_user_cfged
Unexecuted instantiation: mgmt_be_client.c:vrf_is_user_cfged
Unexecuted instantiation: mlag.c:vrf_is_user_cfged
Unexecuted instantiation: nexthop.c:vrf_is_user_cfged
Unexecuted instantiation: netns_linux.c:vrf_is_user_cfged
Unexecuted instantiation: nexthop_group.c:vrf_is_user_cfged
Unexecuted instantiation: vrf.c:vrf_is_user_cfged
Unexecuted instantiation: zclient.c:vrf_is_user_cfged
Unexecuted instantiation: routing_nb_config.c:vrf_is_user_cfged
Unexecuted instantiation: connected.c:vrf_is_user_cfged
Unexecuted instantiation: if_netlink.c:vrf_is_user_cfged
Unexecuted instantiation: interface.c:vrf_is_user_cfged
Unexecuted instantiation: ioctl.c:vrf_is_user_cfged
Unexecuted instantiation: kernel_netlink.c:vrf_is_user_cfged
Unexecuted instantiation: label_manager.c:vrf_is_user_cfged
Unexecuted instantiation: main.c:vrf_is_user_cfged
Unexecuted instantiation: netconf_netlink.c:vrf_is_user_cfged
Unexecuted instantiation: redistribute.c:vrf_is_user_cfged
Unexecuted instantiation: router-id.c:vrf_is_user_cfged
Unexecuted instantiation: rt_netlink.c:vrf_is_user_cfged
Unexecuted instantiation: rtadv.c:vrf_is_user_cfged
Unexecuted instantiation: rtread_netlink.c:vrf_is_user_cfged
Unexecuted instantiation: rule_netlink.c:vrf_is_user_cfged
Unexecuted instantiation: table_manager.c:vrf_is_user_cfged
Unexecuted instantiation: tc_netlink.c:vrf_is_user_cfged
Unexecuted instantiation: zapi_msg.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_affinitymap.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_dplane.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_gr.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_l2.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_l2_bridge_if.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_evpn.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_evpn_mac.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_evpn_neigh.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_mlag.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_mlag_vty.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_mpls.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_mpls_netlink.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_mpls_null.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_mpls_vty.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_srv6.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_srv6_vty.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_mroute.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_nb.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_nb_config.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_nb_rpcs.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_nb_state.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_netns_id.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_netns_notify.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_nhg.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_ns.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_opaque.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_pbr.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_ptm.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_ptm_redistribute.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_pw.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_rib.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_router.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_rnh.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_routemap.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_routemap_nb_config.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_script.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_srte.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_tc.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_vrf.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_vty.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_vxlan.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_vxlan_if.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_evpn_mh.c:vrf_is_user_cfged
Unexecuted instantiation: zebra_neigh.c:vrf_is_user_cfged
Unexecuted instantiation: zserv.c:vrf_is_user_cfged
Unexecuted instantiation: debug_nl.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_main.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_attr.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_attr_evpn.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_clist.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_community.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_community_alias.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_debug.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_dump.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_ecommunity.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_evpn.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_evpn_mh.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_evpn_vty.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_filter.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_flowspec_vty.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_fsm.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_io.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_keepalives.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_labelpool.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_lcommunity.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_mac.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_mpath.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_mplsvpn.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_network.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_nexthop.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_nht.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_packet.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_pbr.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_rd.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_regex.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_route.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_routemap.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_routemap_nb.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_routemap_nb_config.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_table.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_updgrp.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_updgrp_adv.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_updgrp_packet.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_vpn.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_vty.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_zebra.c:vrf_is_user_cfged
Unexecuted instantiation: bgpd.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_rfapi_cfg.c:vrf_is_user_cfged
Unexecuted instantiation: rfapi_import.c:vrf_is_user_cfged
Unexecuted instantiation: rfapi.c:vrf_is_user_cfged
Unexecuted instantiation: rfapi_ap.c:vrf_is_user_cfged
Unexecuted instantiation: rfapi_encap_tlv.c:vrf_is_user_cfged
Unexecuted instantiation: rfapi_nve_addr.c:vrf_is_user_cfged
Unexecuted instantiation: rfapi_monitor.c:vrf_is_user_cfged
Unexecuted instantiation: rfapi_rib.c:vrf_is_user_cfged
Unexecuted instantiation: rfapi_vty.c:vrf_is_user_cfged
Unexecuted instantiation: vnc_export_bgp.c:vrf_is_user_cfged
Unexecuted instantiation: vnc_export_table.c:vrf_is_user_cfged
Unexecuted instantiation: vnc_import_bgp.c:vrf_is_user_cfged
Unexecuted instantiation: vnc_zebra.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_addpath.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_advertise.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_aspath.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_bfd.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_conditional_adv.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_damp.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_encap_tlv.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_flowspec.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_flowspec_util.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_label.c:vrf_is_user_cfged
Unexecuted instantiation: bgp_open.c:vrf_is_user_cfged
Unexecuted instantiation: rfp_example.c:vrf_is_user_cfged
Unexecuted instantiation: pim_assert.c:vrf_is_user_cfged
Unexecuted instantiation: pim_bfd.c:vrf_is_user_cfged
Unexecuted instantiation: pim_bsm.c:vrf_is_user_cfged
Unexecuted instantiation: pim_cmd_common.c:vrf_is_user_cfged
Unexecuted instantiation: pim_hello.c:vrf_is_user_cfged
Unexecuted instantiation: pim_iface.c:vrf_is_user_cfged
Unexecuted instantiation: pim_ifchannel.c:vrf_is_user_cfged
Unexecuted instantiation: pim_instance.c:vrf_is_user_cfged
Unexecuted instantiation: pim_join.c:vrf_is_user_cfged
Unexecuted instantiation: pim_jp_agg.c:vrf_is_user_cfged
Unexecuted instantiation: pim_macro.c:vrf_is_user_cfged
Unexecuted instantiation: pim_mroute.c:vrf_is_user_cfged
Unexecuted instantiation: pim_msg.c:vrf_is_user_cfged
Unexecuted instantiation: pim_nb.c:vrf_is_user_cfged
Unexecuted instantiation: pim_nb_config.c:vrf_is_user_cfged
Unexecuted instantiation: pim_neighbor.c:vrf_is_user_cfged
Unexecuted instantiation: pim_nht.c:vrf_is_user_cfged
Unexecuted instantiation: pim_oil.c:vrf_is_user_cfged
Unexecuted instantiation: pim_pim.c:vrf_is_user_cfged
Unexecuted instantiation: pim_rp.c:vrf_is_user_cfged
Unexecuted instantiation: pim_rpf.c:vrf_is_user_cfged
Unexecuted instantiation: pim_sock.c:vrf_is_user_cfged
Unexecuted instantiation: pim_ssm.c:vrf_is_user_cfged
Unexecuted instantiation: pim_ssmpingd.c:vrf_is_user_cfged
Unexecuted instantiation: pim_static.c:vrf_is_user_cfged
Unexecuted instantiation: pim_tib.c:vrf_is_user_cfged
Unexecuted instantiation: pim_tlv.c:vrf_is_user_cfged
Unexecuted instantiation: pim_upstream.c:vrf_is_user_cfged
Unexecuted instantiation: pim_util.c:vrf_is_user_cfged
Unexecuted instantiation: pim_vty.c:vrf_is_user_cfged
Unexecuted instantiation: pim_zebra.c:vrf_is_user_cfged
Unexecuted instantiation: pim_zlookup.c:vrf_is_user_cfged
Unexecuted instantiation: pim_vxlan.c:vrf_is_user_cfged
Unexecuted instantiation: pim_register.c:vrf_is_user_cfged
Unexecuted instantiation: pimd.c:vrf_is_user_cfged
Unexecuted instantiation: pim_cmd.c:vrf_is_user_cfged
Unexecuted instantiation: pim_igmp.c:vrf_is_user_cfged
Unexecuted instantiation: pim_igmp_mtrace.c:vrf_is_user_cfged
Unexecuted instantiation: pim_igmpv2.c:vrf_is_user_cfged
Unexecuted instantiation: pim_igmpv3.c:vrf_is_user_cfged
Unexecuted instantiation: pim_main.c:vrf_is_user_cfged
Unexecuted instantiation: pim_mlag.c:vrf_is_user_cfged
Unexecuted instantiation: pim_msdp.c:vrf_is_user_cfged
Unexecuted instantiation: pim_msdp_packet.c:vrf_is_user_cfged
Unexecuted instantiation: pim_msdp_socket.c:vrf_is_user_cfged
Unexecuted instantiation: pim_zpthread.c:vrf_is_user_cfged
145
146
static inline uint32_t vrf_interface_count(struct vrf *vrf)
147
0
{
148
0
  uint32_t count = 0;
149
0
  struct interface *ifp;
150
0
151
0
  RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
152
0
    /* skip the l3mdev */
153
0
    if (strncmp(ifp->name, vrf->name, VRF_NAMSIZ) == 0)
154
0
      continue;
155
0
    count++;
156
0
  }
157
0
  return count;
158
0
}
Unexecuted instantiation: ospf_main.c:vrf_interface_count
Unexecuted instantiation: ospf_bfd.c:vrf_interface_count
Unexecuted instantiation: ospf_dump.c:vrf_interface_count
Unexecuted instantiation: ospf_dump_api.c:vrf_interface_count
Unexecuted instantiation: ospf_interface.c:vrf_interface_count
Unexecuted instantiation: ospf_lsa.c:vrf_interface_count
Unexecuted instantiation: ospf_lsdb.c:vrf_interface_count
Unexecuted instantiation: ospf_neighbor.c:vrf_interface_count
Unexecuted instantiation: ospf_network.c:vrf_interface_count
Unexecuted instantiation: ospf_nsm.c:vrf_interface_count
Unexecuted instantiation: ospf_opaque.c:vrf_interface_count
Unexecuted instantiation: ospf_packet.c:vrf_interface_count
Unexecuted instantiation: ospf_ri.c:vrf_interface_count
Unexecuted instantiation: ospf_routemap.c:vrf_interface_count
Unexecuted instantiation: ospf_spf.c:vrf_interface_count
Unexecuted instantiation: ospf_ti_lfa.c:vrf_interface_count
Unexecuted instantiation: ospf_sr.c:vrf_interface_count
Unexecuted instantiation: ospf_te.c:vrf_interface_count
Unexecuted instantiation: ospf_vty.c:vrf_interface_count
Unexecuted instantiation: ospf_zebra.c:vrf_interface_count
Unexecuted instantiation: ospfd.c:vrf_interface_count
Unexecuted instantiation: ospf_gr_helper.c:vrf_interface_count
Unexecuted instantiation: ospf_abr.c:vrf_interface_count
Unexecuted instantiation: ospf_apiserver.c:vrf_interface_count
Unexecuted instantiation: ospf_asbr.c:vrf_interface_count
Unexecuted instantiation: ospf_ase.c:vrf_interface_count
Unexecuted instantiation: ospf_ext.c:vrf_interface_count
Unexecuted instantiation: ospf_flood.c:vrf_interface_count
Unexecuted instantiation: ospf_gr.c:vrf_interface_count
Unexecuted instantiation: ospf_ia.c:vrf_interface_count
Unexecuted instantiation: ospf_ism.c:vrf_interface_count
Unexecuted instantiation: ospf_ldp_sync.c:vrf_interface_count
Unexecuted instantiation: ospf_route.c:vrf_interface_count
Unexecuted instantiation: ospf_api.c:vrf_interface_count
Unexecuted instantiation: bfd.c:vrf_interface_count
Unexecuted instantiation: command.c:vrf_interface_count
Unexecuted instantiation: if.c:vrf_interface_count
Unexecuted instantiation: ldp_sync.c:vrf_interface_count
Unexecuted instantiation: libfrr.c:vrf_interface_count
Unexecuted instantiation: link_state.c:vrf_interface_count
Unexecuted instantiation: log.c:vrf_interface_count
Unexecuted instantiation: mgmt_be_client.c:vrf_interface_count
Unexecuted instantiation: mlag.c:vrf_interface_count
Unexecuted instantiation: nexthop.c:vrf_interface_count
Unexecuted instantiation: netns_linux.c:vrf_interface_count
Unexecuted instantiation: nexthop_group.c:vrf_interface_count
Unexecuted instantiation: vrf.c:vrf_interface_count
Unexecuted instantiation: zclient.c:vrf_interface_count
Unexecuted instantiation: routing_nb_config.c:vrf_interface_count
Unexecuted instantiation: connected.c:vrf_interface_count
Unexecuted instantiation: if_netlink.c:vrf_interface_count
Unexecuted instantiation: interface.c:vrf_interface_count
Unexecuted instantiation: ioctl.c:vrf_interface_count
Unexecuted instantiation: kernel_netlink.c:vrf_interface_count
Unexecuted instantiation: label_manager.c:vrf_interface_count
Unexecuted instantiation: main.c:vrf_interface_count
Unexecuted instantiation: netconf_netlink.c:vrf_interface_count
Unexecuted instantiation: redistribute.c:vrf_interface_count
Unexecuted instantiation: router-id.c:vrf_interface_count
Unexecuted instantiation: rt_netlink.c:vrf_interface_count
Unexecuted instantiation: rtadv.c:vrf_interface_count
Unexecuted instantiation: rtread_netlink.c:vrf_interface_count
Unexecuted instantiation: rule_netlink.c:vrf_interface_count
Unexecuted instantiation: table_manager.c:vrf_interface_count
Unexecuted instantiation: tc_netlink.c:vrf_interface_count
Unexecuted instantiation: zapi_msg.c:vrf_interface_count
Unexecuted instantiation: zebra_affinitymap.c:vrf_interface_count
Unexecuted instantiation: zebra_dplane.c:vrf_interface_count
Unexecuted instantiation: zebra_gr.c:vrf_interface_count
Unexecuted instantiation: zebra_l2.c:vrf_interface_count
Unexecuted instantiation: zebra_l2_bridge_if.c:vrf_interface_count
Unexecuted instantiation: zebra_evpn.c:vrf_interface_count
Unexecuted instantiation: zebra_evpn_mac.c:vrf_interface_count
Unexecuted instantiation: zebra_evpn_neigh.c:vrf_interface_count
Unexecuted instantiation: zebra_mlag.c:vrf_interface_count
Unexecuted instantiation: zebra_mlag_vty.c:vrf_interface_count
Unexecuted instantiation: zebra_mpls.c:vrf_interface_count
Unexecuted instantiation: zebra_mpls_netlink.c:vrf_interface_count
Unexecuted instantiation: zebra_mpls_null.c:vrf_interface_count
Unexecuted instantiation: zebra_mpls_vty.c:vrf_interface_count
Unexecuted instantiation: zebra_srv6.c:vrf_interface_count
Unexecuted instantiation: zebra_srv6_vty.c:vrf_interface_count
Unexecuted instantiation: zebra_mroute.c:vrf_interface_count
Unexecuted instantiation: zebra_nb.c:vrf_interface_count
Unexecuted instantiation: zebra_nb_config.c:vrf_interface_count
Unexecuted instantiation: zebra_nb_rpcs.c:vrf_interface_count
Unexecuted instantiation: zebra_nb_state.c:vrf_interface_count
Unexecuted instantiation: zebra_netns_id.c:vrf_interface_count
Unexecuted instantiation: zebra_netns_notify.c:vrf_interface_count
Unexecuted instantiation: zebra_nhg.c:vrf_interface_count
Unexecuted instantiation: zebra_ns.c:vrf_interface_count
Unexecuted instantiation: zebra_opaque.c:vrf_interface_count
Unexecuted instantiation: zebra_pbr.c:vrf_interface_count
Unexecuted instantiation: zebra_ptm.c:vrf_interface_count
Unexecuted instantiation: zebra_ptm_redistribute.c:vrf_interface_count
Unexecuted instantiation: zebra_pw.c:vrf_interface_count
Unexecuted instantiation: zebra_rib.c:vrf_interface_count
Unexecuted instantiation: zebra_router.c:vrf_interface_count
Unexecuted instantiation: zebra_rnh.c:vrf_interface_count
Unexecuted instantiation: zebra_routemap.c:vrf_interface_count
Unexecuted instantiation: zebra_routemap_nb_config.c:vrf_interface_count
Unexecuted instantiation: zebra_script.c:vrf_interface_count
Unexecuted instantiation: zebra_srte.c:vrf_interface_count
Unexecuted instantiation: zebra_tc.c:vrf_interface_count
Unexecuted instantiation: zebra_vrf.c:vrf_interface_count
Unexecuted instantiation: zebra_vty.c:vrf_interface_count
Unexecuted instantiation: zebra_vxlan.c:vrf_interface_count
Unexecuted instantiation: zebra_vxlan_if.c:vrf_interface_count
Unexecuted instantiation: zebra_evpn_mh.c:vrf_interface_count
Unexecuted instantiation: zebra_neigh.c:vrf_interface_count
Unexecuted instantiation: zserv.c:vrf_interface_count
Unexecuted instantiation: debug_nl.c:vrf_interface_count
Unexecuted instantiation: bgp_main.c:vrf_interface_count
Unexecuted instantiation: bgp_attr.c:vrf_interface_count
Unexecuted instantiation: bgp_attr_evpn.c:vrf_interface_count
Unexecuted instantiation: bgp_clist.c:vrf_interface_count
Unexecuted instantiation: bgp_community.c:vrf_interface_count
Unexecuted instantiation: bgp_community_alias.c:vrf_interface_count
Unexecuted instantiation: bgp_debug.c:vrf_interface_count
Unexecuted instantiation: bgp_dump.c:vrf_interface_count
Unexecuted instantiation: bgp_ecommunity.c:vrf_interface_count
Unexecuted instantiation: bgp_evpn.c:vrf_interface_count
Unexecuted instantiation: bgp_evpn_mh.c:vrf_interface_count
Unexecuted instantiation: bgp_evpn_vty.c:vrf_interface_count
Unexecuted instantiation: bgp_filter.c:vrf_interface_count
Unexecuted instantiation: bgp_flowspec_vty.c:vrf_interface_count
Unexecuted instantiation: bgp_fsm.c:vrf_interface_count
Unexecuted instantiation: bgp_io.c:vrf_interface_count
Unexecuted instantiation: bgp_keepalives.c:vrf_interface_count
Unexecuted instantiation: bgp_labelpool.c:vrf_interface_count
Unexecuted instantiation: bgp_lcommunity.c:vrf_interface_count
Unexecuted instantiation: bgp_mac.c:vrf_interface_count
Unexecuted instantiation: bgp_mpath.c:vrf_interface_count
Unexecuted instantiation: bgp_mplsvpn.c:vrf_interface_count
Unexecuted instantiation: bgp_network.c:vrf_interface_count
Unexecuted instantiation: bgp_nexthop.c:vrf_interface_count
Unexecuted instantiation: bgp_nht.c:vrf_interface_count
Unexecuted instantiation: bgp_packet.c:vrf_interface_count
Unexecuted instantiation: bgp_pbr.c:vrf_interface_count
Unexecuted instantiation: bgp_rd.c:vrf_interface_count
Unexecuted instantiation: bgp_regex.c:vrf_interface_count
Unexecuted instantiation: bgp_route.c:vrf_interface_count
Unexecuted instantiation: bgp_routemap.c:vrf_interface_count
Unexecuted instantiation: bgp_routemap_nb.c:vrf_interface_count
Unexecuted instantiation: bgp_routemap_nb_config.c:vrf_interface_count
Unexecuted instantiation: bgp_table.c:vrf_interface_count
Unexecuted instantiation: bgp_updgrp.c:vrf_interface_count
Unexecuted instantiation: bgp_updgrp_adv.c:vrf_interface_count
Unexecuted instantiation: bgp_updgrp_packet.c:vrf_interface_count
Unexecuted instantiation: bgp_vpn.c:vrf_interface_count
Unexecuted instantiation: bgp_vty.c:vrf_interface_count
Unexecuted instantiation: bgp_zebra.c:vrf_interface_count
Unexecuted instantiation: bgpd.c:vrf_interface_count
Unexecuted instantiation: bgp_rfapi_cfg.c:vrf_interface_count
Unexecuted instantiation: rfapi_import.c:vrf_interface_count
Unexecuted instantiation: rfapi.c:vrf_interface_count
Unexecuted instantiation: rfapi_ap.c:vrf_interface_count
Unexecuted instantiation: rfapi_encap_tlv.c:vrf_interface_count
Unexecuted instantiation: rfapi_nve_addr.c:vrf_interface_count
Unexecuted instantiation: rfapi_monitor.c:vrf_interface_count
Unexecuted instantiation: rfapi_rib.c:vrf_interface_count
Unexecuted instantiation: rfapi_vty.c:vrf_interface_count
Unexecuted instantiation: vnc_export_bgp.c:vrf_interface_count
Unexecuted instantiation: vnc_export_table.c:vrf_interface_count
Unexecuted instantiation: vnc_import_bgp.c:vrf_interface_count
Unexecuted instantiation: vnc_zebra.c:vrf_interface_count
Unexecuted instantiation: bgp_addpath.c:vrf_interface_count
Unexecuted instantiation: bgp_advertise.c:vrf_interface_count
Unexecuted instantiation: bgp_aspath.c:vrf_interface_count
Unexecuted instantiation: bgp_bfd.c:vrf_interface_count
Unexecuted instantiation: bgp_conditional_adv.c:vrf_interface_count
Unexecuted instantiation: bgp_damp.c:vrf_interface_count
Unexecuted instantiation: bgp_encap_tlv.c:vrf_interface_count
Unexecuted instantiation: bgp_flowspec.c:vrf_interface_count
Unexecuted instantiation: bgp_flowspec_util.c:vrf_interface_count
Unexecuted instantiation: bgp_label.c:vrf_interface_count
Unexecuted instantiation: bgp_open.c:vrf_interface_count
Unexecuted instantiation: rfp_example.c:vrf_interface_count
Unexecuted instantiation: pim_assert.c:vrf_interface_count
Unexecuted instantiation: pim_bfd.c:vrf_interface_count
Unexecuted instantiation: pim_bsm.c:vrf_interface_count
Unexecuted instantiation: pim_cmd_common.c:vrf_interface_count
Unexecuted instantiation: pim_hello.c:vrf_interface_count
Unexecuted instantiation: pim_iface.c:vrf_interface_count
Unexecuted instantiation: pim_ifchannel.c:vrf_interface_count
Unexecuted instantiation: pim_instance.c:vrf_interface_count
Unexecuted instantiation: pim_join.c:vrf_interface_count
Unexecuted instantiation: pim_jp_agg.c:vrf_interface_count
Unexecuted instantiation: pim_macro.c:vrf_interface_count
Unexecuted instantiation: pim_mroute.c:vrf_interface_count
Unexecuted instantiation: pim_msg.c:vrf_interface_count
Unexecuted instantiation: pim_nb.c:vrf_interface_count
Unexecuted instantiation: pim_nb_config.c:vrf_interface_count
Unexecuted instantiation: pim_neighbor.c:vrf_interface_count
Unexecuted instantiation: pim_nht.c:vrf_interface_count
Unexecuted instantiation: pim_oil.c:vrf_interface_count
Unexecuted instantiation: pim_pim.c:vrf_interface_count
Unexecuted instantiation: pim_rp.c:vrf_interface_count
Unexecuted instantiation: pim_rpf.c:vrf_interface_count
Unexecuted instantiation: pim_sock.c:vrf_interface_count
Unexecuted instantiation: pim_ssm.c:vrf_interface_count
Unexecuted instantiation: pim_ssmpingd.c:vrf_interface_count
Unexecuted instantiation: pim_static.c:vrf_interface_count
Unexecuted instantiation: pim_tib.c:vrf_interface_count
Unexecuted instantiation: pim_tlv.c:vrf_interface_count
Unexecuted instantiation: pim_upstream.c:vrf_interface_count
Unexecuted instantiation: pim_util.c:vrf_interface_count
Unexecuted instantiation: pim_vty.c:vrf_interface_count
Unexecuted instantiation: pim_zebra.c:vrf_interface_count
Unexecuted instantiation: pim_zlookup.c:vrf_interface_count
Unexecuted instantiation: pim_vxlan.c:vrf_interface_count
Unexecuted instantiation: pim_register.c:vrf_interface_count
Unexecuted instantiation: pimd.c:vrf_interface_count
Unexecuted instantiation: pim_cmd.c:vrf_interface_count
Unexecuted instantiation: pim_igmp.c:vrf_interface_count
Unexecuted instantiation: pim_igmp_mtrace.c:vrf_interface_count
Unexecuted instantiation: pim_igmpv2.c:vrf_interface_count
Unexecuted instantiation: pim_igmpv3.c:vrf_interface_count
Unexecuted instantiation: pim_main.c:vrf_interface_count
Unexecuted instantiation: pim_mlag.c:vrf_interface_count
Unexecuted instantiation: pim_msdp.c:vrf_interface_count
Unexecuted instantiation: pim_msdp_packet.c:vrf_interface_count
Unexecuted instantiation: pim_msdp_socket.c:vrf_interface_count
Unexecuted instantiation: pim_zpthread.c:vrf_interface_count
159
160
/*
161
 * Utilities to obtain the user data
162
 */
163
164
/* Look up the data pointer of the specified VRF. */
165
extern void *vrf_info_lookup(vrf_id_t);
166
167
/*
168
 * VRF bit-map: maintaining flags, one bit per VRF ID
169
 */
170
171
typedef void *vrf_bitmap_t;
172
0
#define VRF_BITMAP_NULL     NULL
173
174
extern vrf_bitmap_t vrf_bitmap_init(void);
175
extern void vrf_bitmap_free(vrf_bitmap_t);
176
extern void vrf_bitmap_set(vrf_bitmap_t, vrf_id_t);
177
extern void vrf_bitmap_unset(vrf_bitmap_t, vrf_id_t);
178
extern int vrf_bitmap_check(vrf_bitmap_t, vrf_id_t);
179
180
/*
181
 * VRF initializer/destructor
182
 *
183
 * create -> Called back when a new VRF is created.  This
184
 *           can be either through these 3 options:
185
 *           1) CLI mentions a vrf before OS knows about it
186
 *           2) OS calls zebra and we create the vrf from OS
187
 *              callback
188
 *           3) zebra calls individual protocols to notify
189
 *              about the new vrf
190
 *
191
 * enable -> Called back when a VRF is actually usable from
192
 *           an OS perspective ( 2 and 3 above )
193
 *
194
 * disable -> Called back when a VRF is being deleted from
195
 *            the system ( 2 and 3 ) above
196
 *
197
 * delete -> Called back when a vrf is being deleted from
198
 *           the system ( 2 and 3 ) above.
199
 */
200
extern void vrf_init(int (*create)(struct vrf *vrf),
201
         int (*enable)(struct vrf *vrf),
202
         int (*disable)(struct vrf *vrf),
203
         int (*destroy)(struct vrf *vrf));
204
205
/*
206
 * Call vrf_terminate when the protocol is being shutdown
207
 */
208
extern void vrf_terminate(void);
209
210
/*
211
 * Utilities to create networks objects,
212
 * or call network operations
213
 */
214
215
/*
216
 * Create a new socket associated with a VRF.
217
 *
218
 * This is a wrapper that ensures correct behavior when using namespace VRFs.
219
 * In the namespace case, the socket is created within the namespace. In the
220
 * non-namespace case, this is equivalent to socket().
221
 *
222
 * If name is provided, this is provided to vrf_bind() to bind the socket to
223
 * the VRF. This is only relevant when using VRF-lite.
224
 *
225
 * Summary:
226
 * - Namespace: pass vrf_id but not name
227
 * - VRF-lite: pass vrf_id and name of VRF device to bind to
228
 * - VRF-lite, no binding: pass vrf_id but not name, or just use socket()
229
 */
230
extern int vrf_socket(int domain, int type, int protocol, vrf_id_t vrf_id,
231
          const char *name);
232
233
extern int vrf_sockunion_socket(const union sockunion *su, vrf_id_t vrf_id,
234
        const char *name);
235
236
/*
237
 * Binds a socket to an interface (ifname) in a VRF (vrf_id).
238
 *
239
 * If ifname is NULL or is equal to the VRF name then bind to a VRF device.
240
 * Otherwise, bind to the specified interface in the specified VRF.
241
 *
242
 * Returns 0 on success and -1 on failure.
243
 */
244
extern int vrf_bind(vrf_id_t vrf_id, int fd, const char *ifname);
245
246
/* VRF ioctl operations */
247
extern int vrf_getaddrinfo(const char *node, const char *service,
248
         const struct addrinfo *hints, struct addrinfo **res,
249
         vrf_id_t vrf_id);
250
251
extern int vrf_ioctl(vrf_id_t vrf_id, int d, unsigned long request, char *args);
252
253
/* The default VRF ID */
254
33.1k
#define VRF_DEFAULT 0
255
256
/* Must be called only during startup, before config is read */
257
extern void vrf_set_default_name(const char *default_name);
258
259
extern const char *vrf_get_default_name(void);
260
6
#define VRF_DEFAULT_NAME    vrf_get_default_name()
261
262
/* VRF switch from NETNS */
263
extern int vrf_switch_to_netns(vrf_id_t vrf_id);
264
extern int vrf_switchback_to_initial(void);
265
266
/*
267
 * VRF backend routines
268
 * should be called from zebra only
269
 */
270
271
/* VRF vty command initialisation
272
 */
273
extern void vrf_cmd_init(int (*writefunc)(struct vty *vty));
274
275
/* VRF vty debugging
276
 */
277
extern void vrf_install_commands(void);
278
279
/*
280
 * VRF utilities
281
 */
282
283
/*
284
 * API for configuring VRF backend
285
 */
286
extern int vrf_configure_backend(enum vrf_backend_type backend);
287
extern int vrf_get_backend(void);
288
extern int vrf_is_backend_netns(void);
289
290
/* used internally to enable or disable VRF.
291
 * Notify a change in the VRF ID of the VRF
292
 */
293
extern void vrf_disable(struct vrf *vrf);
294
extern int vrf_enable(struct vrf *vrf);
295
extern void vrf_delete(struct vrf *vrf);
296
297
extern const struct frr_yang_module_info frr_vrf_info;
298
299
#ifdef __cplusplus
300
}
301
#endif
302
303
#endif /*_ZEBRA_VRF_H*/