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