Coverage Report

Created: 2025-11-11 06:17

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/frr/lib/vector.h
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
 * Generic vector interface header.
4
 * Copyright (C) 1997, 98 Kunihiro Ishiguro
5
 */
6
7
#ifndef _ZEBRA_VECTOR_H
8
#define _ZEBRA_VECTOR_H
9
10
#include "memory.h"
11
12
#ifdef __cplusplus
13
extern "C" {
14
#endif
15
16
/* struct for vector */
17
struct _vector {
18
  unsigned int active;  /* number of active slots */
19
  unsigned int alloced; /* number of allocated slot */
20
  unsigned int count;
21
  void **index;  /* index to data */
22
};
23
typedef struct _vector *vector;
24
25
304
#define VECTOR_MIN_SIZE 1
26
27
/* (Sometimes) usefull macros.  This macro convert index expression to
28
 array expression. */
29
/* Reference slot at given index, caller must ensure slot is active */
30
0
#define vector_slot(V,I)  ((V)->index[(I)])
31
/* Number of active slots.
32
 * Note that this differs from vector_count() as it the count returned
33
 * will include any empty slots
34
 */
35
0
#define vector_active(V) ((V)->active)
36
37
/* Prototypes. */
38
extern vector vector_init(unsigned int size);
39
extern void vector_ensure(vector v, unsigned int num);
40
extern int vector_empty_slot(vector v);
41
extern int vector_set(vector v, void *val);
42
extern int vector_set_index(vector v, unsigned int i, void *val);
43
extern void vector_unset(vector v, unsigned int i);
44
extern void vector_unset_value(vector v, void *val);
45
extern void vector_remove(vector v, unsigned int ix);
46
extern void vector_compact(vector v);
47
48
static inline unsigned int vector_count(vector v)
49
0
{
50
0
  return v->count;
51
0
}
Unexecuted instantiation: ospf_main.c:vector_count
Unexecuted instantiation: ospf_bfd.c:vector_count
Unexecuted instantiation: ospf_dump.c:vector_count
Unexecuted instantiation: ospf_dump_api.c:vector_count
Unexecuted instantiation: ospf_interface.c:vector_count
Unexecuted instantiation: ospf_lsa.c:vector_count
Unexecuted instantiation: ospf_lsdb.c:vector_count
Unexecuted instantiation: ospf_neighbor.c:vector_count
Unexecuted instantiation: ospf_network.c:vector_count
Unexecuted instantiation: ospf_nsm.c:vector_count
Unexecuted instantiation: ospf_opaque.c:vector_count
Unexecuted instantiation: ospf_packet.c:vector_count
Unexecuted instantiation: ospf_ri.c:vector_count
Unexecuted instantiation: ospf_routemap.c:vector_count
Unexecuted instantiation: ospf_routemap_nb_config.c:vector_count
Unexecuted instantiation: ospf_spf.c:vector_count
Unexecuted instantiation: ospf_ti_lfa.c:vector_count
Unexecuted instantiation: ospf_sr.c:vector_count
Unexecuted instantiation: ospf_te.c:vector_count
Unexecuted instantiation: ospf_vty.c:vector_count
Unexecuted instantiation: ospf_zebra.c:vector_count
Unexecuted instantiation: ospfd.c:vector_count
Unexecuted instantiation: ospf_gr_helper.c:vector_count
Unexecuted instantiation: ospf_abr.c:vector_count
Unexecuted instantiation: ospf_apiserver.c:vector_count
Unexecuted instantiation: ospf_asbr.c:vector_count
Unexecuted instantiation: ospf_ase.c:vector_count
Unexecuted instantiation: ospf_ext.c:vector_count
Unexecuted instantiation: ospf_flood.c:vector_count
Unexecuted instantiation: ospf_gr.c:vector_count
Unexecuted instantiation: ospf_ia.c:vector_count
Unexecuted instantiation: ospf_ism.c:vector_count
Unexecuted instantiation: ospf_ldp_sync.c:vector_count
Unexecuted instantiation: ospf_route.c:vector_count
Unexecuted instantiation: ospf_api.c:vector_count
Unexecuted instantiation: affinitymap.c:vector_count
Unexecuted instantiation: affinitymap_cli.c:vector_count
Unexecuted instantiation: affinitymap_northbound.c:vector_count
Unexecuted instantiation: asn.c:vector_count
Unexecuted instantiation: bfd.c:vector_count
Unexecuted instantiation: command.c:vector_count
Unexecuted instantiation: command_graph.c:vector_count
Unexecuted instantiation: command_lex.c:vector_count
Unexecuted instantiation: command_match.c:vector_count
Unexecuted instantiation: command_parse.c:vector_count
Unexecuted instantiation: debug.c:vector_count
Unexecuted instantiation: distribute.c:vector_count
Unexecuted instantiation: ferr.c:vector_count
Unexecuted instantiation: filter.c:vector_count
Unexecuted instantiation: filter_cli.c:vector_count
Unexecuted instantiation: frrstr.c:vector_count
Unexecuted instantiation: grammar_sandbox.c:vector_count
Unexecuted instantiation: graph.c:vector_count
Unexecuted instantiation: hash.c:vector_count
Unexecuted instantiation: if.c:vector_count
Unexecuted instantiation: if_rmap.c:vector_count
Unexecuted instantiation: json.c:vector_count
Unexecuted instantiation: keychain.c:vector_count
Unexecuted instantiation: ldp_sync.c:vector_count
Unexecuted instantiation: lib_vty.c:vector_count
Unexecuted instantiation: libfrr.c:vector_count
Unexecuted instantiation: link_state.c:vector_count
Unexecuted instantiation: log.c:vector_count
Unexecuted instantiation: log_vty.c:vector_count
Unexecuted instantiation: mgmt_be_client.c:vector_count
Unexecuted instantiation: mgmt_fe_client.c:vector_count
Unexecuted instantiation: mgmt_msg.c:vector_count
Unexecuted instantiation: srv6.c:vector_count
Unexecuted instantiation: nexthop.c:vector_count
Unexecuted instantiation: netns_linux.c:vector_count
Unexecuted instantiation: nexthop_group.c:vector_count
Unexecuted instantiation: northbound.c:vector_count
Unexecuted instantiation: northbound_cli.c:vector_count
Unexecuted instantiation: northbound_db.c:vector_count
Unexecuted instantiation: plist.c:vector_count
Unexecuted instantiation: prefix.c:vector_count
Unexecuted instantiation: routemap.c:vector_count
Unexecuted instantiation: routemap_cli.c:vector_count
Unexecuted instantiation: routemap_northbound.c:vector_count
Unexecuted instantiation: spf_backoff.c:vector_count
Unexecuted instantiation: termtable.c:vector_count
Unexecuted instantiation: event.c:vector_count
Unexecuted instantiation: vector.c:vector_count
Unexecuted instantiation: vrf.c:vector_count
Unexecuted instantiation: vty.c:vector_count
Unexecuted instantiation: workqueue.c:vector_count
Unexecuted instantiation: yang_translator.c:vector_count
Unexecuted instantiation: yang_wrappers.c:vector_count
Unexecuted instantiation: zclient.c:vector_count
Unexecuted instantiation: zlog_5424.c:vector_count
Unexecuted instantiation: zlog_5424_cli.c:vector_count
Unexecuted instantiation: connected.c:vector_count
Unexecuted instantiation: if_netlink.c:vector_count
Unexecuted instantiation: interface.c:vector_count
Unexecuted instantiation: ioctl.c:vector_count
Unexecuted instantiation: kernel_netlink.c:vector_count
Unexecuted instantiation: label_manager.c:vector_count
Unexecuted instantiation: main.c:vector_count
Unexecuted instantiation: netconf_netlink.c:vector_count
Unexecuted instantiation: redistribute.c:vector_count
Unexecuted instantiation: router-id.c:vector_count
Unexecuted instantiation: rt_netlink.c:vector_count
Unexecuted instantiation: rtadv.c:vector_count
Unexecuted instantiation: rtread_netlink.c:vector_count
Unexecuted instantiation: rule_netlink.c:vector_count
Unexecuted instantiation: table_manager.c:vector_count
Unexecuted instantiation: tc_netlink.c:vector_count
Unexecuted instantiation: zapi_msg.c:vector_count
Unexecuted instantiation: zebra_affinitymap.c:vector_count
Unexecuted instantiation: zebra_dplane.c:vector_count
Unexecuted instantiation: zebra_gr.c:vector_count
Unexecuted instantiation: zebra_l2.c:vector_count
Unexecuted instantiation: zebra_l2_bridge_if.c:vector_count
Unexecuted instantiation: zebra_evpn.c:vector_count
Unexecuted instantiation: zebra_evpn_mac.c:vector_count
Unexecuted instantiation: zebra_evpn_neigh.c:vector_count
Unexecuted instantiation: zebra_mlag.c:vector_count
Unexecuted instantiation: zebra_mlag_vty.c:vector_count
Unexecuted instantiation: zebra_mpls.c:vector_count
Unexecuted instantiation: zebra_mpls_netlink.c:vector_count
Unexecuted instantiation: zebra_mpls_null.c:vector_count
Unexecuted instantiation: zebra_mpls_vty.c:vector_count
Unexecuted instantiation: zebra_srv6.c:vector_count
Unexecuted instantiation: zebra_srv6_vty.c:vector_count
Unexecuted instantiation: zebra_mroute.c:vector_count
Unexecuted instantiation: zebra_nb.c:vector_count
Unexecuted instantiation: zebra_nb_config.c:vector_count
Unexecuted instantiation: zebra_nb_rpcs.c:vector_count
Unexecuted instantiation: zebra_nb_state.c:vector_count
Unexecuted instantiation: zebra_netns_id.c:vector_count
Unexecuted instantiation: zebra_netns_notify.c:vector_count
Unexecuted instantiation: zebra_nhg.c:vector_count
Unexecuted instantiation: zebra_ns.c:vector_count
Unexecuted instantiation: zebra_opaque.c:vector_count
Unexecuted instantiation: zebra_pbr.c:vector_count
Unexecuted instantiation: zebra_ptm.c:vector_count
Unexecuted instantiation: zebra_ptm_redistribute.c:vector_count
Unexecuted instantiation: zebra_pw.c:vector_count
Unexecuted instantiation: zebra_rib.c:vector_count
Unexecuted instantiation: zebra_router.c:vector_count
Unexecuted instantiation: zebra_rnh.c:vector_count
Unexecuted instantiation: zebra_routemap.c:vector_count
Unexecuted instantiation: zebra_routemap_nb_config.c:vector_count
Unexecuted instantiation: zebra_script.c:vector_count
Unexecuted instantiation: zebra_srte.c:vector_count
Unexecuted instantiation: zebra_tc.c:vector_count
Unexecuted instantiation: zebra_vrf.c:vector_count
Unexecuted instantiation: zebra_vty.c:vector_count
Unexecuted instantiation: zebra_vxlan.c:vector_count
Unexecuted instantiation: zebra_vxlan_if.c:vector_count
Unexecuted instantiation: zebra_evpn_mh.c:vector_count
Unexecuted instantiation: zebra_neigh.c:vector_count
Unexecuted instantiation: zserv.c:vector_count
Unexecuted instantiation: debug_nl.c:vector_count
Unexecuted instantiation: bgp_main.c:vector_count
Unexecuted instantiation: bgp_attr.c:vector_count
Unexecuted instantiation: bgp_attr_evpn.c:vector_count
Unexecuted instantiation: bgp_clist.c:vector_count
Unexecuted instantiation: bgp_community.c:vector_count
Unexecuted instantiation: bgp_community_alias.c:vector_count
Unexecuted instantiation: bgp_debug.c:vector_count
Unexecuted instantiation: bgp_dump.c:vector_count
Unexecuted instantiation: bgp_ecommunity.c:vector_count
Unexecuted instantiation: bgp_evpn.c:vector_count
Unexecuted instantiation: bgp_evpn_mh.c:vector_count
Unexecuted instantiation: bgp_evpn_vty.c:vector_count
Unexecuted instantiation: bgp_filter.c:vector_count
Unexecuted instantiation: bgp_flowspec_vty.c:vector_count
Unexecuted instantiation: bgp_fsm.c:vector_count
Unexecuted instantiation: bgp_io.c:vector_count
Unexecuted instantiation: bgp_keepalives.c:vector_count
Unexecuted instantiation: bgp_labelpool.c:vector_count
Unexecuted instantiation: bgp_lcommunity.c:vector_count
Unexecuted instantiation: bgp_mac.c:vector_count
Unexecuted instantiation: bgp_mpath.c:vector_count
Unexecuted instantiation: bgp_mplsvpn.c:vector_count
Unexecuted instantiation: bgp_network.c:vector_count
Unexecuted instantiation: bgp_nexthop.c:vector_count
Unexecuted instantiation: bgp_nht.c:vector_count
Unexecuted instantiation: bgp_packet.c:vector_count
Unexecuted instantiation: bgp_pbr.c:vector_count
Unexecuted instantiation: bgp_rd.c:vector_count
Unexecuted instantiation: bgp_regex.c:vector_count
Unexecuted instantiation: bgp_route.c:vector_count
Unexecuted instantiation: bgp_routemap.c:vector_count
Unexecuted instantiation: bgp_routemap_nb.c:vector_count
Unexecuted instantiation: bgp_routemap_nb_config.c:vector_count
Unexecuted instantiation: bgp_table.c:vector_count
Unexecuted instantiation: bgp_updgrp.c:vector_count
Unexecuted instantiation: bgp_updgrp_adv.c:vector_count
Unexecuted instantiation: bgp_updgrp_packet.c:vector_count
Unexecuted instantiation: bgp_vpn.c:vector_count
Unexecuted instantiation: bgp_vty.c:vector_count
Unexecuted instantiation: bgp_zebra.c:vector_count
Unexecuted instantiation: bgpd.c:vector_count
Unexecuted instantiation: bgp_rfapi_cfg.c:vector_count
Unexecuted instantiation: rfapi_import.c:vector_count
Unexecuted instantiation: rfapi.c:vector_count
Unexecuted instantiation: rfapi_ap.c:vector_count
Unexecuted instantiation: rfapi_encap_tlv.c:vector_count
Unexecuted instantiation: rfapi_nve_addr.c:vector_count
Unexecuted instantiation: rfapi_monitor.c:vector_count
Unexecuted instantiation: rfapi_rib.c:vector_count
Unexecuted instantiation: rfapi_vty.c:vector_count
Unexecuted instantiation: vnc_debug.c:vector_count
Unexecuted instantiation: vnc_export_bgp.c:vector_count
Unexecuted instantiation: vnc_export_table.c:vector_count
Unexecuted instantiation: vnc_import_bgp.c:vector_count
Unexecuted instantiation: vnc_zebra.c:vector_count
Unexecuted instantiation: bgp_addpath.c:vector_count
Unexecuted instantiation: bgp_advertise.c:vector_count
Unexecuted instantiation: bgp_aspath.c:vector_count
Unexecuted instantiation: bgp_bfd.c:vector_count
Unexecuted instantiation: bgp_conditional_adv.c:vector_count
Unexecuted instantiation: bgp_damp.c:vector_count
Unexecuted instantiation: bgp_encap_tlv.c:vector_count
Unexecuted instantiation: bgp_flowspec.c:vector_count
Unexecuted instantiation: bgp_flowspec_util.c:vector_count
Unexecuted instantiation: bgp_label.c:vector_count
Unexecuted instantiation: bgp_open.c:vector_count
Unexecuted instantiation: rfp_example.c:vector_count
Unexecuted instantiation: pim_assert.c:vector_count
Unexecuted instantiation: pim_bfd.c:vector_count
Unexecuted instantiation: pim_bsm.c:vector_count
Unexecuted instantiation: pim_cmd_common.c:vector_count
Unexecuted instantiation: pim_hello.c:vector_count
Unexecuted instantiation: pim_iface.c:vector_count
Unexecuted instantiation: pim_ifchannel.c:vector_count
Unexecuted instantiation: pim_instance.c:vector_count
Unexecuted instantiation: pim_join.c:vector_count
Unexecuted instantiation: pim_jp_agg.c:vector_count
Unexecuted instantiation: pim_macro.c:vector_count
Unexecuted instantiation: pim_mroute.c:vector_count
Unexecuted instantiation: pim_msg.c:vector_count
Unexecuted instantiation: pim_nb_config.c:vector_count
Unexecuted instantiation: pim_neighbor.c:vector_count
Unexecuted instantiation: pim_nht.c:vector_count
Unexecuted instantiation: pim_oil.c:vector_count
Unexecuted instantiation: pim_pim.c:vector_count
Unexecuted instantiation: pim_rp.c:vector_count
Unexecuted instantiation: pim_rpf.c:vector_count
Unexecuted instantiation: pim_sock.c:vector_count
Unexecuted instantiation: pim_ssm.c:vector_count
Unexecuted instantiation: pim_ssmpingd.c:vector_count
Unexecuted instantiation: pim_static.c:vector_count
Unexecuted instantiation: pim_tib.c:vector_count
Unexecuted instantiation: pim_tlv.c:vector_count
Unexecuted instantiation: pim_upstream.c:vector_count
Unexecuted instantiation: pim_util.c:vector_count
Unexecuted instantiation: pim_vty.c:vector_count
Unexecuted instantiation: pim_zebra.c:vector_count
Unexecuted instantiation: pim_zlookup.c:vector_count
Unexecuted instantiation: pim_vxlan.c:vector_count
Unexecuted instantiation: pim_register.c:vector_count
Unexecuted instantiation: pimd.c:vector_count
Unexecuted instantiation: pim_cmd.c:vector_count
Unexecuted instantiation: pim_igmp.c:vector_count
Unexecuted instantiation: pim_igmp_mtrace.c:vector_count
Unexecuted instantiation: pim_igmpv2.c:vector_count
Unexecuted instantiation: pim_igmpv3.c:vector_count
Unexecuted instantiation: pim_main.c:vector_count
Unexecuted instantiation: pim_mlag.c:vector_count
Unexecuted instantiation: pim_msdp.c:vector_count
Unexecuted instantiation: pim_msdp_packet.c:vector_count
Unexecuted instantiation: pim_msdp_socket.c:vector_count
Unexecuted instantiation: pim_zpthread.c:vector_count
52
53
extern void vector_free(vector v);
54
extern vector vector_copy(vector v);
55
56
extern void *vector_lookup(vector, unsigned int);
57
extern void *vector_lookup_ensure(vector, unsigned int);
58
extern void vector_to_array(vector v, void ***dest, int *argc);
59
extern vector array_to_vector(void **src, int argc);
60
61
#ifdef __cplusplus
62
}
63
#endif
64
65
#endif /* _ZEBRA_VECTOR_H */