Coverage Report

Created: 2026-05-11 06:44

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/freeradius-server/src/freeradius-devel/util/dict_ext.h
Line
Count
Source
1
#pragma once
2
/*
3
 *  This program is free software; you can redistribute it and/or modify
4
 *  it under the terms of the GNU General Public License as published by
5
 *  the Free Software Foundation; either version 2 of the License, or
6
 *  (at your option) any later version.
7
 *
8
 *  This program is distributed in the hope that it will be useful,
9
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 *  GNU General Public License for more details.
12
 *
13
 *  You should have received a copy of the GNU General Public License
14
 *  along with this program; if not, write to the Free Software
15
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
16
 */
17
18
/** Multi-protocol AVP dictionary API
19
 *
20
 * @file src/lib/util/dict_ext.h
21
 *
22
 * @copyright 2020 The FreeRADIUS server project
23
 * @copyright 2020,2024 Arran Cudbard-Bell <a.cudbardb@freeradius.org>
24
 */
25
RCSIDH(dict_ext_h, "$Id: d409cbf1a830e224856b508c4a34211e9a5e6aa9 $")
26
27
#include <freeradius-devel/util/dict.h>
28
#include <freeradius-devel/util/ext.h>
29
#include <freeradius-devel/util/hash.h>
30
31
#include <limits.h>
32
33
#ifdef __cplusplus
34
extern "C" {
35
#endif
36
37
extern fr_ext_t const fr_dict_attr_ext_def;
38
extern fr_ext_t const fr_dict_enum_ext_def;
39
40
/** Attribute extension - Holds children for an attribute
41
 *
42
 * Children are possible for:
43
 *
44
 * #FR_TYPE_TLV, #FR_TYPE_VENDOR, #FR_TYPE_VSA, #FR_TYPE_STRUCT
45
 *
46
 * *or* where the parent->parent->type is
47
 * #FR_TYPE_STRUCT, and "parent" is a "key"
48
 * field.  Note that these attributes therefore
49
 * cannot have VALUEs, as the child defines their
50
 * VALUE.  See dict_attr_can_have_children() for details.
51
 */
52
typedef struct {
53
  fr_dict_attr_t const  **children;     //!< Children of this attribute.
54
} fr_dict_attr_ext_children_t;
55
56
DIAG_OFF(attributes)
57
typedef enum CC_HINT(flag_enum) {
58
  FR_DICT_ATTR_REF_NONE   = 0x00,     //!< No ref set.
59
  FR_DICT_ATTR_REF_ALIAS    = 0x01,     //!< The attribute is an alias for another attribute.
60
                ///< Either a straight ALIAS, or a pointer from FR_TYPE_GROUP
61
                ///< into another dictionary.
62
  FR_DICT_ATTR_REF_CLONE    = 0x02,     //!< The attribute is a "copy" of another attribute.
63
  FR_DICT_ATTR_REF_ENUM   = 0x04,     //!< The attribute is an enumeration value.
64
  FR_DICT_ATTR_REF_KEY    = 0x08,     //!< it is a UNION which has a ref to a key, and children.
65
  FR_DICT_ATTR_REF_ROOT   = 0x10,     //!< only for FR_TYPE_ATTR, point to the default root for enums
66
  FR_DICT_ATTR_REF_UNRESOLVED = 0x8000          //!< This flag is combined with the other states to indicate
67
                ///< that the reference is unresolved.
68
} fr_dict_attr_ref_type_t;
69
DIAG_ON(attributes)
70
71
106k
#define fr_dict_attr_ref_is_unresolved(_type) ((_type) & FR_DICT_ATTR_REF_UNRESOLVED)
72
120
#define fr_dict_attr_ref_type(_type)    ((_type) & ~FR_DICT_ATTR_REF_UNRESOLVED)
73
74
/** Attribute extension - Holds a reference to an attribute in another dictionary
75
 *
76
 */
77
typedef struct {
78
  fr_dict_attr_ref_type_t type;       //!< The state of the reference.
79
  union {
80
    fr_dict_attr_t const  *ref;     //!< A resolved pointer to the referenced attribute.
81
    char      *unresolved;    //!< An unresolved reference (will need resolving later).
82
  };
83
} fr_dict_attr_ext_ref_t;
84
85
/** Attribute extension - Cached vendor pointer
86
 *
87
 */
88
typedef struct {
89
  fr_dict_attr_t const  *vendor;      //!< ancestor which has type #FR_TYPE_VENDOR
90
} fr_dict_attr_ext_vendor_t;
91
92
/** Attribute extension - Holds enumeration values
93
 *
94
 */
95
typedef struct {
96
  size_t      max_name_len;     //!< maximum length of a name
97
  fr_hash_table_t   *value_by_name;     //!< Lookup an enumeration value by name
98
  fr_hash_table_t   *name_by_value;     //!< Lookup a name by value
99
} fr_dict_attr_ext_enumv_t;
100
101
/** Attribute extension - Holds a hash table with the names of all children of this attribute
102
 *
103
 */
104
typedef struct {
105
  fr_hash_table_t   *namespace;     //!< Lookup a child by name
106
} fr_dict_attr_ext_namespace_t;
107
108
/** @name Add extension structures to attributes
109
 *
110
 * @{
111
 */
112
113
/* Retrieve an extension structure for a dictionary attribute
114
 *
115
 * @param[in] da  to retrieve structure from.
116
 * @param[in] ext to retrieve.
117
 * @return
118
 *  - NULL if the extension wasn't found.
119
 *  - A pointer to the start of the extension.
120
 */
121
static inline void *fr_dict_attr_ext(fr_dict_attr_t const *da, fr_dict_attr_ext_t ext)
122
16.9M
{
123
16.9M
  if (!da->ext[ext]) return NULL;
124
125
9.76M
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
16.9M
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_ext
Unexecuted instantiation: base32.c:fr_dict_attr_ext
Unexecuted instantiation: base64.c:fr_dict_attr_ext
Unexecuted instantiation: calc.c:fr_dict_attr_ext
cbor.c:fr_dict_attr_ext
Line
Count
Source
122
2.85k
{
123
2.85k
  if (!da->ext[ext]) return NULL;
124
125
2.85k
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
2.85k
}
Unexecuted instantiation: dict_ext.c:fr_dict_attr_ext
dict_fixup.c:fr_dict_attr_ext
Line
Count
Source
122
186
{
123
186
  if (!da->ext[ext]) return NULL;
124
125
100
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
186
}
Unexecuted instantiation: dict_print.c:fr_dict_attr_ext
Unexecuted instantiation: dict_test.c:fr_dict_attr_ext
dict_tokenize.c:fr_dict_attr_ext
Line
Count
Source
122
26.5k
{
123
26.5k
  if (!da->ext[ext]) return NULL;
124
125
826
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
26.5k
}
dict_unknown.c:fr_dict_attr_ext
Line
Count
Source
122
1.45M
{
123
1.45M
  if (!da->ext[ext]) return NULL;
124
125
242k
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
1.45M
}
dict_util.c:fr_dict_attr_ext
Line
Count
Source
122
15.1M
{
123
15.1M
  if (!da->ext[ext]) return NULL;
124
125
9.17M
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
15.1M
}
dict_validate.c:fr_dict_attr_ext
Line
Count
Source
122
20
{
123
20
  if (!da->ext[ext]) return NULL;
124
125
20
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
20
}
Unexecuted instantiation: dl.c:fr_dict_attr_ext
Unexecuted instantiation: dns.c:fr_dict_attr_ext
Unexecuted instantiation: edit.c:fr_dict_attr_ext
Unexecuted instantiation: encode.c:fr_dict_attr_ext
Unexecuted instantiation: timer.c:fr_dict_attr_ext
Unexecuted instantiation: file.c:fr_dict_attr_ext
Unexecuted instantiation: inet.c:fr_dict_attr_ext
Unexecuted instantiation: log.c:fr_dict_attr_ext
Unexecuted instantiation: packet.c:fr_dict_attr_ext
Unexecuted instantiation: pair.c:fr_dict_attr_ext
Unexecuted instantiation: pair_inline.c:fr_dict_attr_ext
Unexecuted instantiation: pair_legacy.c:fr_dict_attr_ext
Unexecuted instantiation: pair_print.c:fr_dict_attr_ext
Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_ext
Unexecuted instantiation: print.c:fr_dict_attr_ext
Unexecuted instantiation: proto.c:fr_dict_attr_ext
Unexecuted instantiation: regex.c:fr_dict_attr_ext
Unexecuted instantiation: socket.c:fr_dict_attr_ext
Unexecuted instantiation: stats.c:fr_dict_attr_ext
Unexecuted instantiation: struct.c:fr_dict_attr_ext
Unexecuted instantiation: trie.c:fr_dict_attr_ext
Unexecuted instantiation: types.c:fr_dict_attr_ext
Unexecuted instantiation: uri.c:fr_dict_attr_ext
Unexecuted instantiation: value.c:fr_dict_attr_ext
Unexecuted instantiation: fuzzer.c:fr_dict_attr_ext
base.c:fr_dict_attr_ext
Line
Count
Source
122
21.9k
{
123
21.9k
  if (!da->ext[ext]) return NULL;
124
125
21.8k
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
21.9k
}
decode.c:fr_dict_attr_ext
Line
Count
Source
122
321k
{
123
321k
  if (!da->ext[ext]) return NULL;
124
125
321k
  return fr_ext_ptr(da, da->ext[ext], fr_dict_attr_ext_def.info[ext].has_hdr);
126
321k
}
Unexecuted instantiation: raw.c:fr_dict_attr_ext
Unexecuted instantiation: udp.c:fr_dict_attr_ext
Unexecuted instantiation: json.c:fr_dict_attr_ext
Unexecuted instantiation: jpath.c:fr_dict_attr_ext
Unexecuted instantiation: cache.c:fr_dict_attr_ext
Unexecuted instantiation: cert.c:fr_dict_attr_ext
Unexecuted instantiation: conf.c:fr_dict_attr_ext
Unexecuted instantiation: ctx.c:fr_dict_attr_ext
Unexecuted instantiation: engine.c:fr_dict_attr_ext
Unexecuted instantiation: pairs.c:fr_dict_attr_ext
Unexecuted instantiation: session.c:fr_dict_attr_ext
Unexecuted instantiation: strerror.c:fr_dict_attr_ext
Unexecuted instantiation: utils.c:fr_dict_attr_ext
Unexecuted instantiation: verify.c:fr_dict_attr_ext
Unexecuted instantiation: version.c:fr_dict_attr_ext
Unexecuted instantiation: virtual_server.c:fr_dict_attr_ext
Unexecuted instantiation: list.c:fr_dict_attr_ext
Unexecuted instantiation: tcp.c:fr_dict_attr_ext
Unexecuted instantiation: abinary.c:fr_dict_attr_ext
Unexecuted instantiation: auth.c:fr_dict_attr_ext
Unexecuted instantiation: cf_file.c:fr_dict_attr_ext
Unexecuted instantiation: cf_parse.c:fr_dict_attr_ext
Unexecuted instantiation: cf_util.c:fr_dict_attr_ext
Unexecuted instantiation: client.c:fr_dict_attr_ext
Unexecuted instantiation: command.c:fr_dict_attr_ext
Unexecuted instantiation: connection.c:fr_dict_attr_ext
Unexecuted instantiation: dependency.c:fr_dict_attr_ext
Unexecuted instantiation: dl_module.c:fr_dict_attr_ext
Unexecuted instantiation: exec.c:fr_dict_attr_ext
Unexecuted instantiation: exec_legacy.c:fr_dict_attr_ext
Unexecuted instantiation: exfile.c:fr_dict_attr_ext
Unexecuted instantiation: global_lib.c:fr_dict_attr_ext
Unexecuted instantiation: main_config.c:fr_dict_attr_ext
Unexecuted instantiation: main_loop.c:fr_dict_attr_ext
Unexecuted instantiation: map.c:fr_dict_attr_ext
Unexecuted instantiation: map_proc.c:fr_dict_attr_ext
Unexecuted instantiation: module.c:fr_dict_attr_ext
Unexecuted instantiation: module_method.c:fr_dict_attr_ext
Unexecuted instantiation: module_rlm.c:fr_dict_attr_ext
Unexecuted instantiation: paircmp.c:fr_dict_attr_ext
Unexecuted instantiation: pairmove.c:fr_dict_attr_ext
Unexecuted instantiation: password.c:fr_dict_attr_ext
Unexecuted instantiation: pool.c:fr_dict_attr_ext
Unexecuted instantiation: request.c:fr_dict_attr_ext
Unexecuted instantiation: request_data.c:fr_dict_attr_ext
Unexecuted instantiation: snmp.c:fr_dict_attr_ext
Unexecuted instantiation: state.c:fr_dict_attr_ext
Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_ext
Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_ext
Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_ext
Unexecuted instantiation: trigger.c:fr_dict_attr_ext
Unexecuted instantiation: trunk.c:fr_dict_attr_ext
Unexecuted instantiation: users_file.c:fr_dict_attr_ext
Unexecuted instantiation: util.c:fr_dict_attr_ext
Unexecuted instantiation: virtual_servers.c:fr_dict_attr_ext
Unexecuted instantiation: call.c:fr_dict_attr_ext
Unexecuted instantiation: call_env.c:fr_dict_attr_ext
Unexecuted instantiation: caller.c:fr_dict_attr_ext
Unexecuted instantiation: catch.c:fr_dict_attr_ext
Unexecuted instantiation: child_request.c:fr_dict_attr_ext
Unexecuted instantiation: compile.c:fr_dict_attr_ext
Unexecuted instantiation: condition.c:fr_dict_attr_ext
Unexecuted instantiation: detach.c:fr_dict_attr_ext
Unexecuted instantiation: finally.c:fr_dict_attr_ext
Unexecuted instantiation: foreach.c:fr_dict_attr_ext
Unexecuted instantiation: function.c:fr_dict_attr_ext
Unexecuted instantiation: group.c:fr_dict_attr_ext
Unexecuted instantiation: interpret.c:fr_dict_attr_ext
Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_ext
Unexecuted instantiation: io.c:fr_dict_attr_ext
Unexecuted instantiation: limit.c:fr_dict_attr_ext
Unexecuted instantiation: load_balance.c:fr_dict_attr_ext
Unexecuted instantiation: map_builtin.c:fr_dict_attr_ext
Unexecuted instantiation: parallel.c:fr_dict_attr_ext
Unexecuted instantiation: return.c:fr_dict_attr_ext
Unexecuted instantiation: subrequest.c:fr_dict_attr_ext
Unexecuted instantiation: switch.c:fr_dict_attr_ext
Unexecuted instantiation: timeout.c:fr_dict_attr_ext
Unexecuted instantiation: tmpl.c:fr_dict_attr_ext
Unexecuted instantiation: try.c:fr_dict_attr_ext
Unexecuted instantiation: transaction.c:fr_dict_attr_ext
Unexecuted instantiation: xlat.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_eval.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_expr.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_func.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_inst.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_pair.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_purify.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_ext
Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_ext
Unexecuted instantiation: app_io.c:fr_dict_attr_ext
Unexecuted instantiation: channel.c:fr_dict_attr_ext
Unexecuted instantiation: coord.c:fr_dict_attr_ext
Unexecuted instantiation: coord_pair.c:fr_dict_attr_ext
Unexecuted instantiation: master.c:fr_dict_attr_ext
Unexecuted instantiation: network.c:fr_dict_attr_ext
Unexecuted instantiation: schedule.c:fr_dict_attr_ext
Unexecuted instantiation: thread.c:fr_dict_attr_ext
Unexecuted instantiation: worker.c:fr_dict_attr_ext
Unexecuted instantiation: vmps.c:fr_dict_attr_ext
127
128
/** Return whether a da has a given extension or not
129
 *
130
 * @param[in] da  to check for extensions.
131
 * @param[in] ext to check.
132
 * @return
133
 *      - true if the da has the specified extension.
134
 *  - false if the da does not have the specified extension
135
 */
136
static inline bool fr_dict_attr_has_ext(fr_dict_attr_t const *da, fr_dict_attr_ext_t ext)
137
6.43M
{
138
6.43M
  return (da->ext[ext] > 0);
139
6.43M
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_has_ext
Unexecuted instantiation: base32.c:fr_dict_attr_has_ext
Unexecuted instantiation: base64.c:fr_dict_attr_has_ext
Unexecuted instantiation: calc.c:fr_dict_attr_has_ext
Unexecuted instantiation: cbor.c:fr_dict_attr_has_ext
Unexecuted instantiation: decode.c:fr_dict_attr_has_ext
Unexecuted instantiation: dict_ext.c:fr_dict_attr_has_ext
Unexecuted instantiation: dict_fixup.c:fr_dict_attr_has_ext
Unexecuted instantiation: dict_print.c:fr_dict_attr_has_ext
Unexecuted instantiation: dict_test.c:fr_dict_attr_has_ext
Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_has_ext
Unexecuted instantiation: dict_unknown.c:fr_dict_attr_has_ext
dict_util.c:fr_dict_attr_has_ext
Line
Count
Source
137
6.43M
{
138
6.43M
  return (da->ext[ext] > 0);
139
6.43M
}
Unexecuted instantiation: dict_validate.c:fr_dict_attr_has_ext
Unexecuted instantiation: dl.c:fr_dict_attr_has_ext
Unexecuted instantiation: dns.c:fr_dict_attr_has_ext
Unexecuted instantiation: edit.c:fr_dict_attr_has_ext
Unexecuted instantiation: encode.c:fr_dict_attr_has_ext
Unexecuted instantiation: timer.c:fr_dict_attr_has_ext
Unexecuted instantiation: file.c:fr_dict_attr_has_ext
Unexecuted instantiation: inet.c:fr_dict_attr_has_ext
Unexecuted instantiation: log.c:fr_dict_attr_has_ext
Unexecuted instantiation: packet.c:fr_dict_attr_has_ext
Unexecuted instantiation: pair.c:fr_dict_attr_has_ext
Unexecuted instantiation: pair_inline.c:fr_dict_attr_has_ext
Unexecuted instantiation: pair_legacy.c:fr_dict_attr_has_ext
Unexecuted instantiation: pair_print.c:fr_dict_attr_has_ext
Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_has_ext
Unexecuted instantiation: print.c:fr_dict_attr_has_ext
Unexecuted instantiation: proto.c:fr_dict_attr_has_ext
Unexecuted instantiation: regex.c:fr_dict_attr_has_ext
Unexecuted instantiation: socket.c:fr_dict_attr_has_ext
Unexecuted instantiation: stats.c:fr_dict_attr_has_ext
Unexecuted instantiation: struct.c:fr_dict_attr_has_ext
Unexecuted instantiation: trie.c:fr_dict_attr_has_ext
Unexecuted instantiation: types.c:fr_dict_attr_has_ext
Unexecuted instantiation: uri.c:fr_dict_attr_has_ext
Unexecuted instantiation: value.c:fr_dict_attr_has_ext
Unexecuted instantiation: fuzzer.c:fr_dict_attr_has_ext
Unexecuted instantiation: base.c:fr_dict_attr_has_ext
Unexecuted instantiation: raw.c:fr_dict_attr_has_ext
Unexecuted instantiation: udp.c:fr_dict_attr_has_ext
Unexecuted instantiation: json.c:fr_dict_attr_has_ext
Unexecuted instantiation: jpath.c:fr_dict_attr_has_ext
Unexecuted instantiation: cache.c:fr_dict_attr_has_ext
Unexecuted instantiation: cert.c:fr_dict_attr_has_ext
Unexecuted instantiation: conf.c:fr_dict_attr_has_ext
Unexecuted instantiation: ctx.c:fr_dict_attr_has_ext
Unexecuted instantiation: engine.c:fr_dict_attr_has_ext
Unexecuted instantiation: pairs.c:fr_dict_attr_has_ext
Unexecuted instantiation: session.c:fr_dict_attr_has_ext
Unexecuted instantiation: strerror.c:fr_dict_attr_has_ext
Unexecuted instantiation: utils.c:fr_dict_attr_has_ext
Unexecuted instantiation: verify.c:fr_dict_attr_has_ext
Unexecuted instantiation: version.c:fr_dict_attr_has_ext
Unexecuted instantiation: virtual_server.c:fr_dict_attr_has_ext
Unexecuted instantiation: list.c:fr_dict_attr_has_ext
Unexecuted instantiation: tcp.c:fr_dict_attr_has_ext
Unexecuted instantiation: abinary.c:fr_dict_attr_has_ext
Unexecuted instantiation: auth.c:fr_dict_attr_has_ext
Unexecuted instantiation: cf_file.c:fr_dict_attr_has_ext
Unexecuted instantiation: cf_parse.c:fr_dict_attr_has_ext
Unexecuted instantiation: cf_util.c:fr_dict_attr_has_ext
Unexecuted instantiation: client.c:fr_dict_attr_has_ext
Unexecuted instantiation: command.c:fr_dict_attr_has_ext
Unexecuted instantiation: connection.c:fr_dict_attr_has_ext
Unexecuted instantiation: dependency.c:fr_dict_attr_has_ext
Unexecuted instantiation: dl_module.c:fr_dict_attr_has_ext
Unexecuted instantiation: exec.c:fr_dict_attr_has_ext
Unexecuted instantiation: exec_legacy.c:fr_dict_attr_has_ext
Unexecuted instantiation: exfile.c:fr_dict_attr_has_ext
Unexecuted instantiation: global_lib.c:fr_dict_attr_has_ext
Unexecuted instantiation: main_config.c:fr_dict_attr_has_ext
Unexecuted instantiation: main_loop.c:fr_dict_attr_has_ext
Unexecuted instantiation: map.c:fr_dict_attr_has_ext
Unexecuted instantiation: map_proc.c:fr_dict_attr_has_ext
Unexecuted instantiation: module.c:fr_dict_attr_has_ext
Unexecuted instantiation: module_method.c:fr_dict_attr_has_ext
Unexecuted instantiation: module_rlm.c:fr_dict_attr_has_ext
Unexecuted instantiation: paircmp.c:fr_dict_attr_has_ext
Unexecuted instantiation: pairmove.c:fr_dict_attr_has_ext
Unexecuted instantiation: password.c:fr_dict_attr_has_ext
Unexecuted instantiation: pool.c:fr_dict_attr_has_ext
Unexecuted instantiation: request.c:fr_dict_attr_has_ext
Unexecuted instantiation: request_data.c:fr_dict_attr_has_ext
Unexecuted instantiation: snmp.c:fr_dict_attr_has_ext
Unexecuted instantiation: state.c:fr_dict_attr_has_ext
Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_has_ext
Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_has_ext
Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_has_ext
Unexecuted instantiation: trigger.c:fr_dict_attr_has_ext
Unexecuted instantiation: trunk.c:fr_dict_attr_has_ext
Unexecuted instantiation: users_file.c:fr_dict_attr_has_ext
Unexecuted instantiation: util.c:fr_dict_attr_has_ext
Unexecuted instantiation: virtual_servers.c:fr_dict_attr_has_ext
Unexecuted instantiation: call.c:fr_dict_attr_has_ext
Unexecuted instantiation: call_env.c:fr_dict_attr_has_ext
Unexecuted instantiation: caller.c:fr_dict_attr_has_ext
Unexecuted instantiation: catch.c:fr_dict_attr_has_ext
Unexecuted instantiation: child_request.c:fr_dict_attr_has_ext
Unexecuted instantiation: compile.c:fr_dict_attr_has_ext
Unexecuted instantiation: condition.c:fr_dict_attr_has_ext
Unexecuted instantiation: detach.c:fr_dict_attr_has_ext
Unexecuted instantiation: finally.c:fr_dict_attr_has_ext
Unexecuted instantiation: foreach.c:fr_dict_attr_has_ext
Unexecuted instantiation: function.c:fr_dict_attr_has_ext
Unexecuted instantiation: group.c:fr_dict_attr_has_ext
Unexecuted instantiation: interpret.c:fr_dict_attr_has_ext
Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_has_ext
Unexecuted instantiation: io.c:fr_dict_attr_has_ext
Unexecuted instantiation: limit.c:fr_dict_attr_has_ext
Unexecuted instantiation: load_balance.c:fr_dict_attr_has_ext
Unexecuted instantiation: map_builtin.c:fr_dict_attr_has_ext
Unexecuted instantiation: parallel.c:fr_dict_attr_has_ext
Unexecuted instantiation: return.c:fr_dict_attr_has_ext
Unexecuted instantiation: subrequest.c:fr_dict_attr_has_ext
Unexecuted instantiation: switch.c:fr_dict_attr_has_ext
Unexecuted instantiation: timeout.c:fr_dict_attr_has_ext
Unexecuted instantiation: tmpl.c:fr_dict_attr_has_ext
Unexecuted instantiation: try.c:fr_dict_attr_has_ext
Unexecuted instantiation: transaction.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_eval.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_expr.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_func.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_inst.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_pair.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_purify.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_has_ext
Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_has_ext
Unexecuted instantiation: app_io.c:fr_dict_attr_has_ext
Unexecuted instantiation: channel.c:fr_dict_attr_has_ext
Unexecuted instantiation: coord.c:fr_dict_attr_has_ext
Unexecuted instantiation: coord_pair.c:fr_dict_attr_has_ext
Unexecuted instantiation: master.c:fr_dict_attr_has_ext
Unexecuted instantiation: network.c:fr_dict_attr_has_ext
Unexecuted instantiation: schedule.c:fr_dict_attr_has_ext
Unexecuted instantiation: thread.c:fr_dict_attr_has_ext
Unexecuted instantiation: worker.c:fr_dict_attr_has_ext
Unexecuted instantiation: vmps.c:fr_dict_attr_has_ext
140
141
/** Return the reference associated with a group type attribute
142
 *
143
 * @param[in] da  to return the reference for.
144
 * @return
145
 *  - NULL if no reference available.
146
 *  - A pointer to the attribute being referenced.
147
 */
148
static inline fr_dict_attr_t const *fr_dict_attr_ref(fr_dict_attr_t const *da)
149
6.04M
{
150
6.04M
  fr_dict_attr_ext_ref_t *ext;
151
152
6.04M
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_REF);
153
6.04M
  if (!ext) return NULL;
154
155
  /*
156
   *  Unresolve refs aren't valid refs...
157
   */
158
105k
  if (fr_dict_attr_ref_is_unresolved(ext->type)) return NULL;
159
160
  /*
161
   *  Temporary backwards compatibility...
162
   */
163
42.6k
  if (ext->type != FR_DICT_ATTR_REF_ALIAS) return NULL;
164
165
42.6k
  return ext->ref;
166
42.6k
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_ref
Unexecuted instantiation: base32.c:fr_dict_attr_ref
Unexecuted instantiation: base64.c:fr_dict_attr_ref
Unexecuted instantiation: calc.c:fr_dict_attr_ref
cbor.c:fr_dict_attr_ref
Line
Count
Source
149
2.85k
{
150
2.85k
  fr_dict_attr_ext_ref_t *ext;
151
152
2.85k
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_REF);
153
2.85k
  if (!ext) return NULL;
154
155
  /*
156
   *  Unresolve refs aren't valid refs...
157
   */
158
2.85k
  if (fr_dict_attr_ref_is_unresolved(ext->type)) return NULL;
159
160
  /*
161
   *  Temporary backwards compatibility...
162
   */
163
2.85k
  if (ext->type != FR_DICT_ATTR_REF_ALIAS) return NULL;
164
165
2.85k
  return ext->ref;
166
2.85k
}
Unexecuted instantiation: decode.c:fr_dict_attr_ref
Unexecuted instantiation: dict_ext.c:fr_dict_attr_ref
dict_fixup.c:fr_dict_attr_ref
Line
Count
Source
149
90
{
150
90
  fr_dict_attr_ext_ref_t *ext;
151
152
90
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_REF);
153
90
  if (!ext) return NULL;
154
155
  /*
156
   *  Unresolve refs aren't valid refs...
157
   */
158
4
  if (fr_dict_attr_ref_is_unresolved(ext->type)) return NULL;
159
160
  /*
161
   *  Temporary backwards compatibility...
162
   */
163
0
  if (ext->type != FR_DICT_ATTR_REF_ALIAS) return NULL;
164
165
0
  return ext->ref;
166
0
}
Unexecuted instantiation: dict_print.c:fr_dict_attr_ref
Unexecuted instantiation: dict_test.c:fr_dict_attr_ref
Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_ref
Unexecuted instantiation: dict_unknown.c:fr_dict_attr_ref
dict_util.c:fr_dict_attr_ref
Line
Count
Source
149
6.02M
{
150
6.02M
  fr_dict_attr_ext_ref_t *ext;
151
152
6.02M
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_REF);
153
6.02M
  if (!ext) return NULL;
154
155
  /*
156
   *  Unresolve refs aren't valid refs...
157
   */
158
89.6k
  if (fr_dict_attr_ref_is_unresolved(ext->type)) return NULL;
159
160
  /*
161
   *  Temporary backwards compatibility...
162
   */
163
26.3k
  if (ext->type != FR_DICT_ATTR_REF_ALIAS) return NULL;
164
165
26.3k
  return ext->ref;
166
26.3k
}
Unexecuted instantiation: dict_validate.c:fr_dict_attr_ref
Unexecuted instantiation: dl.c:fr_dict_attr_ref
Unexecuted instantiation: dns.c:fr_dict_attr_ref
Unexecuted instantiation: edit.c:fr_dict_attr_ref
Unexecuted instantiation: encode.c:fr_dict_attr_ref
Unexecuted instantiation: timer.c:fr_dict_attr_ref
Unexecuted instantiation: file.c:fr_dict_attr_ref
Unexecuted instantiation: inet.c:fr_dict_attr_ref
Unexecuted instantiation: log.c:fr_dict_attr_ref
Unexecuted instantiation: packet.c:fr_dict_attr_ref
Unexecuted instantiation: pair.c:fr_dict_attr_ref
Unexecuted instantiation: pair_inline.c:fr_dict_attr_ref
Unexecuted instantiation: pair_legacy.c:fr_dict_attr_ref
Unexecuted instantiation: pair_print.c:fr_dict_attr_ref
Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_ref
Unexecuted instantiation: print.c:fr_dict_attr_ref
Unexecuted instantiation: proto.c:fr_dict_attr_ref
Unexecuted instantiation: regex.c:fr_dict_attr_ref
Unexecuted instantiation: socket.c:fr_dict_attr_ref
Unexecuted instantiation: stats.c:fr_dict_attr_ref
Unexecuted instantiation: struct.c:fr_dict_attr_ref
Unexecuted instantiation: trie.c:fr_dict_attr_ref
Unexecuted instantiation: types.c:fr_dict_attr_ref
Unexecuted instantiation: uri.c:fr_dict_attr_ref
Unexecuted instantiation: value.c:fr_dict_attr_ref
Unexecuted instantiation: fuzzer.c:fr_dict_attr_ref
Unexecuted instantiation: base.c:fr_dict_attr_ref
decode.c:fr_dict_attr_ref
Line
Count
Source
149
13.4k
{
150
13.4k
  fr_dict_attr_ext_ref_t *ext;
151
152
13.4k
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_REF);
153
13.4k
  if (!ext) return NULL;
154
155
  /*
156
   *  Unresolve refs aren't valid refs...
157
   */
158
13.4k
  if (fr_dict_attr_ref_is_unresolved(ext->type)) return NULL;
159
160
  /*
161
   *  Temporary backwards compatibility...
162
   */
163
13.4k
  if (ext->type != FR_DICT_ATTR_REF_ALIAS) return NULL;
164
165
13.4k
  return ext->ref;
166
13.4k
}
Unexecuted instantiation: encode.c:fr_dict_attr_ref
Unexecuted instantiation: raw.c:fr_dict_attr_ref
Unexecuted instantiation: udp.c:fr_dict_attr_ref
base.c:fr_dict_attr_ref
Line
Count
Source
149
14
{
150
14
  fr_dict_attr_ext_ref_t *ext;
151
152
14
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_REF);
153
14
  if (!ext) return NULL;
154
155
  /*
156
   *  Unresolve refs aren't valid refs...
157
   */
158
14
  if (fr_dict_attr_ref_is_unresolved(ext->type)) return NULL;
159
160
  /*
161
   *  Temporary backwards compatibility...
162
   */
163
0
  if (ext->type != FR_DICT_ATTR_REF_ALIAS) return NULL;
164
165
0
  return ext->ref;
166
0
}
Unexecuted instantiation: json.c:fr_dict_attr_ref
Unexecuted instantiation: jpath.c:fr_dict_attr_ref
Unexecuted instantiation: cache.c:fr_dict_attr_ref
Unexecuted instantiation: cert.c:fr_dict_attr_ref
Unexecuted instantiation: conf.c:fr_dict_attr_ref
Unexecuted instantiation: ctx.c:fr_dict_attr_ref
Unexecuted instantiation: engine.c:fr_dict_attr_ref
Unexecuted instantiation: pairs.c:fr_dict_attr_ref
Unexecuted instantiation: session.c:fr_dict_attr_ref
Unexecuted instantiation: strerror.c:fr_dict_attr_ref
Unexecuted instantiation: utils.c:fr_dict_attr_ref
Unexecuted instantiation: verify.c:fr_dict_attr_ref
Unexecuted instantiation: version.c:fr_dict_attr_ref
Unexecuted instantiation: virtual_server.c:fr_dict_attr_ref
Unexecuted instantiation: list.c:fr_dict_attr_ref
Unexecuted instantiation: tcp.c:fr_dict_attr_ref
Unexecuted instantiation: abinary.c:fr_dict_attr_ref
Unexecuted instantiation: auth.c:fr_dict_attr_ref
Unexecuted instantiation: cf_file.c:fr_dict_attr_ref
Unexecuted instantiation: cf_parse.c:fr_dict_attr_ref
Unexecuted instantiation: cf_util.c:fr_dict_attr_ref
Unexecuted instantiation: client.c:fr_dict_attr_ref
Unexecuted instantiation: command.c:fr_dict_attr_ref
Unexecuted instantiation: connection.c:fr_dict_attr_ref
Unexecuted instantiation: dependency.c:fr_dict_attr_ref
Unexecuted instantiation: dl_module.c:fr_dict_attr_ref
Unexecuted instantiation: exec.c:fr_dict_attr_ref
Unexecuted instantiation: exec_legacy.c:fr_dict_attr_ref
Unexecuted instantiation: exfile.c:fr_dict_attr_ref
Unexecuted instantiation: global_lib.c:fr_dict_attr_ref
Unexecuted instantiation: main_config.c:fr_dict_attr_ref
Unexecuted instantiation: main_loop.c:fr_dict_attr_ref
Unexecuted instantiation: map.c:fr_dict_attr_ref
Unexecuted instantiation: map_proc.c:fr_dict_attr_ref
Unexecuted instantiation: module.c:fr_dict_attr_ref
Unexecuted instantiation: module_method.c:fr_dict_attr_ref
Unexecuted instantiation: module_rlm.c:fr_dict_attr_ref
Unexecuted instantiation: paircmp.c:fr_dict_attr_ref
Unexecuted instantiation: pairmove.c:fr_dict_attr_ref
Unexecuted instantiation: password.c:fr_dict_attr_ref
Unexecuted instantiation: pool.c:fr_dict_attr_ref
Unexecuted instantiation: request.c:fr_dict_attr_ref
Unexecuted instantiation: request_data.c:fr_dict_attr_ref
Unexecuted instantiation: snmp.c:fr_dict_attr_ref
Unexecuted instantiation: state.c:fr_dict_attr_ref
Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_ref
Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_ref
Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_ref
Unexecuted instantiation: trigger.c:fr_dict_attr_ref
Unexecuted instantiation: trunk.c:fr_dict_attr_ref
Unexecuted instantiation: users_file.c:fr_dict_attr_ref
Unexecuted instantiation: util.c:fr_dict_attr_ref
Unexecuted instantiation: virtual_servers.c:fr_dict_attr_ref
Unexecuted instantiation: call.c:fr_dict_attr_ref
Unexecuted instantiation: call_env.c:fr_dict_attr_ref
Unexecuted instantiation: caller.c:fr_dict_attr_ref
Unexecuted instantiation: catch.c:fr_dict_attr_ref
Unexecuted instantiation: child_request.c:fr_dict_attr_ref
Unexecuted instantiation: compile.c:fr_dict_attr_ref
Unexecuted instantiation: condition.c:fr_dict_attr_ref
Unexecuted instantiation: detach.c:fr_dict_attr_ref
Unexecuted instantiation: finally.c:fr_dict_attr_ref
Unexecuted instantiation: foreach.c:fr_dict_attr_ref
Unexecuted instantiation: function.c:fr_dict_attr_ref
Unexecuted instantiation: group.c:fr_dict_attr_ref
Unexecuted instantiation: interpret.c:fr_dict_attr_ref
Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_ref
Unexecuted instantiation: io.c:fr_dict_attr_ref
Unexecuted instantiation: limit.c:fr_dict_attr_ref
Unexecuted instantiation: load_balance.c:fr_dict_attr_ref
Unexecuted instantiation: map.c:fr_dict_attr_ref
Unexecuted instantiation: map_builtin.c:fr_dict_attr_ref
Unexecuted instantiation: parallel.c:fr_dict_attr_ref
Unexecuted instantiation: return.c:fr_dict_attr_ref
Unexecuted instantiation: subrequest.c:fr_dict_attr_ref
Unexecuted instantiation: switch.c:fr_dict_attr_ref
Unexecuted instantiation: timeout.c:fr_dict_attr_ref
Unexecuted instantiation: tmpl.c:fr_dict_attr_ref
Unexecuted instantiation: try.c:fr_dict_attr_ref
Unexecuted instantiation: transaction.c:fr_dict_attr_ref
Unexecuted instantiation: xlat.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_eval.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_expr.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_func.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_inst.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_pair.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_purify.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_ref
Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_ref
Unexecuted instantiation: app_io.c:fr_dict_attr_ref
Unexecuted instantiation: channel.c:fr_dict_attr_ref
Unexecuted instantiation: coord.c:fr_dict_attr_ref
Unexecuted instantiation: coord_pair.c:fr_dict_attr_ref
Unexecuted instantiation: master.c:fr_dict_attr_ref
Unexecuted instantiation: network.c:fr_dict_attr_ref
Unexecuted instantiation: schedule.c:fr_dict_attr_ref
Unexecuted instantiation: thread.c:fr_dict_attr_ref
Unexecuted instantiation: worker.c:fr_dict_attr_ref
Unexecuted instantiation: vmps.c:fr_dict_attr_ref
167
168
/** Return the vendor number for an attribute
169
 *
170
 * @param[in] da    The dictionary attribute to find the
171
 *        vendor for.
172
 * @return
173
 *  - 0 this isn't a vendor specific attribute.
174
 *  - The vendor PEN.
175
 */
176
static inline uint32_t fr_dict_vendor_num_by_da(fr_dict_attr_t const *da)
177
40.0k
{
178
40.0k
  fr_dict_attr_ext_vendor_t *ext;
179
180
40.0k
  if (da->type == FR_TYPE_VENDOR) return da->attr;
181
182
35.1k
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_VENDOR);
183
35.1k
  if (!ext || !ext->vendor) return 0;
184
185
16.8k
  return ext->vendor->attr;
186
35.1k
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_util.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_cbor.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_der.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_dns.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_bfd.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_radius.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_tftp.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer_vmps.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: base32.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: base64.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: calc.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: cbor.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: decode.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dict_ext.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dict_fixup.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dict_print.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dict_test.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dict_tokenize.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dict_unknown.c:fr_dict_vendor_num_by_da
dict_util.c:fr_dict_vendor_num_by_da
Line
Count
Source
177
40.0k
{
178
40.0k
  fr_dict_attr_ext_vendor_t *ext;
179
180
40.0k
  if (da->type == FR_TYPE_VENDOR) return da->attr;
181
182
35.1k
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_VENDOR);
183
35.1k
  if (!ext || !ext->vendor) return 0;
184
185
16.8k
  return ext->vendor->attr;
186
35.1k
}
Unexecuted instantiation: dict_validate.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dl.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dns.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: edit.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: encode.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: timer.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: file.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: inet.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: log.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: packet.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: pair.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: pair_inline.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: pair_legacy.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: pair_print.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: pair_tokenize.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: print.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: proto.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: regex.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: socket.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: stats.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: struct.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: trie.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: types.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: uri.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: value.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: fuzzer.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: base.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: raw.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: udp.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: json.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: jpath.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: cache.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: cert.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: conf.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: ctx.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: engine.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: pairs.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: session.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: strerror.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: utils.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: verify.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: version.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: virtual_server.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: list.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: tcp.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: abinary.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: auth.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: cf_file.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: cf_parse.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: cf_util.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: client.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: command.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: connection.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dependency.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: dl_module.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: exec.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: exec_legacy.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: exfile.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: global_lib.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: main_config.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: main_loop.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: map.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: map_proc.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: module.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: module_method.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: module_rlm.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: paircmp.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: pairmove.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: password.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: pool.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: request.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: request_data.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: snmp.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: state.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: tmpl_dcursor.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: tmpl_eval.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: tmpl_tokenize.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: trigger.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: trunk.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: users_file.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: util.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: virtual_servers.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: call.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: call_env.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: caller.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: catch.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: child_request.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: compile.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: condition.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: detach.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: finally.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: foreach.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: function.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: group.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: interpret.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: interpret_synchronous.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: io.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: limit.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: load_balance.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: map_builtin.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: parallel.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: return.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: subrequest.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: switch.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: timeout.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: tmpl.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: try.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: transaction.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_alloc.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_builtin.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_eval.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_expr.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_func.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_inst.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_pair.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_purify.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_redundant.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: xlat_tokenize.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: app_io.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: channel.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: coord.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: coord_pair.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: master.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: network.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: schedule.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: thread.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: worker.c:fr_dict_vendor_num_by_da
Unexecuted instantiation: vmps.c:fr_dict_vendor_num_by_da
187
188
/** Return the vendor da for an attribute
189
 *
190
 * @param[in] da    The dictionary attribute to find the
191
 *        vendor for.
192
 * @return
193
 *  - 0 this isn't a vendor specific attribute.
194
 *  - The vendor PEN.
195
 */
196
static inline fr_dict_attr_t const *fr_dict_vendor_da_by_da(fr_dict_attr_t const *da)
197
0
{
198
0
  fr_dict_attr_ext_vendor_t *ext;
199
0
200
0
  if (da->type == FR_TYPE_VENDOR) return da;
201
0
202
0
  ext = fr_dict_attr_ext(da, FR_DICT_ATTR_EXT_VENDOR);
203
0
  if (!ext) return NULL;
204
0
205
0
  return ext->vendor;
206
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_util.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_cbor.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_der.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_dns.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_bfd.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_radius.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_tftp.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer_vmps.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: base32.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: base64.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: calc.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: cbor.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: decode.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dict_ext.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dict_fixup.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dict_print.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dict_test.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dict_tokenize.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dict_unknown.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dict_util.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dict_validate.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dl.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dns.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: edit.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: encode.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: timer.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: file.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: inet.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: log.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: packet.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: pair.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: pair_inline.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: pair_legacy.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: pair_print.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: pair_tokenize.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: print.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: proto.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: regex.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: socket.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: stats.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: struct.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: trie.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: types.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: uri.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: value.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: fuzzer.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: base.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: raw.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: udp.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: json.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: jpath.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: cache.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: cert.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: conf.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: ctx.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: engine.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: pairs.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: session.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: strerror.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: utils.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: verify.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: version.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: virtual_server.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: list.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: tcp.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: abinary.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: auth.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: cf_file.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: cf_parse.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: cf_util.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: client.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: command.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: connection.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dependency.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: dl_module.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: exec.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: exec_legacy.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: exfile.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: global_lib.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: main_config.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: main_loop.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: map.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: map_proc.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: module.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: module_method.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: module_rlm.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: paircmp.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: pairmove.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: password.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: pool.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: request.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: request_data.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: snmp.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: state.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: tmpl_dcursor.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: tmpl_eval.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: tmpl_tokenize.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: trigger.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: trunk.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: users_file.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: util.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: virtual_servers.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: call.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: call_env.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: caller.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: catch.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: child_request.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: compile.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: condition.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: detach.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: finally.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: foreach.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: function.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: group.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: interpret.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: interpret_synchronous.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: io.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: limit.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: load_balance.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: map_builtin.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: parallel.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: return.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: subrequest.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: switch.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: timeout.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: tmpl.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: try.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: transaction.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_alloc.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_builtin.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_eval.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_expr.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_func.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_inst.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_pair.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_purify.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_redundant.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: xlat_tokenize.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: app_io.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: channel.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: coord.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: coord_pair.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: master.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: network.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: schedule.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: thread.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: worker.c:fr_dict_vendor_da_by_da
Unexecuted instantiation: vmps.c:fr_dict_vendor_da_by_da
207
208
/* Retrieve an extension structure for a dictionary enum
209
 *
210
 * @param[in] enumv to retrieve structure from.
211
 * @param[in] ext to retrieve.
212
 * @return
213
 *  - NULL if the extension wasn't found.
214
 *  - A pointer to the start of the extension.
215
 */
216
static inline void *fr_dict_enum_ext(fr_dict_enum_value_t const *enumv, fr_dict_enum_ext_t ext)
217
6.53k
{
218
6.53k
  if (!enumv->ext[ext]) return NULL;
219
220
6.14k
  return fr_ext_ptr(enumv, enumv->ext[ext], fr_dict_enum_ext_def.info[ext].has_hdr);
221
6.53k
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_util.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_cbor.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_der.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_dns.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_bfd.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_radius.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_tftp.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer_vmps.c:fr_dict_enum_ext
Unexecuted instantiation: base32.c:fr_dict_enum_ext
Unexecuted instantiation: base64.c:fr_dict_enum_ext
Unexecuted instantiation: calc.c:fr_dict_enum_ext
Unexecuted instantiation: cbor.c:fr_dict_enum_ext
Unexecuted instantiation: decode.c:fr_dict_enum_ext
dict_ext.c:fr_dict_enum_ext
Line
Count
Source
217
206
{
218
206
  if (!enumv->ext[ext]) return NULL;
219
220
50
  return fr_ext_ptr(enumv, enumv->ext[ext], fr_dict_enum_ext_def.info[ext].has_hdr);
221
206
}
Unexecuted instantiation: dict_fixup.c:fr_dict_enum_ext
Unexecuted instantiation: dict_print.c:fr_dict_enum_ext
Unexecuted instantiation: dict_test.c:fr_dict_enum_ext
Unexecuted instantiation: dict_tokenize.c:fr_dict_enum_ext
Unexecuted instantiation: dict_unknown.c:fr_dict_enum_ext
dict_util.c:fr_dict_enum_ext
Line
Count
Source
217
196
{
218
196
  if (!enumv->ext[ext]) return NULL;
219
220
0
  return fr_ext_ptr(enumv, enumv->ext[ext], fr_dict_enum_ext_def.info[ext].has_hdr);
221
196
}
Unexecuted instantiation: dict_validate.c:fr_dict_enum_ext
Unexecuted instantiation: dl.c:fr_dict_enum_ext
Unexecuted instantiation: dns.c:fr_dict_enum_ext
Unexecuted instantiation: edit.c:fr_dict_enum_ext
Unexecuted instantiation: encode.c:fr_dict_enum_ext
Unexecuted instantiation: timer.c:fr_dict_enum_ext
Unexecuted instantiation: file.c:fr_dict_enum_ext
Unexecuted instantiation: inet.c:fr_dict_enum_ext
Unexecuted instantiation: log.c:fr_dict_enum_ext
Unexecuted instantiation: packet.c:fr_dict_enum_ext
Unexecuted instantiation: pair.c:fr_dict_enum_ext
Unexecuted instantiation: pair_inline.c:fr_dict_enum_ext
Unexecuted instantiation: pair_legacy.c:fr_dict_enum_ext
Unexecuted instantiation: pair_print.c:fr_dict_enum_ext
Unexecuted instantiation: pair_tokenize.c:fr_dict_enum_ext
Unexecuted instantiation: print.c:fr_dict_enum_ext
Unexecuted instantiation: proto.c:fr_dict_enum_ext
Unexecuted instantiation: regex.c:fr_dict_enum_ext
Unexecuted instantiation: socket.c:fr_dict_enum_ext
Unexecuted instantiation: stats.c:fr_dict_enum_ext
struct.c:fr_dict_enum_ext
Line
Count
Source
217
6.13k
{
218
6.13k
  if (!enumv->ext[ext]) return NULL;
219
220
6.09k
  return fr_ext_ptr(enumv, enumv->ext[ext], fr_dict_enum_ext_def.info[ext].has_hdr);
221
6.13k
}
Unexecuted instantiation: trie.c:fr_dict_enum_ext
Unexecuted instantiation: types.c:fr_dict_enum_ext
Unexecuted instantiation: uri.c:fr_dict_enum_ext
Unexecuted instantiation: value.c:fr_dict_enum_ext
Unexecuted instantiation: fuzzer.c:fr_dict_enum_ext
Unexecuted instantiation: base.c:fr_dict_enum_ext
Unexecuted instantiation: raw.c:fr_dict_enum_ext
Unexecuted instantiation: udp.c:fr_dict_enum_ext
Unexecuted instantiation: json.c:fr_dict_enum_ext
Unexecuted instantiation: jpath.c:fr_dict_enum_ext
Unexecuted instantiation: cache.c:fr_dict_enum_ext
Unexecuted instantiation: cert.c:fr_dict_enum_ext
Unexecuted instantiation: conf.c:fr_dict_enum_ext
Unexecuted instantiation: ctx.c:fr_dict_enum_ext
Unexecuted instantiation: engine.c:fr_dict_enum_ext
Unexecuted instantiation: pairs.c:fr_dict_enum_ext
Unexecuted instantiation: session.c:fr_dict_enum_ext
Unexecuted instantiation: strerror.c:fr_dict_enum_ext
Unexecuted instantiation: utils.c:fr_dict_enum_ext
Unexecuted instantiation: verify.c:fr_dict_enum_ext
Unexecuted instantiation: version.c:fr_dict_enum_ext
Unexecuted instantiation: virtual_server.c:fr_dict_enum_ext
Unexecuted instantiation: list.c:fr_dict_enum_ext
Unexecuted instantiation: tcp.c:fr_dict_enum_ext
Unexecuted instantiation: abinary.c:fr_dict_enum_ext
Unexecuted instantiation: auth.c:fr_dict_enum_ext
Unexecuted instantiation: cf_file.c:fr_dict_enum_ext
Unexecuted instantiation: cf_parse.c:fr_dict_enum_ext
Unexecuted instantiation: cf_util.c:fr_dict_enum_ext
Unexecuted instantiation: client.c:fr_dict_enum_ext
Unexecuted instantiation: command.c:fr_dict_enum_ext
Unexecuted instantiation: connection.c:fr_dict_enum_ext
Unexecuted instantiation: dependency.c:fr_dict_enum_ext
Unexecuted instantiation: dl_module.c:fr_dict_enum_ext
Unexecuted instantiation: exec.c:fr_dict_enum_ext
Unexecuted instantiation: exec_legacy.c:fr_dict_enum_ext
Unexecuted instantiation: exfile.c:fr_dict_enum_ext
Unexecuted instantiation: global_lib.c:fr_dict_enum_ext
Unexecuted instantiation: main_config.c:fr_dict_enum_ext
Unexecuted instantiation: main_loop.c:fr_dict_enum_ext
Unexecuted instantiation: map.c:fr_dict_enum_ext
Unexecuted instantiation: map_proc.c:fr_dict_enum_ext
Unexecuted instantiation: module.c:fr_dict_enum_ext
Unexecuted instantiation: module_method.c:fr_dict_enum_ext
Unexecuted instantiation: module_rlm.c:fr_dict_enum_ext
Unexecuted instantiation: paircmp.c:fr_dict_enum_ext
Unexecuted instantiation: pairmove.c:fr_dict_enum_ext
Unexecuted instantiation: password.c:fr_dict_enum_ext
Unexecuted instantiation: pool.c:fr_dict_enum_ext
Unexecuted instantiation: request.c:fr_dict_enum_ext
Unexecuted instantiation: request_data.c:fr_dict_enum_ext
Unexecuted instantiation: snmp.c:fr_dict_enum_ext
Unexecuted instantiation: state.c:fr_dict_enum_ext
Unexecuted instantiation: tmpl_dcursor.c:fr_dict_enum_ext
Unexecuted instantiation: tmpl_eval.c:fr_dict_enum_ext
Unexecuted instantiation: tmpl_tokenize.c:fr_dict_enum_ext
Unexecuted instantiation: trigger.c:fr_dict_enum_ext
Unexecuted instantiation: trunk.c:fr_dict_enum_ext
Unexecuted instantiation: users_file.c:fr_dict_enum_ext
Unexecuted instantiation: util.c:fr_dict_enum_ext
Unexecuted instantiation: virtual_servers.c:fr_dict_enum_ext
Unexecuted instantiation: call.c:fr_dict_enum_ext
Unexecuted instantiation: call_env.c:fr_dict_enum_ext
Unexecuted instantiation: caller.c:fr_dict_enum_ext
Unexecuted instantiation: catch.c:fr_dict_enum_ext
Unexecuted instantiation: child_request.c:fr_dict_enum_ext
Unexecuted instantiation: compile.c:fr_dict_enum_ext
Unexecuted instantiation: condition.c:fr_dict_enum_ext
Unexecuted instantiation: detach.c:fr_dict_enum_ext
Unexecuted instantiation: finally.c:fr_dict_enum_ext
Unexecuted instantiation: foreach.c:fr_dict_enum_ext
Unexecuted instantiation: function.c:fr_dict_enum_ext
Unexecuted instantiation: group.c:fr_dict_enum_ext
Unexecuted instantiation: interpret.c:fr_dict_enum_ext
Unexecuted instantiation: interpret_synchronous.c:fr_dict_enum_ext
Unexecuted instantiation: io.c:fr_dict_enum_ext
Unexecuted instantiation: limit.c:fr_dict_enum_ext
Unexecuted instantiation: load_balance.c:fr_dict_enum_ext
Unexecuted instantiation: map_builtin.c:fr_dict_enum_ext
Unexecuted instantiation: parallel.c:fr_dict_enum_ext
Unexecuted instantiation: return.c:fr_dict_enum_ext
Unexecuted instantiation: subrequest.c:fr_dict_enum_ext
Unexecuted instantiation: switch.c:fr_dict_enum_ext
Unexecuted instantiation: timeout.c:fr_dict_enum_ext
Unexecuted instantiation: tmpl.c:fr_dict_enum_ext
Unexecuted instantiation: try.c:fr_dict_enum_ext
Unexecuted instantiation: transaction.c:fr_dict_enum_ext
Unexecuted instantiation: xlat.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_alloc.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_builtin.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_eval.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_expr.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_func.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_inst.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_pair.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_purify.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_redundant.c:fr_dict_enum_ext
Unexecuted instantiation: xlat_tokenize.c:fr_dict_enum_ext
Unexecuted instantiation: app_io.c:fr_dict_enum_ext
Unexecuted instantiation: channel.c:fr_dict_enum_ext
Unexecuted instantiation: coord.c:fr_dict_enum_ext
Unexecuted instantiation: coord_pair.c:fr_dict_enum_ext
Unexecuted instantiation: master.c:fr_dict_enum_ext
Unexecuted instantiation: network.c:fr_dict_enum_ext
Unexecuted instantiation: schedule.c:fr_dict_enum_ext
Unexecuted instantiation: thread.c:fr_dict_enum_ext
Unexecuted instantiation: worker.c:fr_dict_enum_ext
Unexecuted instantiation: vmps.c:fr_dict_enum_ext
222
223
/** Return the attribute reference associated with an enum
224
 *
225
 * @param[in] enumv to return the reference for.
226
 * @return
227
 *  - NULL if no reference available.
228
 *  - A pointer to the attribute being referenced.
229
 */
230
static inline fr_dict_attr_t const *fr_dict_enum_attr_ref(fr_dict_enum_value_t const *enumv)
231
6.13k
{
232
6.13k
  fr_dict_enum_ext_attr_ref_t const *ref;
233
234
6.13k
  ref = fr_dict_enum_ext(enumv, FR_DICT_ENUM_EXT_ATTR_REF);
235
6.13k
  if (!ref) return NULL;
236
237
6.09k
  return ref->da;
238
6.13k
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_util.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_cbor.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_der.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_dns.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_bfd.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_radius.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_tftp.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer_vmps.c:fr_dict_enum_attr_ref
Unexecuted instantiation: base32.c:fr_dict_enum_attr_ref
Unexecuted instantiation: base64.c:fr_dict_enum_attr_ref
Unexecuted instantiation: calc.c:fr_dict_enum_attr_ref
Unexecuted instantiation: cbor.c:fr_dict_enum_attr_ref
Unexecuted instantiation: decode.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dict_ext.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dict_fixup.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dict_print.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dict_test.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dict_tokenize.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dict_unknown.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dict_util.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dict_validate.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dl.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dns.c:fr_dict_enum_attr_ref
Unexecuted instantiation: edit.c:fr_dict_enum_attr_ref
Unexecuted instantiation: encode.c:fr_dict_enum_attr_ref
Unexecuted instantiation: timer.c:fr_dict_enum_attr_ref
Unexecuted instantiation: file.c:fr_dict_enum_attr_ref
Unexecuted instantiation: inet.c:fr_dict_enum_attr_ref
Unexecuted instantiation: log.c:fr_dict_enum_attr_ref
Unexecuted instantiation: packet.c:fr_dict_enum_attr_ref
Unexecuted instantiation: pair.c:fr_dict_enum_attr_ref
Unexecuted instantiation: pair_inline.c:fr_dict_enum_attr_ref
Unexecuted instantiation: pair_legacy.c:fr_dict_enum_attr_ref
Unexecuted instantiation: pair_print.c:fr_dict_enum_attr_ref
Unexecuted instantiation: pair_tokenize.c:fr_dict_enum_attr_ref
Unexecuted instantiation: print.c:fr_dict_enum_attr_ref
Unexecuted instantiation: proto.c:fr_dict_enum_attr_ref
Unexecuted instantiation: regex.c:fr_dict_enum_attr_ref
Unexecuted instantiation: socket.c:fr_dict_enum_attr_ref
Unexecuted instantiation: stats.c:fr_dict_enum_attr_ref
struct.c:fr_dict_enum_attr_ref
Line
Count
Source
231
6.13k
{
232
6.13k
  fr_dict_enum_ext_attr_ref_t const *ref;
233
234
6.13k
  ref = fr_dict_enum_ext(enumv, FR_DICT_ENUM_EXT_ATTR_REF);
235
6.13k
  if (!ref) return NULL;
236
237
6.09k
  return ref->da;
238
6.13k
}
Unexecuted instantiation: trie.c:fr_dict_enum_attr_ref
Unexecuted instantiation: types.c:fr_dict_enum_attr_ref
Unexecuted instantiation: uri.c:fr_dict_enum_attr_ref
Unexecuted instantiation: value.c:fr_dict_enum_attr_ref
Unexecuted instantiation: fuzzer.c:fr_dict_enum_attr_ref
Unexecuted instantiation: base.c:fr_dict_enum_attr_ref
Unexecuted instantiation: raw.c:fr_dict_enum_attr_ref
Unexecuted instantiation: udp.c:fr_dict_enum_attr_ref
Unexecuted instantiation: json.c:fr_dict_enum_attr_ref
Unexecuted instantiation: jpath.c:fr_dict_enum_attr_ref
Unexecuted instantiation: cache.c:fr_dict_enum_attr_ref
Unexecuted instantiation: cert.c:fr_dict_enum_attr_ref
Unexecuted instantiation: conf.c:fr_dict_enum_attr_ref
Unexecuted instantiation: ctx.c:fr_dict_enum_attr_ref
Unexecuted instantiation: engine.c:fr_dict_enum_attr_ref
Unexecuted instantiation: pairs.c:fr_dict_enum_attr_ref
Unexecuted instantiation: session.c:fr_dict_enum_attr_ref
Unexecuted instantiation: strerror.c:fr_dict_enum_attr_ref
Unexecuted instantiation: utils.c:fr_dict_enum_attr_ref
Unexecuted instantiation: verify.c:fr_dict_enum_attr_ref
Unexecuted instantiation: version.c:fr_dict_enum_attr_ref
Unexecuted instantiation: virtual_server.c:fr_dict_enum_attr_ref
Unexecuted instantiation: list.c:fr_dict_enum_attr_ref
Unexecuted instantiation: tcp.c:fr_dict_enum_attr_ref
Unexecuted instantiation: abinary.c:fr_dict_enum_attr_ref
Unexecuted instantiation: auth.c:fr_dict_enum_attr_ref
Unexecuted instantiation: cf_file.c:fr_dict_enum_attr_ref
Unexecuted instantiation: cf_parse.c:fr_dict_enum_attr_ref
Unexecuted instantiation: cf_util.c:fr_dict_enum_attr_ref
Unexecuted instantiation: client.c:fr_dict_enum_attr_ref
Unexecuted instantiation: command.c:fr_dict_enum_attr_ref
Unexecuted instantiation: connection.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dependency.c:fr_dict_enum_attr_ref
Unexecuted instantiation: dl_module.c:fr_dict_enum_attr_ref
Unexecuted instantiation: exec.c:fr_dict_enum_attr_ref
Unexecuted instantiation: exec_legacy.c:fr_dict_enum_attr_ref
Unexecuted instantiation: exfile.c:fr_dict_enum_attr_ref
Unexecuted instantiation: global_lib.c:fr_dict_enum_attr_ref
Unexecuted instantiation: main_config.c:fr_dict_enum_attr_ref
Unexecuted instantiation: main_loop.c:fr_dict_enum_attr_ref
Unexecuted instantiation: map.c:fr_dict_enum_attr_ref
Unexecuted instantiation: map_proc.c:fr_dict_enum_attr_ref
Unexecuted instantiation: module.c:fr_dict_enum_attr_ref
Unexecuted instantiation: module_method.c:fr_dict_enum_attr_ref
Unexecuted instantiation: module_rlm.c:fr_dict_enum_attr_ref
Unexecuted instantiation: paircmp.c:fr_dict_enum_attr_ref
Unexecuted instantiation: pairmove.c:fr_dict_enum_attr_ref
Unexecuted instantiation: password.c:fr_dict_enum_attr_ref
Unexecuted instantiation: pool.c:fr_dict_enum_attr_ref
Unexecuted instantiation: request.c:fr_dict_enum_attr_ref
Unexecuted instantiation: request_data.c:fr_dict_enum_attr_ref
Unexecuted instantiation: snmp.c:fr_dict_enum_attr_ref
Unexecuted instantiation: state.c:fr_dict_enum_attr_ref
Unexecuted instantiation: tmpl_dcursor.c:fr_dict_enum_attr_ref
Unexecuted instantiation: tmpl_eval.c:fr_dict_enum_attr_ref
Unexecuted instantiation: tmpl_tokenize.c:fr_dict_enum_attr_ref
Unexecuted instantiation: trigger.c:fr_dict_enum_attr_ref
Unexecuted instantiation: trunk.c:fr_dict_enum_attr_ref
Unexecuted instantiation: users_file.c:fr_dict_enum_attr_ref
Unexecuted instantiation: util.c:fr_dict_enum_attr_ref
Unexecuted instantiation: virtual_servers.c:fr_dict_enum_attr_ref
Unexecuted instantiation: call.c:fr_dict_enum_attr_ref
Unexecuted instantiation: call_env.c:fr_dict_enum_attr_ref
Unexecuted instantiation: caller.c:fr_dict_enum_attr_ref
Unexecuted instantiation: catch.c:fr_dict_enum_attr_ref
Unexecuted instantiation: child_request.c:fr_dict_enum_attr_ref
Unexecuted instantiation: compile.c:fr_dict_enum_attr_ref
Unexecuted instantiation: condition.c:fr_dict_enum_attr_ref
Unexecuted instantiation: detach.c:fr_dict_enum_attr_ref
Unexecuted instantiation: finally.c:fr_dict_enum_attr_ref
Unexecuted instantiation: foreach.c:fr_dict_enum_attr_ref
Unexecuted instantiation: function.c:fr_dict_enum_attr_ref
Unexecuted instantiation: group.c:fr_dict_enum_attr_ref
Unexecuted instantiation: interpret.c:fr_dict_enum_attr_ref
Unexecuted instantiation: interpret_synchronous.c:fr_dict_enum_attr_ref
Unexecuted instantiation: io.c:fr_dict_enum_attr_ref
Unexecuted instantiation: limit.c:fr_dict_enum_attr_ref
Unexecuted instantiation: load_balance.c:fr_dict_enum_attr_ref
Unexecuted instantiation: map_builtin.c:fr_dict_enum_attr_ref
Unexecuted instantiation: parallel.c:fr_dict_enum_attr_ref
Unexecuted instantiation: return.c:fr_dict_enum_attr_ref
Unexecuted instantiation: subrequest.c:fr_dict_enum_attr_ref
Unexecuted instantiation: switch.c:fr_dict_enum_attr_ref
Unexecuted instantiation: timeout.c:fr_dict_enum_attr_ref
Unexecuted instantiation: tmpl.c:fr_dict_enum_attr_ref
Unexecuted instantiation: try.c:fr_dict_enum_attr_ref
Unexecuted instantiation: transaction.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_alloc.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_builtin.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_eval.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_expr.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_func.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_inst.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_pair.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_purify.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_redundant.c:fr_dict_enum_attr_ref
Unexecuted instantiation: xlat_tokenize.c:fr_dict_enum_attr_ref
Unexecuted instantiation: app_io.c:fr_dict_enum_attr_ref
Unexecuted instantiation: channel.c:fr_dict_enum_attr_ref
Unexecuted instantiation: coord.c:fr_dict_enum_attr_ref
Unexecuted instantiation: coord_pair.c:fr_dict_enum_attr_ref
Unexecuted instantiation: master.c:fr_dict_enum_attr_ref
Unexecuted instantiation: network.c:fr_dict_enum_attr_ref
Unexecuted instantiation: schedule.c:fr_dict_enum_attr_ref
Unexecuted instantiation: thread.c:fr_dict_enum_attr_ref
Unexecuted instantiation: worker.c:fr_dict_enum_attr_ref
Unexecuted instantiation: vmps.c:fr_dict_enum_attr_ref
239
240
241
/** @} */
242
243
void fr_dict_attr_ext_debug(fr_dict_attr_t const *da);
244
245
#ifdef __cplusplus
246
}
247
#endif