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 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*/ |