Coverage Report

Created: 2025-08-26 06:20

/src/frr/lib/agg_table.h
Line
Count
Source (jump to first uncovered line)
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
 * agg_table - Aggregate Table Header
4
 * Copyright (C) 2018 Cumulus Networks, Inc.
5
 *               Donald Sharp
6
 */
7
#ifndef __AGG_TABLE_H__
8
#define __AGG_TABLE_H__
9
10
#include "prefix.h"
11
#include "table.h"
12
13
#ifdef __cplusplus
14
extern "C" {
15
#endif
16
17
struct agg_table {
18
  struct route_table *route_table;
19
20
  void *info;
21
};
22
23
struct agg_node {
24
  /*
25
   * Caution these must be the very first fields
26
   * @see agg_node_to_rnode
27
   * @see agg_node_from_rnode
28
   */
29
  ROUTE_NODE_FIELDS
30
31
  /* Aggregation. */
32
  void *aggregate;
33
};
34
35
static inline struct route_node *agg_node_to_rnode(struct agg_node *node)
36
0
{
37
0
  return (struct route_node *)node;
38
0
}
Unexecuted instantiation: agg_table.c:agg_node_to_rnode
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_to_rnode
Unexecuted instantiation: rfapi_import.c:agg_node_to_rnode
Unexecuted instantiation: rfapi.c:agg_node_to_rnode
Unexecuted instantiation: rfapi_ap.c:agg_node_to_rnode
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_to_rnode
Unexecuted instantiation: rfapi_monitor.c:agg_node_to_rnode
Unexecuted instantiation: rfapi_rib.c:agg_node_to_rnode
Unexecuted instantiation: rfapi_vty.c:agg_node_to_rnode
Unexecuted instantiation: vnc_export_bgp.c:agg_node_to_rnode
Unexecuted instantiation: vnc_export_table.c:agg_node_to_rnode
Unexecuted instantiation: vnc_import_bgp.c:agg_node_to_rnode
Unexecuted instantiation: vnc_zebra.c:agg_node_to_rnode
39
40
static inline struct agg_node *agg_node_from_rnode(struct route_node *node)
41
176
{
42
176
  return (struct agg_node *)node;
43
176
}
Unexecuted instantiation: agg_table.c:agg_node_from_rnode
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_from_rnode
rfapi_import.c:agg_node_from_rnode
Line
Count
Source
41
176
{
42
176
  return (struct agg_node *)node;
43
176
}
Unexecuted instantiation: rfapi.c:agg_node_from_rnode
Unexecuted instantiation: rfapi_ap.c:agg_node_from_rnode
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_from_rnode
Unexecuted instantiation: rfapi_monitor.c:agg_node_from_rnode
Unexecuted instantiation: rfapi_rib.c:agg_node_from_rnode
Unexecuted instantiation: rfapi_vty.c:agg_node_from_rnode
Unexecuted instantiation: vnc_export_bgp.c:agg_node_from_rnode
Unexecuted instantiation: vnc_export_table.c:agg_node_from_rnode
Unexecuted instantiation: vnc_import_bgp.c:agg_node_from_rnode
Unexecuted instantiation: vnc_zebra.c:agg_node_from_rnode
44
45
static inline struct agg_node *agg_lock_node(struct agg_node *node)
46
0
{
47
0
  return (struct agg_node *)route_lock_node(agg_node_to_rnode(node));
48
0
}
Unexecuted instantiation: agg_table.c:agg_lock_node
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_lock_node
Unexecuted instantiation: rfapi_import.c:agg_lock_node
Unexecuted instantiation: rfapi.c:agg_lock_node
Unexecuted instantiation: rfapi_ap.c:agg_lock_node
Unexecuted instantiation: rfapi_nve_addr.c:agg_lock_node
Unexecuted instantiation: rfapi_monitor.c:agg_lock_node
Unexecuted instantiation: rfapi_rib.c:agg_lock_node
Unexecuted instantiation: rfapi_vty.c:agg_lock_node
Unexecuted instantiation: vnc_export_bgp.c:agg_lock_node
Unexecuted instantiation: vnc_export_table.c:agg_lock_node
Unexecuted instantiation: vnc_import_bgp.c:agg_lock_node
Unexecuted instantiation: vnc_zebra.c:agg_lock_node
49
50
static inline void agg_unlock_node(struct agg_node *node)
51
0
{
52
0
  route_unlock_node(agg_node_to_rnode(node));
53
0
}
Unexecuted instantiation: agg_table.c:agg_unlock_node
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_unlock_node
Unexecuted instantiation: rfapi_import.c:agg_unlock_node
Unexecuted instantiation: rfapi.c:agg_unlock_node
Unexecuted instantiation: rfapi_ap.c:agg_unlock_node
Unexecuted instantiation: rfapi_nve_addr.c:agg_unlock_node
Unexecuted instantiation: rfapi_monitor.c:agg_unlock_node
Unexecuted instantiation: rfapi_rib.c:agg_unlock_node
Unexecuted instantiation: rfapi_vty.c:agg_unlock_node
Unexecuted instantiation: vnc_export_bgp.c:agg_unlock_node
Unexecuted instantiation: vnc_export_table.c:agg_unlock_node
Unexecuted instantiation: vnc_import_bgp.c:agg_unlock_node
Unexecuted instantiation: vnc_zebra.c:agg_unlock_node
54
55
static inline void agg_set_table_info(struct agg_table *atable, void *data)
56
0
{
57
0
  atable->info = data;
58
0
}
Unexecuted instantiation: agg_table.c:agg_set_table_info
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_set_table_info
Unexecuted instantiation: rfapi_import.c:agg_set_table_info
Unexecuted instantiation: rfapi.c:agg_set_table_info
Unexecuted instantiation: rfapi_ap.c:agg_set_table_info
Unexecuted instantiation: rfapi_nve_addr.c:agg_set_table_info
Unexecuted instantiation: rfapi_monitor.c:agg_set_table_info
Unexecuted instantiation: rfapi_rib.c:agg_set_table_info
Unexecuted instantiation: rfapi_vty.c:agg_set_table_info
Unexecuted instantiation: vnc_export_bgp.c:agg_set_table_info
Unexecuted instantiation: vnc_export_table.c:agg_set_table_info
Unexecuted instantiation: vnc_import_bgp.c:agg_set_table_info
Unexecuted instantiation: vnc_zebra.c:agg_set_table_info
59
60
static inline void *agg_get_table_info(struct agg_table *atable)
61
0
{
62
0
  return atable->info;
63
0
}
Unexecuted instantiation: agg_table.c:agg_get_table_info
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_get_table_info
Unexecuted instantiation: rfapi_import.c:agg_get_table_info
Unexecuted instantiation: rfapi.c:agg_get_table_info
Unexecuted instantiation: rfapi_ap.c:agg_get_table_info
Unexecuted instantiation: rfapi_nve_addr.c:agg_get_table_info
Unexecuted instantiation: rfapi_monitor.c:agg_get_table_info
Unexecuted instantiation: rfapi_rib.c:agg_get_table_info
Unexecuted instantiation: rfapi_vty.c:agg_get_table_info
Unexecuted instantiation: vnc_export_bgp.c:agg_get_table_info
Unexecuted instantiation: vnc_export_table.c:agg_get_table_info
Unexecuted instantiation: vnc_import_bgp.c:agg_get_table_info
Unexecuted instantiation: vnc_zebra.c:agg_get_table_info
64
65
static inline struct agg_node *agg_route_top(struct agg_table *table)
66
0
{
67
0
  return agg_node_from_rnode(route_top(table->route_table));
68
0
}
Unexecuted instantiation: agg_table.c:agg_route_top
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_route_top
Unexecuted instantiation: rfapi_import.c:agg_route_top
Unexecuted instantiation: rfapi.c:agg_route_top
Unexecuted instantiation: rfapi_ap.c:agg_route_top
Unexecuted instantiation: rfapi_nve_addr.c:agg_route_top
Unexecuted instantiation: rfapi_monitor.c:agg_route_top
Unexecuted instantiation: rfapi_rib.c:agg_route_top
Unexecuted instantiation: rfapi_vty.c:agg_route_top
Unexecuted instantiation: vnc_export_bgp.c:agg_route_top
Unexecuted instantiation: vnc_export_table.c:agg_route_top
Unexecuted instantiation: vnc_import_bgp.c:agg_route_top
Unexecuted instantiation: vnc_zebra.c:agg_route_top
69
70
static inline struct agg_node *agg_route_next(struct agg_node *node)
71
0
{
72
0
  return agg_node_from_rnode(route_next(agg_node_to_rnode(node)));
73
0
}
Unexecuted instantiation: agg_table.c:agg_route_next
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_route_next
Unexecuted instantiation: rfapi_import.c:agg_route_next
Unexecuted instantiation: rfapi.c:agg_route_next
Unexecuted instantiation: rfapi_ap.c:agg_route_next
Unexecuted instantiation: rfapi_nve_addr.c:agg_route_next
Unexecuted instantiation: rfapi_monitor.c:agg_route_next
Unexecuted instantiation: rfapi_rib.c:agg_route_next
Unexecuted instantiation: rfapi_vty.c:agg_route_next
Unexecuted instantiation: vnc_export_bgp.c:agg_route_next
Unexecuted instantiation: vnc_export_table.c:agg_route_next
Unexecuted instantiation: vnc_import_bgp.c:agg_route_next
Unexecuted instantiation: vnc_zebra.c:agg_route_next
74
75
static inline struct agg_node *agg_node_get(struct agg_table *table,
76
              const struct prefix *p)
77
0
{
78
0
  return agg_node_from_rnode(route_node_get(table->route_table, p));
79
0
}
Unexecuted instantiation: agg_table.c:agg_node_get
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_get
Unexecuted instantiation: rfapi_import.c:agg_node_get
Unexecuted instantiation: rfapi.c:agg_node_get
Unexecuted instantiation: rfapi_ap.c:agg_node_get
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_get
Unexecuted instantiation: rfapi_monitor.c:agg_node_get
Unexecuted instantiation: rfapi_rib.c:agg_node_get
Unexecuted instantiation: rfapi_vty.c:agg_node_get
Unexecuted instantiation: vnc_export_bgp.c:agg_node_get
Unexecuted instantiation: vnc_export_table.c:agg_node_get
Unexecuted instantiation: vnc_import_bgp.c:agg_node_get
Unexecuted instantiation: vnc_zebra.c:agg_node_get
80
81
static inline struct agg_node *
82
agg_node_lookup(const struct agg_table *const table, const struct prefix *p)
83
176
{
84
176
  return agg_node_from_rnode(route_node_lookup(table->route_table, p));
85
176
}
Unexecuted instantiation: agg_table.c:agg_node_lookup
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_lookup
rfapi_import.c:agg_node_lookup
Line
Count
Source
83
176
{
84
176
  return agg_node_from_rnode(route_node_lookup(table->route_table, p));
85
176
}
Unexecuted instantiation: rfapi.c:agg_node_lookup
Unexecuted instantiation: rfapi_ap.c:agg_node_lookup
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_lookup
Unexecuted instantiation: rfapi_monitor.c:agg_node_lookup
Unexecuted instantiation: rfapi_rib.c:agg_node_lookup
Unexecuted instantiation: rfapi_vty.c:agg_node_lookup
Unexecuted instantiation: vnc_export_bgp.c:agg_node_lookup
Unexecuted instantiation: vnc_export_table.c:agg_node_lookup
Unexecuted instantiation: vnc_import_bgp.c:agg_node_lookup
Unexecuted instantiation: vnc_zebra.c:agg_node_lookup
86
87
static inline struct agg_node *agg_route_next_until(struct agg_node *node,
88
                struct agg_node *limit)
89
0
{
90
0
  struct route_node *rnode;
91
0
92
0
  rnode = route_next_until(agg_node_to_rnode(node),
93
0
        agg_node_to_rnode(limit));
94
0
95
0
  return agg_node_from_rnode(rnode);
96
0
}
Unexecuted instantiation: agg_table.c:agg_route_next_until
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_route_next_until
Unexecuted instantiation: rfapi_import.c:agg_route_next_until
Unexecuted instantiation: rfapi.c:agg_route_next_until
Unexecuted instantiation: rfapi_ap.c:agg_route_next_until
Unexecuted instantiation: rfapi_nve_addr.c:agg_route_next_until
Unexecuted instantiation: rfapi_monitor.c:agg_route_next_until
Unexecuted instantiation: rfapi_rib.c:agg_route_next_until
Unexecuted instantiation: rfapi_vty.c:agg_route_next_until
Unexecuted instantiation: vnc_export_bgp.c:agg_route_next_until
Unexecuted instantiation: vnc_export_table.c:agg_route_next_until
Unexecuted instantiation: vnc_import_bgp.c:agg_route_next_until
Unexecuted instantiation: vnc_zebra.c:agg_route_next_until
97
98
static inline struct agg_node *agg_node_match(struct agg_table *table,
99
                const struct prefix *p)
100
0
{
101
0
  return agg_node_from_rnode(route_node_match(table->route_table, p));
102
0
}
Unexecuted instantiation: agg_table.c:agg_node_match
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_match
Unexecuted instantiation: rfapi_import.c:agg_node_match
Unexecuted instantiation: rfapi.c:agg_node_match
Unexecuted instantiation: rfapi_ap.c:agg_node_match
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_match
Unexecuted instantiation: rfapi_monitor.c:agg_node_match
Unexecuted instantiation: rfapi_rib.c:agg_node_match
Unexecuted instantiation: rfapi_vty.c:agg_node_match
Unexecuted instantiation: vnc_export_bgp.c:agg_node_match
Unexecuted instantiation: vnc_export_table.c:agg_node_match
Unexecuted instantiation: vnc_import_bgp.c:agg_node_match
Unexecuted instantiation: vnc_zebra.c:agg_node_match
103
104
static inline struct agg_node *agg_node_parent(struct agg_node *node)
105
0
{
106
0
  struct route_node *rn = agg_node_to_rnode(node);
107
108
0
  return agg_node_from_rnode(rn->parent);
109
0
}
Unexecuted instantiation: agg_table.c:agg_node_parent
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_parent
Unexecuted instantiation: rfapi_import.c:agg_node_parent
Unexecuted instantiation: rfapi.c:agg_node_parent
Unexecuted instantiation: rfapi_ap.c:agg_node_parent
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_parent
Unexecuted instantiation: rfapi_monitor.c:agg_node_parent
Unexecuted instantiation: rfapi_rib.c:agg_node_parent
Unexecuted instantiation: rfapi_vty.c:agg_node_parent
Unexecuted instantiation: vnc_export_bgp.c:agg_node_parent
Unexecuted instantiation: vnc_export_table.c:agg_node_parent
Unexecuted instantiation: vnc_import_bgp.c:agg_node_parent
Unexecuted instantiation: vnc_zebra.c:agg_node_parent
110
111
static inline struct agg_node *agg_node_left(struct agg_node *node)
112
0
{
113
0
  struct route_node *rn = agg_node_to_rnode(node);
114
115
0
  return agg_node_from_rnode(rn->l_left);
116
0
}
Unexecuted instantiation: agg_table.c:agg_node_left
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_left
Unexecuted instantiation: rfapi_import.c:agg_node_left
Unexecuted instantiation: rfapi.c:agg_node_left
Unexecuted instantiation: rfapi_ap.c:agg_node_left
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_left
Unexecuted instantiation: rfapi_monitor.c:agg_node_left
Unexecuted instantiation: rfapi_rib.c:agg_node_left
Unexecuted instantiation: rfapi_vty.c:agg_node_left
Unexecuted instantiation: vnc_export_bgp.c:agg_node_left
Unexecuted instantiation: vnc_export_table.c:agg_node_left
Unexecuted instantiation: vnc_import_bgp.c:agg_node_left
Unexecuted instantiation: vnc_zebra.c:agg_node_left
117
118
static inline struct agg_node *agg_node_right(struct agg_node *node)
119
0
{
120
0
  struct route_node *rn = agg_node_to_rnode(node);
121
122
0
  return agg_node_from_rnode(rn->l_right);
123
0
}
Unexecuted instantiation: agg_table.c:agg_node_right
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_right
Unexecuted instantiation: rfapi_import.c:agg_node_right
Unexecuted instantiation: rfapi.c:agg_node_right
Unexecuted instantiation: rfapi_ap.c:agg_node_right
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_right
Unexecuted instantiation: rfapi_monitor.c:agg_node_right
Unexecuted instantiation: rfapi_rib.c:agg_node_right
Unexecuted instantiation: rfapi_vty.c:agg_node_right
Unexecuted instantiation: vnc_export_bgp.c:agg_node_right
Unexecuted instantiation: vnc_export_table.c:agg_node_right
Unexecuted instantiation: vnc_import_bgp.c:agg_node_right
Unexecuted instantiation: vnc_zebra.c:agg_node_right
124
125
extern struct agg_table *agg_table_init(void);
126
127
static inline void agg_table_finish(struct agg_table *atable)
128
0
{
129
0
  route_table_finish(atable->route_table);
130
0
  atable->route_table = NULL;
131
132
0
  XFREE(MTYPE_TMP, atable);
133
0
}
Unexecuted instantiation: agg_table.c:agg_table_finish
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_table_finish
Unexecuted instantiation: rfapi_import.c:agg_table_finish
Unexecuted instantiation: rfapi.c:agg_table_finish
Unexecuted instantiation: rfapi_ap.c:agg_table_finish
Unexecuted instantiation: rfapi_nve_addr.c:agg_table_finish
Unexecuted instantiation: rfapi_monitor.c:agg_table_finish
Unexecuted instantiation: rfapi_rib.c:agg_table_finish
Unexecuted instantiation: rfapi_vty.c:agg_table_finish
Unexecuted instantiation: vnc_export_bgp.c:agg_table_finish
Unexecuted instantiation: vnc_export_table.c:agg_table_finish
Unexecuted instantiation: vnc_import_bgp.c:agg_table_finish
Unexecuted instantiation: vnc_zebra.c:agg_table_finish
134
135
static inline struct agg_node *agg_route_table_top(struct agg_node *node)
136
0
{
137
0
  return (struct agg_node *)route_top(node->table);
138
0
}
Unexecuted instantiation: agg_table.c:agg_route_table_top
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_route_table_top
Unexecuted instantiation: rfapi_import.c:agg_route_table_top
Unexecuted instantiation: rfapi.c:agg_route_table_top
Unexecuted instantiation: rfapi_ap.c:agg_route_table_top
Unexecuted instantiation: rfapi_nve_addr.c:agg_route_table_top
Unexecuted instantiation: rfapi_monitor.c:agg_route_table_top
Unexecuted instantiation: rfapi_rib.c:agg_route_table_top
Unexecuted instantiation: rfapi_vty.c:agg_route_table_top
Unexecuted instantiation: vnc_export_bgp.c:agg_route_table_top
Unexecuted instantiation: vnc_export_table.c:agg_route_table_top
Unexecuted instantiation: vnc_import_bgp.c:agg_route_table_top
Unexecuted instantiation: vnc_zebra.c:agg_route_table_top
139
140
static inline struct agg_table *agg_get_table(struct agg_node *node)
141
0
{
142
0
  return (struct agg_table *)route_table_get_info(node->table);
143
0
}
Unexecuted instantiation: agg_table.c:agg_get_table
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_get_table
Unexecuted instantiation: rfapi_import.c:agg_get_table
Unexecuted instantiation: rfapi.c:agg_get_table
Unexecuted instantiation: rfapi_ap.c:agg_get_table
Unexecuted instantiation: rfapi_nve_addr.c:agg_get_table
Unexecuted instantiation: rfapi_monitor.c:agg_get_table
Unexecuted instantiation: rfapi_rib.c:agg_get_table
Unexecuted instantiation: rfapi_vty.c:agg_get_table
Unexecuted instantiation: vnc_export_bgp.c:agg_get_table
Unexecuted instantiation: vnc_export_table.c:agg_get_table
Unexecuted instantiation: vnc_import_bgp.c:agg_get_table
Unexecuted instantiation: vnc_zebra.c:agg_get_table
144
145
static inline const struct prefix *
146
agg_node_get_prefix(const struct agg_node *node)
147
0
{
148
0
  return &node->p;
149
0
}
Unexecuted instantiation: agg_table.c:agg_node_get_prefix
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_get_prefix
Unexecuted instantiation: rfapi_import.c:agg_node_get_prefix
Unexecuted instantiation: rfapi.c:agg_node_get_prefix
Unexecuted instantiation: rfapi_ap.c:agg_node_get_prefix
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_get_prefix
Unexecuted instantiation: rfapi_monitor.c:agg_node_get_prefix
Unexecuted instantiation: rfapi_rib.c:agg_node_get_prefix
Unexecuted instantiation: rfapi_vty.c:agg_node_get_prefix
Unexecuted instantiation: vnc_export_bgp.c:agg_node_get_prefix
Unexecuted instantiation: vnc_export_table.c:agg_node_get_prefix
Unexecuted instantiation: vnc_import_bgp.c:agg_node_get_prefix
Unexecuted instantiation: vnc_zebra.c:agg_node_get_prefix
150
151
static inline unsigned int agg_node_get_lock_count(const struct agg_node *node)
152
0
{
153
0
  return node->lock;
154
0
}
Unexecuted instantiation: agg_table.c:agg_node_get_lock_count
Unexecuted instantiation: bgp_rfapi_cfg.c:agg_node_get_lock_count
Unexecuted instantiation: rfapi_import.c:agg_node_get_lock_count
Unexecuted instantiation: rfapi.c:agg_node_get_lock_count
Unexecuted instantiation: rfapi_ap.c:agg_node_get_lock_count
Unexecuted instantiation: rfapi_nve_addr.c:agg_node_get_lock_count
Unexecuted instantiation: rfapi_monitor.c:agg_node_get_lock_count
Unexecuted instantiation: rfapi_rib.c:agg_node_get_lock_count
Unexecuted instantiation: rfapi_vty.c:agg_node_get_lock_count
Unexecuted instantiation: vnc_export_bgp.c:agg_node_get_lock_count
Unexecuted instantiation: vnc_export_table.c:agg_node_get_lock_count
Unexecuted instantiation: vnc_import_bgp.c:agg_node_get_lock_count
Unexecuted instantiation: vnc_zebra.c:agg_node_get_lock_count
155
156
#ifdef _FRR_ATTRIBUTE_PRINTFRR
157
#pragma FRR printfrr_ext "%pRN"  (struct agg_node *)
158
#endif
159
160
#ifdef __cplusplus
161
}
162
#endif
163
164
#endif