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