/src/freeradius-server/src/freeradius-devel/util/dict.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.h |
21 | | * |
22 | | * @copyright 2015 The FreeRADIUS server project |
23 | | */ |
24 | | |
25 | | RCSIDH(dict_h, "$Id: d361760983efbeb17aed8d636fa0df6683bdc002 $") |
26 | | |
27 | | #ifdef __cplusplus |
28 | | extern "C" { |
29 | | #endif |
30 | | |
31 | | #include <freeradius-devel/build.h> |
32 | | #include <freeradius-devel/missing.h> |
33 | | #include <freeradius-devel/util/dl.h> |
34 | | #include <freeradius-devel/util/ext.h> |
35 | | #include <freeradius-devel/util/hash.h> |
36 | | #include <freeradius-devel/util/rb.h> |
37 | | #include <freeradius-devel/util/sbuff.h> |
38 | | #include <freeradius-devel/util/table.h> |
39 | | #include <freeradius-devel/util/talloc.h> |
40 | | #include <freeradius-devel/util/types.h> |
41 | | |
42 | | |
43 | | /* |
44 | | * Avoid circular type references. |
45 | | */ |
46 | | typedef struct dict_attr_s fr_dict_attr_t; |
47 | | typedef struct fr_dict_s fr_dict_t; |
48 | | |
49 | | typedef struct value_box_s fr_value_box_t; |
50 | | |
51 | | /* |
52 | | * Allow public and private versions of the same structures |
53 | | */ |
54 | | #ifdef _CONST |
55 | | # error _CONST can only be defined in the local header |
56 | | #endif |
57 | | #ifndef _DICT_PRIVATE |
58 | | # define _CONST const |
59 | | #else |
60 | | # define _CONST |
61 | | #endif |
62 | | |
63 | | #ifdef WITH_VERIFY_PTR |
64 | 16.6M | # define DA_VERIFY(_x) fr_dict_attr_verify(__FILE__, __LINE__, _x) |
65 | | #else |
66 | | # define DA_VERIFY(_x) fr_cond_assert(_x) |
67 | | #endif |
68 | | |
69 | | typedef struct dict_tokenize_ctx_s dict_tokenize_ctx_t; |
70 | | typedef struct fr_dict_autoload_talloc_s fr_dict_autoload_talloc_t; |
71 | | |
72 | | /** Values of the encryption flags |
73 | | */ |
74 | | typedef struct { |
75 | | unsigned int is_root : 1; //!< Is root of a dictionary. |
76 | | |
77 | | unsigned int is_unknown : 1; //!< This dictionary attribute is ephemeral |
78 | | ///< and not part of the main dictionary. |
79 | | |
80 | | unsigned int is_raw : 1; //!< This dictionary attribute was constructed |
81 | | ///< from a known attribute to allow the user |
82 | | ///< to assign octets values directly. |
83 | | ///< See .is_unknown to determine if it is |
84 | | ///< ephemeral. |
85 | | unsigned int is_alias : 1; //!< This isn't a real attribute, it's a reference to |
86 | | ///< to one. |
87 | | unsigned int has_alias : 1; //!< this attribute has an alias. |
88 | | unsigned int internal : 1; //!< Internal attribute, should not be received |
89 | | ///< in protocol packets, should not be encoded. |
90 | | unsigned int array : 1; //!< Pack multiples into 1 attr. |
91 | | |
92 | | unsigned int is_known_width : 1; //!< is treated as if it has a known width for structs |
93 | | |
94 | | unsigned int has_value : 1; //!< Has a value. |
95 | | |
96 | | unsigned int is_unsigned : 1; //!< hackity hack for dates and time deltas |
97 | | |
98 | | unsigned int counter : 1; //!< integer attribute is actually an impulse / counter |
99 | | |
100 | | unsigned int name_only : 1; //!< this attribute should always be referred to by name. |
101 | | ///< A number will be allocated, but the allocation scheme |
102 | | ///< will depend on the parent, and definition type, and |
103 | | ///< may not be stable in all instances. |
104 | | |
105 | | unsigned int secret : 1; //!< this attribute should be omitted in debug mode |
106 | | |
107 | | unsigned int unsafe : 1; //!< e.g. Cleartext-Password |
108 | | |
109 | | unsigned int is_ref_target : 1; //!< is the target of a ref, and cannot be moved. |
110 | | |
111 | | /* |
112 | | * @todo - if we want to clean these fields up, make |
113 | | * "subtype" and "type_size" both 4-bit bitfields. That |
114 | | * gives us an extra 8 bits for adding new flags, and we |
115 | | * can likely get rid of "extra", in order to save one |
116 | | * more bit. |
117 | | */ |
118 | | unsigned int extra : 1; //!< really "subtype is used by dict, not by protocol" |
119 | | |
120 | | unsigned int local : 1; //!< is a local variable |
121 | | |
122 | | unsigned int allow_flat : 1; //!< only for FR_TYPE_GROUP, can contain "flat" lists. |
123 | | |
124 | | unsigned int has_fixup : 1; //! needs a fixup during dictionary parsing |
125 | | |
126 | | /* |
127 | | * main: extra is set, then this field is is key, bit, or a uint16 length field. |
128 | | * radius: is one of 9 options for flags |
129 | | * dhcp v4/v6: DNS label, or partial DNS label |
130 | | */ |
131 | | uint8_t subtype; //!< protocol-specific values, OR key fields |
132 | | |
133 | | /* |
134 | | * TLVs: Number of bytes in the "type" field for TLVs (typically 1, 2, or 4) |
135 | | * |
136 | | * da_is_bit_field(da): offset in the byte where this bit |
137 | | * field ends. This is only used as a caching mechanism |
138 | | * during parsing of the dictionaries. |
139 | | * |
140 | | * time/time_delta: fr_time_res_t, which has 4 possible values. |
141 | | * |
142 | | * otherwise: unused. |
143 | | */ |
144 | | uint8_t type_size; //!< Type size for TLVs |
145 | | |
146 | | /* |
147 | | * da_is_bit_field(da): Length of the field in bits. |
148 | | * |
149 | | * TLV: Number of bytes in the "length" field |
150 | | * |
151 | | * otherwise: Length in bytes |
152 | | */ |
153 | | uint16_t length; //!< length of the attribute |
154 | | } fr_dict_attr_flags_t; |
155 | | |
156 | 48.8k | #define flag_time_res type_size |
157 | 2.26k | #define flag_byte_offset type_size |
158 | | |
159 | | /** subtype values for the dictionary when extra=1 |
160 | | * |
161 | | */ |
162 | | enum { |
163 | | FLAG_EXTRA_NONE = 0, //!< no extra meaning, should be invalid |
164 | | FLAG_KEY_FIELD, //!< this is a key field for a subsequent struct |
165 | | FLAG_BIT_FIELD, //!< bit field inside of a struct |
166 | | FLAG_LENGTH_UINT8, //!< string / octets type is prefixed by uint8 of length |
167 | | FLAG_LENGTH_UINT16, //!< string / octets type is prefixed by uint16 of length |
168 | | }; |
169 | | |
170 | 376k | #define fr_dict_attr_is_key_field(_da) ((_da)->flags.extra && ((_da)->flags.subtype == FLAG_KEY_FIELD)) |
171 | 417k | #define da_is_bit_field(_da) ((_da)->flags.extra && ((_da)->flags.subtype == FLAG_BIT_FIELD)) |
172 | 116k | #define da_is_length_field(_da) ((_da)->flags.extra && (((_da)->flags.subtype == FLAG_LENGTH_UINT8) || ((_da)->flags.subtype == FLAG_LENGTH_UINT16))) |
173 | 2.51M | #define da_is_length_field8(_da) ((_da)->flags.extra && ((_da)->flags.subtype == FLAG_LENGTH_UINT8)) |
174 | 2.50M | #define da_is_length_field16(_da) ((_da)->flags.extra && ((_da)->flags.subtype == FLAG_LENGTH_UINT16)) |
175 | 23.3k | #define da_length_offset(_da) ((_da)->flags.type_size) |
176 | | |
177 | | /** Extension identifier |
178 | | * |
179 | | * @note New extension structures should also be added to the to the appropriate table in dict_ext.c |
180 | | */ |
181 | | typedef enum : uint8_t { |
182 | | FR_DICT_ATTR_EXT_NAME = 0, //!< Name of the attribute. |
183 | | FR_DICT_ATTR_EXT_CHILDREN, //!< Attribute has children. |
184 | | FR_DICT_ATTR_EXT_REF, //!< Attribute references another |
185 | | ///< attribute and/or dictionary. |
186 | | FR_DICT_ATTR_EXT_KEY, //!< UNION attribute references a key |
187 | | FR_DICT_ATTR_EXT_VENDOR, //!< Cached vendor pointer. |
188 | | FR_DICT_ATTR_EXT_ENUMV, //!< Enumeration values. |
189 | | FR_DICT_ATTR_EXT_NAMESPACE, //!< Attribute has its own namespace. |
190 | | FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC, //!< Protocol specific extensions |
191 | | FR_DICT_ATTR_EXT_MAX |
192 | | } fr_dict_attr_ext_t; |
193 | | |
194 | | /** Dictionary attribute |
195 | | */ |
196 | | struct dict_attr_s { |
197 | | /** @name Tree topology |
198 | | * |
199 | | * How the attribute connects to the rest of the dictionary. |
200 | | * @{ |
201 | | */ |
202 | | fr_dict_t _CONST* _CONST dict; //!< Dict attribute belongs to. |
203 | | fr_dict_attr_t const *parent; //!< Immediate parent of this attribute. |
204 | | fr_dict_attr_t const *next; //!< Next child in bin. |
205 | | /** @} */ |
206 | | |
207 | | /** @name Identity |
208 | | * |
209 | | * What the attribute is. |
210 | | * @{ |
211 | | */ |
212 | | char const *name; //!< Attribute name. |
213 | | unsigned int attr; //!< Attribute number. |
214 | | fr_type_t type; //!< Value type. |
215 | | uint8_t name_len; //!< Length of the name. |
216 | | uint8_t depth; //!< Depth of nesting for this attribute. |
217 | | /** @} */ |
218 | | |
219 | | /** @name Definition state |
220 | | * @{ |
221 | | */ |
222 | | struct { |
223 | | bool attr_set : 1; //!< Attribute number has been set. |
224 | | //!< We need the full range of values 0-UINT32_MAX |
225 | | ///< so we can't use any attr values to indicate |
226 | | ///< "unsetness". |
227 | | |
228 | | bool finalised : 1; //!< Attribute definition is complete and modifications |
229 | | ///< that would change the address of the memory chunk |
230 | | ///< of the attribute are no longer permitted. |
231 | | } state; |
232 | | /** @} */ |
233 | | |
234 | | /** @name Behaviour |
235 | | * @{ |
236 | | */ |
237 | | fr_dict_attr_flags_t flags; //!< Flags. |
238 | | /** @} */ |
239 | | |
240 | | /** @name Extensions |
241 | | * @{ |
242 | | */ |
243 | | uint8_t ext[FR_DICT_ATTR_EXT_MAX]; //!< Extensions to the dictionary attribute. |
244 | | /** @} */ |
245 | | |
246 | | /** @name Location |
247 | | * |
248 | | * Where the definition came from. |
249 | | * @{ |
250 | | */ |
251 | | uint16_t file; //!< Id of the file where the attribute was defined. |
252 | | ///< Resolve with fr_dict_attr_filename(). |
253 | | uint16_t line; //!< Line number where the attribute was defined. |
254 | | /** @} */ |
255 | | } CC_HINT(aligned(FR_EXT_ALIGNMENT)); |
256 | | |
257 | | /** Extension identifier |
258 | | * |
259 | | * @note New extension structures should also be added to the appropriate table in dict_ext.c |
260 | | */ |
261 | | typedef enum : uint8_t { |
262 | | FR_DICT_ENUM_EXT_ATTR_REF = 0, //!< Reference to a child attribute associated with this key value |
263 | | FR_DICT_ENUM_EXT_MAX |
264 | | } fr_dict_enum_ext_t; |
265 | | |
266 | | /** Enum extension - Sub-struct or union pointer |
267 | | * |
268 | | */ |
269 | | typedef struct { |
270 | | fr_dict_attr_t const *da; //!< the child structure referenced by this value of key |
271 | | } fr_dict_enum_ext_attr_ref_t; |
272 | | |
273 | | /** Value of an enumerated attribute |
274 | | * |
275 | | * Maps one of more string values to integers and vice versa. |
276 | | */ |
277 | | typedef struct { |
278 | | char const *name; //!< Enum name. |
279 | | size_t name_len; //!< Allows for efficient name lookups when operating |
280 | | ///< on partial buffers. |
281 | | fr_value_box_t const *value; //!< Enum value (what name maps to). |
282 | | |
283 | | uint8_t ext[FR_DICT_ENUM_EXT_MAX]; //!< Extensions to the dictionary attribute. |
284 | | } fr_dict_enum_value_t CC_HINT(aligned(FR_EXT_ALIGNMENT)); |
285 | | |
286 | | /** Private enterprise |
287 | | * |
288 | | * Represents an IANA private enterprise allocation. |
289 | | * |
290 | | * The width of the private enterprise number must be the same for all protocols |
291 | | * so we can represent a vendor with a single struct. |
292 | | */ |
293 | | typedef struct { |
294 | | uint32_t pen; //!< Private enterprise number. |
295 | | bool continuation; //!< we only have one flag for now, for WiMAX |
296 | | size_t type; //!< Length of type data |
297 | | size_t length; //!< Length of length data |
298 | | char const *name; //!< Vendor name. |
299 | | } fr_dict_vendor_t; |
300 | | |
301 | | /** Specifies a value which must be present for the module to function |
302 | | * |
303 | | */ |
304 | | typedef struct { |
305 | | fr_value_box_t const **out; //!< Enumeration value. |
306 | | fr_dict_attr_t const **attr; //!< The protocol dictionary the attribute should |
307 | | ///< be resolved in. ** so it's a compile time |
308 | | ///< constant. |
309 | | char const *name; //!< of the attribute. |
310 | | } fr_dict_enum_autoload_t; |
311 | | |
312 | | /** Specifies an attribute which must be present for the module to function |
313 | | * |
314 | | */ |
315 | | typedef struct { |
316 | | fr_dict_attr_t const **out; //!< Where to write a pointer to the resolved |
317 | | //!< #fr_dict_attr_t. |
318 | | fr_dict_t const **dict; //!< The protocol dictionary the attribute should |
319 | | ///< be resolved in. ** so it's a compile time |
320 | | ///< constant. |
321 | | char const *name; //!< of the attribute. |
322 | | fr_type_t type; //!< of the attribute. Mismatch is a fatal error. |
323 | | } fr_dict_attr_autoload_t; |
324 | | |
325 | | /** Specifies a dictionary which must be loaded/loadable for the module to function |
326 | | * |
327 | | */ |
328 | | typedef struct { |
329 | | fr_dict_t const **out; //!< Where to write a pointer to the loaded/resolved |
330 | | //!< #fr_dict_t. |
331 | | char const *base_dir; //!< Directory structure beneath share. |
332 | | char const *proto; //!< The protocol dictionary name. |
333 | | } fr_dict_autoload_t; |
334 | | |
335 | 0 | #define DICT_AUTOLOAD_TERMINATOR { .out = NULL } |
336 | | |
337 | | |
338 | | /** Errors returned by attribute lookup functions |
339 | | * |
340 | | */ |
341 | | typedef enum : int8_t { |
342 | | FR_DICT_ATTR_OK = 0, //!< No error. |
343 | | FR_DICT_ATTR_NOTFOUND = -1, //!< Attribute couldn't be found. |
344 | | FR_DICT_ATTR_PROTOCOL_NOTFOUND = -2, //!< Protocol couldn't be found. |
345 | | FR_DICT_ATTR_PARSE_ERROR = -3, //!< Attribute string couldn't be parsed |
346 | | FR_DICT_ATTR_INTERNAL_ERROR = -4, //!< Internal error occurred. |
347 | | FR_DICT_ATTR_OOM = -5, //!< Memory allocation error. |
348 | | FR_DICT_ATTR_NOT_DESCENDENT = -6, //!< Attribute is not a descendent of the parent |
349 | | ///< attribute. |
350 | | FR_DICT_ATTR_NOT_ANCESTOR = -7, //!< Attribute is not an ancestor of the child |
351 | | ///< attribute. |
352 | | FR_DICT_ATTR_NO_CHILDREN = -8, //!< Child lookup in attribute with no children. |
353 | | FR_DICT_ATTR_EINVAL = -9 //!< Invalid arguments. |
354 | | |
355 | | } fr_dict_attr_err_t; |
356 | | |
357 | | typedef bool (*fr_dict_attr_valid_func_t)(fr_dict_attr_t *da); |
358 | | typedef bool (*fr_dict_attr_type_parse_t)(fr_type_t *type, fr_dict_attr_t **da_p, char const *name); |
359 | | |
360 | | /* |
361 | | * Forward declarations to avoid circular references. |
362 | | */ |
363 | | typedef struct pair_list_s fr_pair_list_t; |
364 | | typedef struct fr_dbuff_s fr_dbuff_t; |
365 | | |
366 | | /** A generic interface for decoding packets to fr_pair_ts |
367 | | * |
368 | | * A decoding function should decode a single top level packet from wire format. |
369 | | * |
370 | | * Note that unlike #fr_tp_proto_decode_t, this function is NOT passed an encode_ctx. That is because when we |
371 | | * do cross-protocol encoding, the "outer" protocol has no information it can share with the "inner" protocol. |
372 | | * |
373 | | * @param[in] ctx to allocate new pairs in. |
374 | | * @param[in] vps where new VPs will be added |
375 | | * @param[in] data to decode. |
376 | | * @param[in] data_len The length of the incoming data. |
377 | | * @return |
378 | | * - <= 0 on error. May be the offset (as a negative value) where the error occurred. |
379 | | * - > 0 on success. How many bytes were decoded. |
380 | | */ |
381 | | typedef ssize_t (*fr_dict_attr_decode_func_t)(TALLOC_CTX *ctx, fr_pair_list_t *vps, |
382 | | uint8_t const *data, size_t data_len); |
383 | | |
384 | | /** A generic interface for encoding fr_pair_ts to packets |
385 | | * |
386 | | * An encoding function should encode multiple VPs to a wire format packet |
387 | | * |
388 | | * Note that unlike #fr_tp_proto_encode_t, this function is NOT passed an encode_ctx. That is because when we |
389 | | * do cross-protocol encoding, the "outer" protocol has no information it can share with the "inner" protocol. |
390 | | * |
391 | | * @param[in] vps vps to encode |
392 | | * @param[in] dbuff buffer where data can be written |
393 | | * @return |
394 | | * - <= 0 on error. May be the offset (as a negative value) where the error occurred. |
395 | | * - > 0 on success. How many bytes were encoded |
396 | | */ |
397 | | typedef ssize_t(*fr_dict_attr_encode_func_t)(fr_dbuff_t *dbuff, fr_pair_list_t const *vps); |
398 | | |
399 | | /** Init / free callbacks |
400 | | * |
401 | | * Only for "autoref" usage. |
402 | | */ |
403 | | typedef int (*fr_dict_protocol_init_t)(void); |
404 | | typedef void (*fr_dict_protocol_free_t)(void); |
405 | | |
406 | | typedef struct fr_dict_flag_parser_rule_s fr_dict_flag_parser_rule_t; |
407 | | |
408 | | /** Custom protocol-specific flag parsing function |
409 | | * |
410 | | * @note This function should be used to implement table based flag parsing. |
411 | | * |
412 | | * @param[in] da_p we're currently populating |
413 | | * @param[in] value flag value to parse. |
414 | | * @param[in] rule How to parse the flag. |
415 | | */ |
416 | | typedef int (*fr_dict_flag_parse_func_t)(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rule); |
417 | | |
418 | | struct fr_dict_flag_parser_rule_s { |
419 | | fr_dict_flag_parse_func_t func; //!< Custom parsing function to convert a flag value string to a C type value. |
420 | | void *uctx; //!< Use context to pass to the custom parsing function. |
421 | | bool needs_value; //!< This parsing flag must have a value. Else we error. |
422 | | }; |
423 | | |
424 | | /** Copy custom flags from one attribute to another |
425 | | * |
426 | | * @param[out] da_to attribute to copy to. Use for the talloc_ctx for any heap allocated flag values. |
427 | | * @param[out] flags_to protocol specific flags struct to copy to. |
428 | | * @param[in] flags_from protocol specific flags struct to copy from. |
429 | | * @return |
430 | | * - 0 on success. |
431 | | * - -1 on error. |
432 | | */ |
433 | | typedef int (*fr_dict_flags_copy_func_t)(fr_dict_attr_t *da_to, void *flags_to, void *flags_from); |
434 | | |
435 | | /** Compare the protocol specific flags struct from two attributes |
436 | | * |
437 | | * @param[in] da_a first attribute to compare. |
438 | | * @param[in] da_b second attribute to compare. |
439 | | * @return |
440 | | * - 0 if the flags are equal. |
441 | | * - < 0 if da_a < da_b. |
442 | | * - > 0 if da_a > da_b. |
443 | | */ |
444 | | typedef int (*fr_dict_flags_cmp_func_t)(fr_dict_attr_t const *da_a, fr_dict_attr_t const *da_b); |
445 | | |
446 | | /** Protocol specific custom flag definitnion |
447 | | * |
448 | | */ |
449 | | typedef struct { |
450 | | fr_table_elem_name_t name; //!< Name of the flag |
451 | | fr_dict_flag_parser_rule_t value; //!< Function and context to parse the flag. |
452 | | } fr_dict_flag_parser_t; |
453 | | |
454 | | /** Define a flag setting function, which sets one bit in a fr_dict_attr_flags_t |
455 | | * |
456 | | * This is here, because AFAIK there's no completely portable way to get the bit |
457 | | * offset of a bit field in a structure. |
458 | | */ |
459 | | #define FR_DICT_ATTR_FLAG_FUNC(_struct, _name) \ |
460 | 794 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ |
461 | 794 | { \ |
462 | 794 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ |
463 | 794 | flags->_name = 1; \ |
464 | 794 | return 0; \ |
465 | 794 | } base.c:dict_flag_dns_label Line | Count | Source | 460 | 270 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ | 461 | 270 | { \ | 462 | 270 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ | 463 | 270 | flags->_name = 1; \ | 464 | 270 | return 0; \ | 465 | 270 | } |
base.c:dict_flag_partial_dns_label Line | Count | Source | 460 | 8 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ | 461 | 8 | { \ | 462 | 8 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ | 463 | 8 | flags->_name = 1; \ | 464 | 8 | return 0; \ | 465 | 8 | } |
Line | Count | Source | 460 | 40 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ | 461 | 40 | { \ | 462 | 40 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ | 463 | 40 | flags->_name = 1; \ | 464 | 40 | return 0; \ | 465 | 40 | } |
Line | Count | Source | 460 | 32 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ | 461 | 32 | { \ | 462 | 32 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ | 463 | 32 | flags->_name = 1; \ | 464 | 32 | return 0; \ | 465 | 32 | } |
base.c:dict_flag_extended Line | Count | Source | 460 | 32 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ | 461 | 32 | { \ | 462 | 32 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ | 463 | 32 | flags->_name = 1; \ | 464 | 32 | return 0; \ | 465 | 32 | } |
Line | Count | Source | 460 | 336 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ | 461 | 336 | { \ | 462 | 336 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ | 463 | 336 | flags->_name = 1; \ | 464 | 336 | return 0; \ | 465 | 336 | } |
base.c:dict_flag_long_extended Line | Count | Source | 460 | 16 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ | 461 | 16 | { \ | 462 | 16 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ | 463 | 16 | flags->_name = 1; \ | 464 | 16 | return 0; \ | 465 | 16 | } |
Line | Count | Source | 460 | 60 | static int dict_flag_##_name(fr_dict_attr_t **da_p, UNUSED char const *value, UNUSED fr_dict_flag_parser_rule_t const *rules)\ | 461 | 60 | { \ | 462 | 60 | _struct *flags = fr_dict_attr_ext(*da_p, FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC); \ | 463 | 60 | flags->_name = 1; \ | 464 | 60 | return 0; \ | 465 | 60 | } |
Unexecuted instantiation: base.c:dict_flag_dns_label_uncompressed |
466 | | |
467 | | /** conf_parser_t which parses a single CONF_PAIR, writing the result to a field in a struct |
468 | | * |
469 | | * @param[in] _struct containing the field to write the result to. |
470 | | * @param[in] _field to write the flag to |
471 | | */ |
472 | | # define FR_DICT_PROTOCOL_FLAG(_struct, _field) \ |
473 | | .type = FR_CTYPE_TO_TYPE((((_struct *)NULL)->_field)), \ |
474 | | .offset = offsetof(_struct, _field) |
475 | | |
476 | | /** Protocol-specific callbacks in libfreeradius-PROTOCOL |
477 | | * |
478 | | */ |
479 | | typedef struct { |
480 | | char const *name; //!< name of this protocol |
481 | | |
482 | | int default_type_size; //!< how many octets are in "type" field |
483 | | int default_type_length; //!< how many octets are in "length" field |
484 | | |
485 | | struct { |
486 | | /** Custom flags for this protocol |
487 | | */ |
488 | | struct { |
489 | | fr_dict_flag_parser_t const *table; //!< Flags for this protocol, an array of fr_dict_flag_parser_t |
490 | | size_t table_len; //!< Length of protocol_flags table. |
491 | | |
492 | | size_t len; //!< Length of the protocol specific flags structure. |
493 | | ///< This is used to allocate a FR_DICT_ATTR_EXT_PROTOCOL_SPECIFIC |
494 | | ///< extension of the specified length. |
495 | | |
496 | | fr_dict_flags_copy_func_t copy; //!< Copy protocol-specific flags from one attribute to another. |
497 | | ///< Called when copying attributes. |
498 | | |
499 | | fr_dict_flags_cmp_func_t cmp; //!< Compare protocol-specific flags from two attributes. |
500 | | ///< Called when comparing attributes by their fields. |
501 | | } flags; |
502 | | |
503 | | fr_dict_attr_type_parse_t type_parse; //!< parse unknown type names |
504 | | fr_dict_attr_valid_func_t valid; //!< Validation function to ensure that |
505 | | ///< new attributes are valid. |
506 | | } attr; |
507 | | |
508 | | fr_dict_protocol_init_t init; //!< initialize the library |
509 | | fr_dict_protocol_free_t free; //!< free the library |
510 | | |
511 | | fr_dict_attr_decode_func_t decode; //!< for decoding attributes. Used for implementing foreign |
512 | | ///< protocol attributes. |
513 | | fr_dict_attr_encode_func_t encode; //!< for encoding attributes. Used for implementing foreign |
514 | | ///< protocol attributes. |
515 | | } fr_dict_protocol_t; |
516 | | |
517 | | typedef struct fr_dict_gctx_s fr_dict_gctx_t; |
518 | | |
519 | | /* |
520 | | * Dictionary constants |
521 | | */ |
522 | | #define FR_DICT_PROTO_MAX_NAME_LEN (128) //!< Maximum length of a protocol name. |
523 | 71.6k | #define FR_DICT_ENUM_MAX_NAME_LEN (128) //!< Maximum length of a enum value. |
524 | 1.62k | #define FR_DICT_VENDOR_MAX_NAME_LEN (128) //!< Maximum length of a vendor name. |
525 | 97.4k | #define FR_DICT_ATTR_MAX_NAME_LEN (128) //!< Maximum length of a attribute name. |
526 | | |
527 | | /** Maximum level of TLV nesting allowed |
528 | | */ |
529 | 40.5M | #define FR_DICT_TLV_NEST_MAX (24) |
530 | | |
531 | | /** Maximum TLV stack size |
532 | | * |
533 | | * The additional attributes are to account for |
534 | | * |
535 | | * Root + Vendor + NULL (top frame). |
536 | | * Root + Embedded protocol + Root + Vendor + NULL. |
537 | | * |
538 | | * Code should ensure that it doesn't run off the end of the stack, |
539 | | * as this could be remotely exploitable, using odd nesting. |
540 | | */ |
541 | 40.5M | #define FR_DICT_MAX_TLV_STACK (FR_DICT_TLV_NEST_MAX + 5) |
542 | | |
543 | | /** Characters allowed in a single dictionary attribute name |
544 | | * |
545 | | */ |
546 | | extern bool const fr_dict_attr_allowed_chars[SBUFF_CHAR_CLASS]; |
547 | | |
548 | | /** Characters allowed in a nested dictionary attribute name |
549 | | * |
550 | | */ |
551 | | extern bool const fr_dict_attr_nested_allowed_chars[SBUFF_CHAR_CLASS]; |
552 | | |
553 | | /** Characters that are allowed in dictionary enumeration value names |
554 | | * |
555 | | */ |
556 | | extern bool const fr_dict_enum_allowed_chars[SBUFF_CHAR_CLASS]; |
557 | | |
558 | | /** @name Dictionary structure extensions |
559 | | * |
560 | | * @{ |
561 | | */ |
562 | | #include <freeradius-devel/util/dict_ext.h> |
563 | | /** @} */ |
564 | | |
565 | | /** @name Programmatically create dictionary attributes and values |
566 | | * |
567 | | * @{ |
568 | | */ |
569 | | int fr_dict_attr_add_initialised(fr_dict_attr_t *da) CC_HINT(nonnull); |
570 | | |
571 | | int fr_dict_attr_add(fr_dict_t *dict, fr_dict_attr_t const *parent, char const *name, unsigned int attr, |
572 | | fr_type_t type, fr_dict_attr_flags_t const *flags) CC_HINT(nonnull(1,2,3)); |
573 | | |
574 | | int fr_dict_attr_add_name_only(fr_dict_t *dict, fr_dict_attr_t const *parent, |
575 | | char const *name, fr_type_t type, fr_dict_attr_flags_t const *flags) CC_HINT(nonnull(1,2,3)); |
576 | | |
577 | | int fr_dict_enum_add_name(fr_dict_attr_t *da, char const *name, |
578 | | fr_value_box_t const *value, bool coerce, bool replace); |
579 | | |
580 | | int fr_dict_enum_add_name_next(fr_dict_attr_t *da, char const *name) CC_HINT(nonnull); |
581 | | |
582 | | int fr_dict_str_to_argv(char *str, char **argv, int max_argc); |
583 | | |
584 | | int fr_dict_attr_acopy_local(fr_dict_attr_t const *dst, fr_dict_attr_t const *src) CC_HINT(nonnull); |
585 | | |
586 | | int fr_dict_attr_set_group(fr_dict_attr_t **da_p, fr_dict_attr_t const *ref) CC_HINT(nonnull); |
587 | | /** @} */ |
588 | | |
589 | | /** @name Dict accessors |
590 | | * |
591 | | * @{ |
592 | | */ |
593 | | fr_dict_protocol_t const *fr_dict_protocol(fr_dict_t const *dict); |
594 | | /** @} */ |
595 | | |
596 | | /** @name Unknown ephemeral attributes |
597 | | * |
598 | | * @{ |
599 | | */ |
600 | | fr_dict_attr_t *fr_dict_attr_unknown_alloc(TALLOC_CTX *ctx, fr_dict_attr_t const *da, fr_type_t type) CC_HINT(nonnull(2)); |
601 | | |
602 | | fr_dict_attr_t const *fr_dict_attr_unknown_add(fr_dict_t *dict, fr_dict_attr_t const *old) CC_HINT(nonnull); |
603 | | |
604 | | void fr_dict_attr_unknown_free(fr_dict_attr_t const **da); |
605 | | |
606 | | fr_dict_attr_t *fr_dict_attr_unknown_afrom_da(TALLOC_CTX *ctx, fr_dict_attr_t const *da) CC_HINT(nonnull(2)); |
607 | | |
608 | | static inline fr_dict_attr_t *fr_dict_attr_unknown_copy(TALLOC_CTX *ctx, fr_dict_attr_t const *da) |
609 | 3.00M | { |
610 | 3.00M | fr_assert(da->flags.is_unknown); |
611 | | |
612 | 3.00M | return fr_dict_attr_unknown_afrom_da(ctx, da); |
613 | 3.00M | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_unknown_copy Unexecuted instantiation: common.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_unknown_copy Unexecuted instantiation: backtrace.c:fr_dict_attr_unknown_copy Unexecuted instantiation: base32.c:fr_dict_attr_unknown_copy Unexecuted instantiation: base64.c:fr_dict_attr_unknown_copy Unexecuted instantiation: calc.c:fr_dict_attr_unknown_copy Unexecuted instantiation: cbor.c:fr_dict_attr_unknown_copy Unexecuted instantiation: decode.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dict_ext.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dict_fixup.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dict_print.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dict_test.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_unknown_copy dict_unknown.c:fr_dict_attr_unknown_copy Line | Count | Source | 609 | 56.7k | { | 610 | 56.7k | fr_assert(da->flags.is_unknown); | 611 | | | 612 | 56.7k | return fr_dict_attr_unknown_afrom_da(ctx, da); | 613 | 56.7k | } |
Unexecuted instantiation: dict_util.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dict_validate.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dl.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dns.c:fr_dict_attr_unknown_copy Unexecuted instantiation: edit.c:fr_dict_attr_unknown_copy Unexecuted instantiation: encode.c:fr_dict_attr_unknown_copy Unexecuted instantiation: timer.c:fr_dict_attr_unknown_copy Unexecuted instantiation: file.c:fr_dict_attr_unknown_copy Unexecuted instantiation: inet.c:fr_dict_attr_unknown_copy Unexecuted instantiation: log.c:fr_dict_attr_unknown_copy Unexecuted instantiation: packet.c:fr_dict_attr_unknown_copy pair.c:fr_dict_attr_unknown_copy Line | Count | Source | 609 | 2.94M | { | 610 | 2.94M | fr_assert(da->flags.is_unknown); | 611 | | | 612 | 2.94M | return fr_dict_attr_unknown_afrom_da(ctx, da); | 613 | 2.94M | } |
Unexecuted instantiation: pair_inline.c:fr_dict_attr_unknown_copy Unexecuted instantiation: pair_legacy.c:fr_dict_attr_unknown_copy Unexecuted instantiation: pair_print.c:fr_dict_attr_unknown_copy Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_unknown_copy Unexecuted instantiation: print.c:fr_dict_attr_unknown_copy Unexecuted instantiation: proto.c:fr_dict_attr_unknown_copy Unexecuted instantiation: regex.c:fr_dict_attr_unknown_copy Unexecuted instantiation: socket.c:fr_dict_attr_unknown_copy Unexecuted instantiation: stats.c:fr_dict_attr_unknown_copy Unexecuted instantiation: struct.c:fr_dict_attr_unknown_copy Unexecuted instantiation: trie.c:fr_dict_attr_unknown_copy Unexecuted instantiation: types.c:fr_dict_attr_unknown_copy Unexecuted instantiation: uri.c:fr_dict_attr_unknown_copy Unexecuted instantiation: value.c:fr_dict_attr_unknown_copy Unexecuted instantiation: fuzzer.c:fr_dict_attr_unknown_copy Unexecuted instantiation: base.c:fr_dict_attr_unknown_copy Unexecuted instantiation: list.c:fr_dict_attr_unknown_copy Unexecuted instantiation: tcp.c:fr_dict_attr_unknown_copy Unexecuted instantiation: abinary.c:fr_dict_attr_unknown_copy Unexecuted instantiation: raw.c:fr_dict_attr_unknown_copy Unexecuted instantiation: udp.c:fr_dict_attr_unknown_copy Unexecuted instantiation: vmps.c:fr_dict_attr_unknown_copy Unexecuted instantiation: alpn.c:fr_dict_attr_unknown_copy Unexecuted instantiation: cert.c:fr_dict_attr_unknown_copy Unexecuted instantiation: conf.c:fr_dict_attr_unknown_copy Unexecuted instantiation: connection.c:fr_dict_attr_unknown_copy Unexecuted instantiation: ctx.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dtls.c:fr_dict_attr_unknown_copy Unexecuted instantiation: pairs.c:fr_dict_attr_unknown_copy Unexecuted instantiation: session.c:fr_dict_attr_unknown_copy Unexecuted instantiation: strerror.c:fr_dict_attr_unknown_copy Unexecuted instantiation: ticket.c:fr_dict_attr_unknown_copy Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_unknown_copy Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_unknown_copy Unexecuted instantiation: utils.c:fr_dict_attr_unknown_copy Unexecuted instantiation: verify.c:fr_dict_attr_unknown_copy Unexecuted instantiation: version.c:fr_dict_attr_unknown_copy Unexecuted instantiation: virtual_server.c:fr_dict_attr_unknown_copy Unexecuted instantiation: auth.c:fr_dict_attr_unknown_copy Unexecuted instantiation: cf_file.c:fr_dict_attr_unknown_copy Unexecuted instantiation: cf_parse.c:fr_dict_attr_unknown_copy Unexecuted instantiation: cf_util.c:fr_dict_attr_unknown_copy Unexecuted instantiation: client.c:fr_dict_attr_unknown_copy Unexecuted instantiation: command.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dependency.c:fr_dict_attr_unknown_copy Unexecuted instantiation: dl_module.c:fr_dict_attr_unknown_copy Unexecuted instantiation: exec.c:fr_dict_attr_unknown_copy Unexecuted instantiation: exec_legacy.c:fr_dict_attr_unknown_copy Unexecuted instantiation: exfile.c:fr_dict_attr_unknown_copy Unexecuted instantiation: global_lib.c:fr_dict_attr_unknown_copy Unexecuted instantiation: main_config.c:fr_dict_attr_unknown_copy Unexecuted instantiation: main_loop.c:fr_dict_attr_unknown_copy Unexecuted instantiation: map.c:fr_dict_attr_unknown_copy Unexecuted instantiation: map_proc.c:fr_dict_attr_unknown_copy Unexecuted instantiation: module.c:fr_dict_attr_unknown_copy Unexecuted instantiation: module_method.c:fr_dict_attr_unknown_copy Unexecuted instantiation: module_rlm.c:fr_dict_attr_unknown_copy Unexecuted instantiation: paircmp.c:fr_dict_attr_unknown_copy Unexecuted instantiation: pairmove.c:fr_dict_attr_unknown_copy Unexecuted instantiation: password.c:fr_dict_attr_unknown_copy Unexecuted instantiation: pool.c:fr_dict_attr_unknown_copy Unexecuted instantiation: request.c:fr_dict_attr_unknown_copy Unexecuted instantiation: request_data.c:fr_dict_attr_unknown_copy Unexecuted instantiation: snmp.c:fr_dict_attr_unknown_copy Unexecuted instantiation: state.c:fr_dict_attr_unknown_copy Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_unknown_copy Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_unknown_copy Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_unknown_copy Unexecuted instantiation: trigger.c:fr_dict_attr_unknown_copy Unexecuted instantiation: trunk.c:fr_dict_attr_unknown_copy Unexecuted instantiation: users_file.c:fr_dict_attr_unknown_copy Unexecuted instantiation: util.c:fr_dict_attr_unknown_copy Unexecuted instantiation: virtual_servers.c:fr_dict_attr_unknown_copy Unexecuted instantiation: call.c:fr_dict_attr_unknown_copy Unexecuted instantiation: call_env.c:fr_dict_attr_unknown_copy Unexecuted instantiation: caller.c:fr_dict_attr_unknown_copy Unexecuted instantiation: catch.c:fr_dict_attr_unknown_copy Unexecuted instantiation: child_request.c:fr_dict_attr_unknown_copy Unexecuted instantiation: compile.c:fr_dict_attr_unknown_copy Unexecuted instantiation: condition.c:fr_dict_attr_unknown_copy Unexecuted instantiation: detach.c:fr_dict_attr_unknown_copy Unexecuted instantiation: finally.c:fr_dict_attr_unknown_copy Unexecuted instantiation: foreach.c:fr_dict_attr_unknown_copy Unexecuted instantiation: function.c:fr_dict_attr_unknown_copy Unexecuted instantiation: group.c:fr_dict_attr_unknown_copy Unexecuted instantiation: interpret.c:fr_dict_attr_unknown_copy Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_unknown_copy Unexecuted instantiation: io.c:fr_dict_attr_unknown_copy Unexecuted instantiation: limit.c:fr_dict_attr_unknown_copy Unexecuted instantiation: load_balance.c:fr_dict_attr_unknown_copy Unexecuted instantiation: map_builtin.c:fr_dict_attr_unknown_copy Unexecuted instantiation: parallel.c:fr_dict_attr_unknown_copy Unexecuted instantiation: return.c:fr_dict_attr_unknown_copy Unexecuted instantiation: subrequest.c:fr_dict_attr_unknown_copy Unexecuted instantiation: switch.c:fr_dict_attr_unknown_copy Unexecuted instantiation: timeout.c:fr_dict_attr_unknown_copy Unexecuted instantiation: tmpl.c:fr_dict_attr_unknown_copy Unexecuted instantiation: try.c:fr_dict_attr_unknown_copy Unexecuted instantiation: transaction.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_eval.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_expr.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_func.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_inst.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_pair.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_purify.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_unknown_copy Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_unknown_copy Unexecuted instantiation: json.c:fr_dict_attr_unknown_copy Unexecuted instantiation: jpath.c:fr_dict_attr_unknown_copy Unexecuted instantiation: app_io.c:fr_dict_attr_unknown_copy Unexecuted instantiation: channel.c:fr_dict_attr_unknown_copy Unexecuted instantiation: coord.c:fr_dict_attr_unknown_copy Unexecuted instantiation: coord_pair.c:fr_dict_attr_unknown_copy Unexecuted instantiation: listen.c:fr_dict_attr_unknown_copy Unexecuted instantiation: master.c:fr_dict_attr_unknown_copy Unexecuted instantiation: network.c:fr_dict_attr_unknown_copy Unexecuted instantiation: schedule.c:fr_dict_attr_unknown_copy Unexecuted instantiation: thread.c:fr_dict_attr_unknown_copy Unexecuted instantiation: worker.c:fr_dict_attr_unknown_copy |
614 | | |
615 | | fr_dict_attr_t *fr_dict_attr_unknown_typed_afrom_num_raw(TALLOC_CTX *ctx, |
616 | | fr_dict_attr_t const *parent, |
617 | | unsigned int num, fr_type_t type, bool raw) |
618 | | CC_HINT(nonnull(2)); |
619 | | |
620 | | static inline CC_HINT(nonnull(2)) fr_dict_attr_t *fr_dict_attr_unknown_typed_afrom_num(TALLOC_CTX *ctx, |
621 | | fr_dict_attr_t const *parent, |
622 | | unsigned int num, fr_type_t type) |
623 | 777k | { |
624 | 777k | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, num, type, false); |
625 | 777k | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: common.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: backtrace.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: base32.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: base64.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: calc.c:fr_dict_attr_unknown_typed_afrom_num cbor.c:fr_dict_attr_unknown_typed_afrom_num Line | Count | Source | 623 | 770k | { | 624 | 770k | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, num, type, false); | 625 | 770k | } |
Unexecuted instantiation: dict_ext.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dict_fixup.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dict_print.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dict_test.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dict_unknown.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dict_util.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dict_validate.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dl.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dns.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: edit.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: encode.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: timer.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: file.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: inet.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: log.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: packet.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: pair.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: pair_inline.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: pair_legacy.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: pair_print.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: print.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: proto.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: regex.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: socket.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: stats.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: struct.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: trie.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: types.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: uri.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: value.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: fuzzer.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: base.c:fr_dict_attr_unknown_typed_afrom_num decode.c:fr_dict_attr_unknown_typed_afrom_num Line | Count | Source | 623 | 6.26k | { | 624 | 6.26k | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, num, type, false); | 625 | 6.26k | } |
Unexecuted instantiation: list.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: tcp.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: abinary.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: raw.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: udp.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: vmps.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: alpn.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: cert.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: conf.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: connection.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: ctx.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dtls.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: pairs.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: session.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: strerror.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: ticket.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: utils.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: verify.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: version.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: virtual_server.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: auth.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: cf_file.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: cf_parse.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: cf_util.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: client.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: command.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dependency.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: dl_module.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: exec.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: exec_legacy.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: exfile.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: global_lib.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: main_config.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: main_loop.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: map.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: map_proc.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: module.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: module_method.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: module_rlm.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: paircmp.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: pairmove.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: password.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: pool.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: request.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: request_data.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: snmp.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: state.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: trigger.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: trunk.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: users_file.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: util.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: virtual_servers.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: call.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: call_env.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: caller.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: catch.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: child_request.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: compile.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: condition.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: detach.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: finally.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: foreach.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: function.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: group.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: interpret.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: io.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: limit.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: load_balance.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: map_builtin.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: parallel.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: return.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: subrequest.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: switch.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: timeout.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: tmpl.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: try.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: transaction.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_eval.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_expr.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_func.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_inst.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_pair.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_purify.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: json.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: jpath.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: app_io.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: channel.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: coord.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: coord_pair.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: listen.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: master.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: network.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: schedule.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: thread.c:fr_dict_attr_unknown_typed_afrom_num Unexecuted instantiation: worker.c:fr_dict_attr_unknown_typed_afrom_num |
626 | | |
627 | | |
628 | | static inline CC_HINT(nonnull(2)) fr_dict_attr_t *fr_dict_attr_unknown_vendor_afrom_num(TALLOC_CTX *ctx, |
629 | | fr_dict_attr_t const *parent, |
630 | | unsigned int vendor) |
631 | 10.5k | { |
632 | 10.5k | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, vendor, FR_TYPE_VENDOR, false); |
633 | 10.5k | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: common.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: backtrace.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: base32.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: base64.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: calc.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: cbor.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dict_ext.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dict_fixup.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dict_print.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dict_test.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dict_unknown.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dict_util.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dict_validate.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dl.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dns.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: edit.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: encode.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: timer.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: file.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: inet.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: log.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: packet.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: pair.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: pair_inline.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: pair_legacy.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: pair_print.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: print.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: proto.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: regex.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: socket.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: stats.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: struct.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: trie.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: types.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: uri.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: value.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: fuzzer.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: base.c:fr_dict_attr_unknown_vendor_afrom_num decode.c:fr_dict_attr_unknown_vendor_afrom_num Line | Count | Source | 631 | 10.5k | { | 632 | 10.5k | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, vendor, FR_TYPE_VENDOR, false); | 633 | 10.5k | } |
Unexecuted instantiation: list.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: tcp.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: abinary.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: raw.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: udp.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: vmps.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: alpn.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: cert.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: conf.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: connection.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: ctx.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dtls.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: pairs.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: session.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: strerror.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: ticket.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: utils.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: verify.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: version.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: virtual_server.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: auth.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: cf_file.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: cf_parse.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: cf_util.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: client.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: command.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dependency.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: dl_module.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: exec.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: exec_legacy.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: exfile.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: global_lib.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: main_config.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: main_loop.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: map.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: map_proc.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: module.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: module_method.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: module_rlm.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: paircmp.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: pairmove.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: password.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: pool.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: request.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: request_data.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: snmp.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: state.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: trigger.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: trunk.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: users_file.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: util.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: virtual_servers.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: call.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: call_env.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: caller.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: catch.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: child_request.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: compile.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: condition.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: detach.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: finally.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: foreach.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: function.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: group.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: interpret.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: io.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: limit.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: load_balance.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: map_builtin.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: parallel.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: return.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: subrequest.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: switch.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: timeout.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: tmpl.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: try.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: transaction.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_eval.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_expr.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_func.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_inst.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_pair.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_purify.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: json.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: jpath.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: app_io.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: channel.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: coord.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: coord_pair.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: listen.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: master.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: network.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: schedule.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: thread.c:fr_dict_attr_unknown_vendor_afrom_num Unexecuted instantiation: worker.c:fr_dict_attr_unknown_vendor_afrom_num |
634 | | |
635 | | static inline CC_HINT(nonnull(2)) fr_dict_attr_t *fr_dict_attr_unknown_raw_afrom_num(TALLOC_CTX *ctx, |
636 | | fr_dict_attr_t const *parent, |
637 | | unsigned int attr) |
638 | 2.97M | { |
639 | 2.97M | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, attr, FR_TYPE_OCTETS, true); |
640 | 2.97M | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: common.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: backtrace.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: base32.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: base64.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: calc.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: cbor.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dict_ext.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dict_fixup.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dict_print.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dict_test.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dict_unknown.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dict_util.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dict_validate.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dl.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dns.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: edit.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: encode.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: timer.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: file.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: inet.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: log.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: packet.c:fr_dict_attr_unknown_raw_afrom_num pair.c:fr_dict_attr_unknown_raw_afrom_num Line | Count | Source | 638 | 339k | { | 639 | 339k | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, attr, FR_TYPE_OCTETS, true); | 640 | 339k | } |
Unexecuted instantiation: pair_inline.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: pair_legacy.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: pair_print.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: print.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: proto.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: regex.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: socket.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: stats.c:fr_dict_attr_unknown_raw_afrom_num struct.c:fr_dict_attr_unknown_raw_afrom_num Line | Count | Source | 638 | 7.61k | { | 639 | 7.61k | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, attr, FR_TYPE_OCTETS, true); | 640 | 7.61k | } |
Unexecuted instantiation: trie.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: types.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: uri.c:fr_dict_attr_unknown_raw_afrom_num value.c:fr_dict_attr_unknown_raw_afrom_num Line | Count | Source | 638 | 613k | { | 639 | 613k | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, attr, FR_TYPE_OCTETS, true); | 640 | 613k | } |
Unexecuted instantiation: fuzzer.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: base.c:fr_dict_attr_unknown_raw_afrom_num decode.c:fr_dict_attr_unknown_raw_afrom_num Line | Count | Source | 638 | 2.01M | { | 639 | 2.01M | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, attr, FR_TYPE_OCTETS, true); | 640 | 2.01M | } |
Unexecuted instantiation: list.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: tcp.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: abinary.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: raw.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: udp.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: vmps.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: alpn.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: cert.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: conf.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: connection.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: ctx.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dtls.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: pairs.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: session.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: strerror.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: ticket.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: utils.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: verify.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: version.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: virtual_server.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: auth.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: cf_file.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: cf_parse.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: cf_util.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: client.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: command.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dependency.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: dl_module.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: exec.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: exec_legacy.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: exfile.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: global_lib.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: main_config.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: main_loop.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: map.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: map_proc.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: module.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: module_method.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: module_rlm.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: paircmp.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: pairmove.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: password.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: pool.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: request.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: request_data.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: snmp.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: state.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_unknown_raw_afrom_num tmpl_eval.c:fr_dict_attr_unknown_raw_afrom_num Line | Count | Source | 638 | 4 | { | 639 | 4 | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, attr, FR_TYPE_OCTETS, true); | 640 | 4 | } |
Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: trigger.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: trunk.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: users_file.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: util.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: virtual_servers.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: call.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: call_env.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: caller.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: catch.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: child_request.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: compile.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: condition.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: detach.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: finally.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: foreach.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: function.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: group.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: interpret.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: io.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: limit.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: load_balance.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: map_builtin.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: parallel.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: return.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: subrequest.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: switch.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: timeout.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: tmpl.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: try.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: transaction.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_eval.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_expr.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_func.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_inst.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_pair.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_purify.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: json.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: jpath.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: app_io.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: channel.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: coord.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: coord_pair.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: listen.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: master.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: network.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: schedule.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: thread.c:fr_dict_attr_unknown_raw_afrom_num Unexecuted instantiation: worker.c:fr_dict_attr_unknown_raw_afrom_num |
641 | | |
642 | | static inline CC_HINT(nonnull(2)) fr_dict_attr_t *fr_dict_attr_unknown_afrom_oid(TALLOC_CTX *ctx, |
643 | | fr_dict_attr_t const *parent, |
644 | | fr_sbuff_t *in, fr_type_t type) |
645 | 0 | { |
646 | 0 | uint32_t num; |
647 | |
|
648 | 0 | if (fr_sbuff_out(&num, in) < 0) return NULL; |
649 | | |
650 | 0 | return fr_dict_attr_unknown_typed_afrom_num_raw(ctx, parent, num, type, true); |
651 | 0 | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: common.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: backtrace.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: base32.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: base64.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: calc.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: cbor.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: decode.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dict_ext.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dict_fixup.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dict_print.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dict_test.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dict_unknown.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dict_util.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dict_validate.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dl.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dns.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: edit.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: encode.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: timer.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: file.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: inet.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: log.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: packet.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: pair.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: pair_inline.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: pair_legacy.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: pair_print.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: print.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: proto.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: regex.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: socket.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: stats.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: struct.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: trie.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: types.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: uri.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: value.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: fuzzer.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: base.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: list.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: tcp.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: abinary.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: raw.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: udp.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: vmps.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: alpn.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: cert.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: conf.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: connection.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: ctx.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dtls.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: pairs.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: session.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: strerror.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: ticket.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: utils.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: verify.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: version.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: virtual_server.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: auth.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: cf_file.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: cf_parse.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: cf_util.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: client.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: command.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dependency.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: dl_module.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: exec.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: exec_legacy.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: exfile.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: global_lib.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: main_config.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: main_loop.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: map.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: map_proc.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: module.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: module_method.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: module_rlm.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: paircmp.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: pairmove.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: password.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: pool.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: request.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: request_data.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: snmp.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: state.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: trigger.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: trunk.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: users_file.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: util.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: virtual_servers.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: call.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: call_env.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: caller.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: catch.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: child_request.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: compile.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: condition.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: detach.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: finally.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: foreach.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: function.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: group.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: interpret.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: io.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: limit.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: load_balance.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: map_builtin.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: parallel.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: return.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: subrequest.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: switch.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: timeout.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: tmpl.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: try.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: transaction.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_eval.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_expr.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_func.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_inst.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_pair.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_purify.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: json.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: jpath.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: app_io.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: channel.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: coord.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: coord_pair.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: listen.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: master.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: network.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: schedule.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: thread.c:fr_dict_attr_unknown_afrom_oid Unexecuted instantiation: worker.c:fr_dict_attr_unknown_afrom_oid |
652 | | |
653 | | static inline CC_HINT(nonnull(2)) fr_dict_attr_t *fr_dict_attr_unknown_raw_afrom_da(TALLOC_CTX *ctx, fr_dict_attr_t const *da) |
654 | 172k | { |
655 | 172k | return fr_dict_attr_unknown_alloc(ctx, da, FR_TYPE_OCTETS); |
656 | 172k | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: common.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: backtrace.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: base32.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: base64.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: calc.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: cbor.c:fr_dict_attr_unknown_raw_afrom_da decode.c:fr_dict_attr_unknown_raw_afrom_da Line | Count | Source | 654 | 172k | { | 655 | 172k | return fr_dict_attr_unknown_alloc(ctx, da, FR_TYPE_OCTETS); | 656 | 172k | } |
Unexecuted instantiation: dict_ext.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dict_fixup.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dict_print.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dict_test.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dict_unknown.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dict_util.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dict_validate.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dl.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dns.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: edit.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: encode.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: timer.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: file.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: inet.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: log.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: packet.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: pair.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: pair_inline.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: pair_legacy.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: pair_print.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: print.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: proto.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: regex.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: socket.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: stats.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: struct.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: trie.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: types.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: uri.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: value.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: fuzzer.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: base.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: list.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: tcp.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: abinary.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: raw.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: udp.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: vmps.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: alpn.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: cert.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: conf.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: connection.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: ctx.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dtls.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: pairs.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: session.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: strerror.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: ticket.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: utils.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: verify.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: version.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: virtual_server.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: auth.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: cf_file.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: cf_parse.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: cf_util.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: client.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: command.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dependency.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: dl_module.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: exec.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: exec_legacy.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: exfile.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: global_lib.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: main_config.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: main_loop.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: map.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: map_proc.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: module.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: module_method.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: module_rlm.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: paircmp.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: pairmove.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: password.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: pool.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: request.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: request_data.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: snmp.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: state.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: trigger.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: trunk.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: users_file.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: util.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: virtual_servers.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: call.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: call_env.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: caller.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: catch.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: child_request.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: compile.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: condition.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: detach.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: finally.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: foreach.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: function.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: group.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: interpret.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: io.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: limit.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: load_balance.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: map_builtin.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: parallel.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: return.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: subrequest.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: switch.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: timeout.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: tmpl.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: try.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: transaction.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_eval.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_expr.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_func.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_inst.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_pair.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_purify.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: json.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: jpath.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: app_io.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: channel.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: coord.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: coord_pair.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: listen.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: master.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: network.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: schedule.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: thread.c:fr_dict_attr_unknown_raw_afrom_da Unexecuted instantiation: worker.c:fr_dict_attr_unknown_raw_afrom_da |
657 | | |
658 | | |
659 | | fr_slen_t fr_dict_attr_unknown_afrom_oid_substr(TALLOC_CTX *ctx, |
660 | | fr_dict_attr_t const **out, |
661 | | fr_dict_attr_t const *parent, |
662 | | fr_sbuff_t *in, fr_type_t type) |
663 | | CC_HINT(nonnull(2,3,4)); |
664 | | |
665 | | int fr_dict_attr_unknown_parent_to_known(fr_dict_attr_t *da, fr_dict_attr_t const *parent); |
666 | | |
667 | | fr_dict_attr_t const *fr_dict_attr_unknown_resolve(fr_dict_t const *dict, fr_dict_attr_t const *da); |
668 | | /** @} */ |
669 | | |
670 | | /** @name Attribute comparisons |
671 | | * |
672 | | * @{ |
673 | | */ |
674 | | fr_cmp_ret_t fr_dict_attr_ordered_cmp(fr_dict_attr_t const *a, fr_dict_attr_t const *b); |
675 | | |
676 | | static inline CC_HINT(nonnull) fr_cmp_ret_t fr_dict_attr_cmp(fr_dict_attr_t const *a, fr_dict_attr_t const *b) |
677 | 0 | { |
678 | 0 | fr_cmp_ret_t ret; |
679 | | |
680 | | /* |
681 | | * Comparing unknowns or raws is expensive |
682 | | * because we need to check the lineage. |
683 | | */ |
684 | 0 | if (a->flags.is_unknown | a->flags.is_raw | b->flags.is_unknown | b->flags.is_raw) { |
685 | 0 | ret = CMP(a->depth, b->depth); |
686 | 0 | if (ret != 0) return ret; |
687 | | |
688 | 0 | ret = CMP(a->attr, b->attr); |
689 | 0 | if (ret != 0) return ret; |
690 | | |
691 | 0 | if (fr_type_is_structural(a->type) || fr_type_is_structural(b->type)) { |
692 | 0 | ret = CMP(a->type, b->type); |
693 | 0 | if (ret != 0) return ret; |
694 | 0 | } |
695 | | |
696 | 0 | ret = CMP(a->parent == NULL, b->parent == NULL); |
697 | 0 | if ((ret != 0) || !a->parent) return ret; |
698 | | |
699 | 0 | return fr_dict_attr_cmp(a->parent, b->parent); |
700 | 0 | } |
701 | | |
702 | | /* |
703 | | * Comparing knowns is cheap because the |
704 | | * DAs are unique. |
705 | | */ |
706 | 0 | return CMP(a, b); |
707 | 0 | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_cmp Unexecuted instantiation: common.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_cmp Unexecuted instantiation: backtrace.c:fr_dict_attr_cmp Unexecuted instantiation: base32.c:fr_dict_attr_cmp Unexecuted instantiation: base64.c:fr_dict_attr_cmp Unexecuted instantiation: calc.c:fr_dict_attr_cmp Unexecuted instantiation: cbor.c:fr_dict_attr_cmp Unexecuted instantiation: decode.c:fr_dict_attr_cmp Unexecuted instantiation: dict_ext.c:fr_dict_attr_cmp Unexecuted instantiation: dict_fixup.c:fr_dict_attr_cmp Unexecuted instantiation: dict_print.c:fr_dict_attr_cmp Unexecuted instantiation: dict_test.c:fr_dict_attr_cmp Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_cmp Unexecuted instantiation: dict_unknown.c:fr_dict_attr_cmp Unexecuted instantiation: dict_util.c:fr_dict_attr_cmp Unexecuted instantiation: dict_validate.c:fr_dict_attr_cmp Unexecuted instantiation: dl.c:fr_dict_attr_cmp Unexecuted instantiation: dns.c:fr_dict_attr_cmp Unexecuted instantiation: edit.c:fr_dict_attr_cmp Unexecuted instantiation: encode.c:fr_dict_attr_cmp Unexecuted instantiation: timer.c:fr_dict_attr_cmp Unexecuted instantiation: file.c:fr_dict_attr_cmp Unexecuted instantiation: inet.c:fr_dict_attr_cmp Unexecuted instantiation: log.c:fr_dict_attr_cmp Unexecuted instantiation: packet.c:fr_dict_attr_cmp Unexecuted instantiation: pair.c:fr_dict_attr_cmp Unexecuted instantiation: pair_inline.c:fr_dict_attr_cmp Unexecuted instantiation: pair_legacy.c:fr_dict_attr_cmp Unexecuted instantiation: pair_print.c:fr_dict_attr_cmp Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_cmp Unexecuted instantiation: print.c:fr_dict_attr_cmp Unexecuted instantiation: proto.c:fr_dict_attr_cmp Unexecuted instantiation: regex.c:fr_dict_attr_cmp Unexecuted instantiation: socket.c:fr_dict_attr_cmp Unexecuted instantiation: stats.c:fr_dict_attr_cmp Unexecuted instantiation: struct.c:fr_dict_attr_cmp Unexecuted instantiation: trie.c:fr_dict_attr_cmp Unexecuted instantiation: types.c:fr_dict_attr_cmp Unexecuted instantiation: uri.c:fr_dict_attr_cmp Unexecuted instantiation: value.c:fr_dict_attr_cmp Unexecuted instantiation: fuzzer.c:fr_dict_attr_cmp Unexecuted instantiation: base.c:fr_dict_attr_cmp Unexecuted instantiation: list.c:fr_dict_attr_cmp Unexecuted instantiation: tcp.c:fr_dict_attr_cmp Unexecuted instantiation: abinary.c:fr_dict_attr_cmp Unexecuted instantiation: base.c:fr_dict_attr_cmp Unexecuted instantiation: raw.c:fr_dict_attr_cmp Unexecuted instantiation: udp.c:fr_dict_attr_cmp Unexecuted instantiation: vmps.c:fr_dict_attr_cmp Unexecuted instantiation: alpn.c:fr_dict_attr_cmp Unexecuted instantiation: cert.c:fr_dict_attr_cmp Unexecuted instantiation: conf.c:fr_dict_attr_cmp Unexecuted instantiation: connection.c:fr_dict_attr_cmp Unexecuted instantiation: ctx.c:fr_dict_attr_cmp Unexecuted instantiation: dtls.c:fr_dict_attr_cmp Unexecuted instantiation: pairs.c:fr_dict_attr_cmp Unexecuted instantiation: session.c:fr_dict_attr_cmp Unexecuted instantiation: strerror.c:fr_dict_attr_cmp Unexecuted instantiation: ticket.c:fr_dict_attr_cmp Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_cmp Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_cmp Unexecuted instantiation: utils.c:fr_dict_attr_cmp Unexecuted instantiation: verify.c:fr_dict_attr_cmp Unexecuted instantiation: version.c:fr_dict_attr_cmp Unexecuted instantiation: virtual_server.c:fr_dict_attr_cmp Unexecuted instantiation: auth.c:fr_dict_attr_cmp Unexecuted instantiation: cf_file.c:fr_dict_attr_cmp Unexecuted instantiation: cf_parse.c:fr_dict_attr_cmp Unexecuted instantiation: cf_util.c:fr_dict_attr_cmp Unexecuted instantiation: client.c:fr_dict_attr_cmp Unexecuted instantiation: command.c:fr_dict_attr_cmp Unexecuted instantiation: dependency.c:fr_dict_attr_cmp Unexecuted instantiation: dl_module.c:fr_dict_attr_cmp Unexecuted instantiation: exec.c:fr_dict_attr_cmp Unexecuted instantiation: exec_legacy.c:fr_dict_attr_cmp Unexecuted instantiation: exfile.c:fr_dict_attr_cmp Unexecuted instantiation: global_lib.c:fr_dict_attr_cmp Unexecuted instantiation: main_config.c:fr_dict_attr_cmp Unexecuted instantiation: main_loop.c:fr_dict_attr_cmp Unexecuted instantiation: map.c:fr_dict_attr_cmp Unexecuted instantiation: map_proc.c:fr_dict_attr_cmp Unexecuted instantiation: module.c:fr_dict_attr_cmp Unexecuted instantiation: module_method.c:fr_dict_attr_cmp Unexecuted instantiation: module_rlm.c:fr_dict_attr_cmp Unexecuted instantiation: paircmp.c:fr_dict_attr_cmp Unexecuted instantiation: pairmove.c:fr_dict_attr_cmp Unexecuted instantiation: password.c:fr_dict_attr_cmp Unexecuted instantiation: pool.c:fr_dict_attr_cmp Unexecuted instantiation: request.c:fr_dict_attr_cmp Unexecuted instantiation: request_data.c:fr_dict_attr_cmp Unexecuted instantiation: snmp.c:fr_dict_attr_cmp Unexecuted instantiation: state.c:fr_dict_attr_cmp Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_cmp Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_cmp Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_cmp Unexecuted instantiation: trigger.c:fr_dict_attr_cmp Unexecuted instantiation: trunk.c:fr_dict_attr_cmp Unexecuted instantiation: users_file.c:fr_dict_attr_cmp Unexecuted instantiation: util.c:fr_dict_attr_cmp Unexecuted instantiation: virtual_servers.c:fr_dict_attr_cmp Unexecuted instantiation: call.c:fr_dict_attr_cmp Unexecuted instantiation: call_env.c:fr_dict_attr_cmp Unexecuted instantiation: caller.c:fr_dict_attr_cmp Unexecuted instantiation: catch.c:fr_dict_attr_cmp Unexecuted instantiation: child_request.c:fr_dict_attr_cmp Unexecuted instantiation: compile.c:fr_dict_attr_cmp Unexecuted instantiation: condition.c:fr_dict_attr_cmp Unexecuted instantiation: detach.c:fr_dict_attr_cmp Unexecuted instantiation: finally.c:fr_dict_attr_cmp Unexecuted instantiation: foreach.c:fr_dict_attr_cmp Unexecuted instantiation: function.c:fr_dict_attr_cmp Unexecuted instantiation: group.c:fr_dict_attr_cmp Unexecuted instantiation: interpret.c:fr_dict_attr_cmp Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_cmp Unexecuted instantiation: io.c:fr_dict_attr_cmp Unexecuted instantiation: limit.c:fr_dict_attr_cmp Unexecuted instantiation: load_balance.c:fr_dict_attr_cmp Unexecuted instantiation: map_builtin.c:fr_dict_attr_cmp Unexecuted instantiation: parallel.c:fr_dict_attr_cmp Unexecuted instantiation: return.c:fr_dict_attr_cmp Unexecuted instantiation: subrequest.c:fr_dict_attr_cmp Unexecuted instantiation: switch.c:fr_dict_attr_cmp Unexecuted instantiation: timeout.c:fr_dict_attr_cmp Unexecuted instantiation: tmpl.c:fr_dict_attr_cmp Unexecuted instantiation: try.c:fr_dict_attr_cmp Unexecuted instantiation: transaction.c:fr_dict_attr_cmp Unexecuted instantiation: xlat.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_eval.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_expr.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_func.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_inst.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_pair.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_purify.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_cmp Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_cmp Unexecuted instantiation: json.c:fr_dict_attr_cmp Unexecuted instantiation: jpath.c:fr_dict_attr_cmp Unexecuted instantiation: app_io.c:fr_dict_attr_cmp Unexecuted instantiation: channel.c:fr_dict_attr_cmp Unexecuted instantiation: coord.c:fr_dict_attr_cmp Unexecuted instantiation: coord_pair.c:fr_dict_attr_cmp Unexecuted instantiation: listen.c:fr_dict_attr_cmp Unexecuted instantiation: master.c:fr_dict_attr_cmp Unexecuted instantiation: network.c:fr_dict_attr_cmp Unexecuted instantiation: schedule.c:fr_dict_attr_cmp Unexecuted instantiation: thread.c:fr_dict_attr_cmp Unexecuted instantiation: worker.c:fr_dict_attr_cmp |
708 | | |
709 | | /** Compare two dictionary attributes by their contents |
710 | | * |
711 | | * @param[in] a First attribute to compare. |
712 | | * @param[in] b Second attribute to compare. |
713 | | * @return |
714 | | * - 0 if the attributes are equal. |
715 | | * - -1 if a < b. |
716 | | * - +1 if a > b. |
717 | | */ |
718 | | static inline CC_HINT(nonnull) fr_cmp_ret_t fr_dict_attr_cmp_fields(const fr_dict_attr_t *a, const fr_dict_attr_t *b) |
719 | 0 | { |
720 | 0 | fr_cmp_ret_t ret; |
721 | 0 | fr_dict_protocol_t const *a_proto = fr_dict_protocol(a->dict); |
722 | | |
723 | | /* |
724 | | * Technically this isn't a property of the attribute |
725 | | * but we need them to be the same to be able to |
726 | | * compare protocol specific flags successfully. |
727 | | */ |
728 | 0 | ret = CMP(a_proto, fr_dict_protocol(b->dict)); |
729 | 0 | if (ret != 0) return ret; |
730 | | |
731 | 0 | ret = CMP(a->attr, b->attr); |
732 | 0 | if (ret != 0) return ret; |
733 | | |
734 | 0 | ret = CMP(a->parent, b->parent); |
735 | 0 | if (ret != 0) return ret; |
736 | | |
737 | 0 | ret = CMP(fr_dict_vendor_num_by_da(a), fr_dict_vendor_num_by_da(b)); |
738 | 0 | if (ret != 0) return ret; |
739 | | |
740 | | /* |
741 | | * Compare protocol specific flags |
742 | | */ |
743 | 0 | if (a_proto->attr.flags.cmp && (ret = CMP(a_proto->attr.flags.cmp(a, b), 0))) return ret; |
744 | | |
745 | 0 | return CMP(memcmp(&a->flags, &b->flags, sizeof(a->flags)), 0); |
746 | 0 | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_cmp_fields Unexecuted instantiation: common.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_cmp_fields Unexecuted instantiation: backtrace.c:fr_dict_attr_cmp_fields Unexecuted instantiation: base32.c:fr_dict_attr_cmp_fields Unexecuted instantiation: base64.c:fr_dict_attr_cmp_fields Unexecuted instantiation: calc.c:fr_dict_attr_cmp_fields Unexecuted instantiation: cbor.c:fr_dict_attr_cmp_fields Unexecuted instantiation: decode.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dict_ext.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dict_fixup.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dict_print.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dict_test.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dict_unknown.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dict_util.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dict_validate.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dl.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dns.c:fr_dict_attr_cmp_fields Unexecuted instantiation: edit.c:fr_dict_attr_cmp_fields Unexecuted instantiation: encode.c:fr_dict_attr_cmp_fields Unexecuted instantiation: timer.c:fr_dict_attr_cmp_fields Unexecuted instantiation: file.c:fr_dict_attr_cmp_fields Unexecuted instantiation: inet.c:fr_dict_attr_cmp_fields Unexecuted instantiation: log.c:fr_dict_attr_cmp_fields Unexecuted instantiation: packet.c:fr_dict_attr_cmp_fields Unexecuted instantiation: pair.c:fr_dict_attr_cmp_fields Unexecuted instantiation: pair_inline.c:fr_dict_attr_cmp_fields Unexecuted instantiation: pair_legacy.c:fr_dict_attr_cmp_fields Unexecuted instantiation: pair_print.c:fr_dict_attr_cmp_fields Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_cmp_fields Unexecuted instantiation: print.c:fr_dict_attr_cmp_fields Unexecuted instantiation: proto.c:fr_dict_attr_cmp_fields Unexecuted instantiation: regex.c:fr_dict_attr_cmp_fields Unexecuted instantiation: socket.c:fr_dict_attr_cmp_fields Unexecuted instantiation: stats.c:fr_dict_attr_cmp_fields Unexecuted instantiation: struct.c:fr_dict_attr_cmp_fields Unexecuted instantiation: trie.c:fr_dict_attr_cmp_fields Unexecuted instantiation: types.c:fr_dict_attr_cmp_fields Unexecuted instantiation: uri.c:fr_dict_attr_cmp_fields Unexecuted instantiation: value.c:fr_dict_attr_cmp_fields Unexecuted instantiation: fuzzer.c:fr_dict_attr_cmp_fields Unexecuted instantiation: base.c:fr_dict_attr_cmp_fields Unexecuted instantiation: list.c:fr_dict_attr_cmp_fields Unexecuted instantiation: tcp.c:fr_dict_attr_cmp_fields Unexecuted instantiation: abinary.c:fr_dict_attr_cmp_fields Unexecuted instantiation: raw.c:fr_dict_attr_cmp_fields Unexecuted instantiation: udp.c:fr_dict_attr_cmp_fields Unexecuted instantiation: vmps.c:fr_dict_attr_cmp_fields Unexecuted instantiation: alpn.c:fr_dict_attr_cmp_fields Unexecuted instantiation: cert.c:fr_dict_attr_cmp_fields Unexecuted instantiation: conf.c:fr_dict_attr_cmp_fields Unexecuted instantiation: connection.c:fr_dict_attr_cmp_fields Unexecuted instantiation: ctx.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dtls.c:fr_dict_attr_cmp_fields Unexecuted instantiation: pairs.c:fr_dict_attr_cmp_fields Unexecuted instantiation: session.c:fr_dict_attr_cmp_fields Unexecuted instantiation: strerror.c:fr_dict_attr_cmp_fields Unexecuted instantiation: ticket.c:fr_dict_attr_cmp_fields Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_cmp_fields Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_cmp_fields Unexecuted instantiation: utils.c:fr_dict_attr_cmp_fields Unexecuted instantiation: verify.c:fr_dict_attr_cmp_fields Unexecuted instantiation: version.c:fr_dict_attr_cmp_fields Unexecuted instantiation: virtual_server.c:fr_dict_attr_cmp_fields Unexecuted instantiation: auth.c:fr_dict_attr_cmp_fields Unexecuted instantiation: cf_file.c:fr_dict_attr_cmp_fields Unexecuted instantiation: cf_parse.c:fr_dict_attr_cmp_fields Unexecuted instantiation: cf_util.c:fr_dict_attr_cmp_fields Unexecuted instantiation: client.c:fr_dict_attr_cmp_fields Unexecuted instantiation: command.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dependency.c:fr_dict_attr_cmp_fields Unexecuted instantiation: dl_module.c:fr_dict_attr_cmp_fields Unexecuted instantiation: exec.c:fr_dict_attr_cmp_fields Unexecuted instantiation: exec_legacy.c:fr_dict_attr_cmp_fields Unexecuted instantiation: exfile.c:fr_dict_attr_cmp_fields Unexecuted instantiation: global_lib.c:fr_dict_attr_cmp_fields Unexecuted instantiation: main_config.c:fr_dict_attr_cmp_fields Unexecuted instantiation: main_loop.c:fr_dict_attr_cmp_fields Unexecuted instantiation: map.c:fr_dict_attr_cmp_fields Unexecuted instantiation: map_proc.c:fr_dict_attr_cmp_fields Unexecuted instantiation: module.c:fr_dict_attr_cmp_fields Unexecuted instantiation: module_method.c:fr_dict_attr_cmp_fields Unexecuted instantiation: module_rlm.c:fr_dict_attr_cmp_fields Unexecuted instantiation: paircmp.c:fr_dict_attr_cmp_fields Unexecuted instantiation: pairmove.c:fr_dict_attr_cmp_fields Unexecuted instantiation: password.c:fr_dict_attr_cmp_fields Unexecuted instantiation: pool.c:fr_dict_attr_cmp_fields Unexecuted instantiation: request.c:fr_dict_attr_cmp_fields Unexecuted instantiation: request_data.c:fr_dict_attr_cmp_fields Unexecuted instantiation: snmp.c:fr_dict_attr_cmp_fields Unexecuted instantiation: state.c:fr_dict_attr_cmp_fields Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_cmp_fields Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_cmp_fields Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_cmp_fields Unexecuted instantiation: trigger.c:fr_dict_attr_cmp_fields Unexecuted instantiation: trunk.c:fr_dict_attr_cmp_fields Unexecuted instantiation: users_file.c:fr_dict_attr_cmp_fields Unexecuted instantiation: util.c:fr_dict_attr_cmp_fields Unexecuted instantiation: virtual_servers.c:fr_dict_attr_cmp_fields Unexecuted instantiation: call.c:fr_dict_attr_cmp_fields Unexecuted instantiation: call_env.c:fr_dict_attr_cmp_fields Unexecuted instantiation: caller.c:fr_dict_attr_cmp_fields Unexecuted instantiation: catch.c:fr_dict_attr_cmp_fields Unexecuted instantiation: child_request.c:fr_dict_attr_cmp_fields Unexecuted instantiation: compile.c:fr_dict_attr_cmp_fields Unexecuted instantiation: condition.c:fr_dict_attr_cmp_fields Unexecuted instantiation: detach.c:fr_dict_attr_cmp_fields Unexecuted instantiation: finally.c:fr_dict_attr_cmp_fields Unexecuted instantiation: foreach.c:fr_dict_attr_cmp_fields Unexecuted instantiation: function.c:fr_dict_attr_cmp_fields Unexecuted instantiation: group.c:fr_dict_attr_cmp_fields Unexecuted instantiation: interpret.c:fr_dict_attr_cmp_fields Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_cmp_fields Unexecuted instantiation: io.c:fr_dict_attr_cmp_fields Unexecuted instantiation: limit.c:fr_dict_attr_cmp_fields Unexecuted instantiation: load_balance.c:fr_dict_attr_cmp_fields Unexecuted instantiation: map_builtin.c:fr_dict_attr_cmp_fields Unexecuted instantiation: parallel.c:fr_dict_attr_cmp_fields Unexecuted instantiation: return.c:fr_dict_attr_cmp_fields Unexecuted instantiation: subrequest.c:fr_dict_attr_cmp_fields Unexecuted instantiation: switch.c:fr_dict_attr_cmp_fields Unexecuted instantiation: timeout.c:fr_dict_attr_cmp_fields Unexecuted instantiation: tmpl.c:fr_dict_attr_cmp_fields Unexecuted instantiation: try.c:fr_dict_attr_cmp_fields Unexecuted instantiation: transaction.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_eval.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_expr.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_func.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_inst.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_pair.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_purify.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_cmp_fields Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_cmp_fields Unexecuted instantiation: json.c:fr_dict_attr_cmp_fields Unexecuted instantiation: jpath.c:fr_dict_attr_cmp_fields Unexecuted instantiation: app_io.c:fr_dict_attr_cmp_fields Unexecuted instantiation: channel.c:fr_dict_attr_cmp_fields Unexecuted instantiation: coord.c:fr_dict_attr_cmp_fields Unexecuted instantiation: coord_pair.c:fr_dict_attr_cmp_fields Unexecuted instantiation: listen.c:fr_dict_attr_cmp_fields Unexecuted instantiation: master.c:fr_dict_attr_cmp_fields Unexecuted instantiation: network.c:fr_dict_attr_cmp_fields Unexecuted instantiation: schedule.c:fr_dict_attr_cmp_fields Unexecuted instantiation: thread.c:fr_dict_attr_cmp_fields Unexecuted instantiation: worker.c:fr_dict_attr_cmp_fields |
747 | | /** @} */ |
748 | | |
749 | | /** @name Debugging functions |
750 | | * |
751 | | * @{ |
752 | | */ |
753 | | void fr_dict_namespace_debug(FILE *fp, fr_dict_attr_t const *da); |
754 | | |
755 | | void fr_dict_attr_debug(FILE *fp, fr_dict_attr_t const *da); |
756 | | |
757 | | void fr_dict_debug(FILE *fp, fr_dict_t const *dict); |
758 | | |
759 | | void fr_dict_export(FILE *fp, fr_dict_t const *dict); |
760 | | |
761 | | void fr_dict_alias_export(FILE *fp, fr_dict_attr_t const *parent); |
762 | | /** @} */ |
763 | | |
764 | | /** @name Attribute lineage |
765 | | * |
766 | | * @{ |
767 | | */ |
768 | | fr_dict_attr_t const *fr_dict_attr_common_parent(fr_dict_attr_t const *a, fr_dict_attr_t const *b, bool is_ancestor); |
769 | | |
770 | | int fr_dict_oid_component_legacy(unsigned int *out, char const **oid); |
771 | | |
772 | | fr_slen_t fr_dict_attr_flags_print(fr_sbuff_t *out, fr_dict_t const *dict, |
773 | | fr_type_t type, fr_dict_attr_flags_t const *flags); |
774 | | |
775 | | fr_slen_t fr_dict_attr_oid_print(fr_sbuff_t *out, |
776 | | fr_dict_attr_t const *ancestor, fr_dict_attr_t const *da, bool numeric); |
777 | 0 | #define FR_DICT_ATTR_OID_PRINT_RETURN(...) FR_SBUFF_RETURN(fr_dict_attr_oid_print, ##__VA_ARGS__) |
778 | | |
779 | | fr_slen_t fr_dict_attr_by_oid_legacy(fr_dict_attr_t const **parent, |
780 | | unsigned int *attr, char const *oid) CC_HINT(nonnull); |
781 | | |
782 | | fr_slen_t fr_dict_oid_component(fr_dict_attr_err_t *err, |
783 | | fr_dict_attr_t const **out, fr_dict_attr_t const *parent, |
784 | | fr_sbuff_t *in, fr_sbuff_term_t const *tt) |
785 | | CC_HINT(nonnull(2,3,4)); |
786 | | |
787 | | fr_slen_t fr_dict_attr_by_oid_substr(fr_dict_attr_err_t *err, |
788 | | fr_dict_attr_t const **out, fr_dict_attr_t const *parent, |
789 | | fr_sbuff_t *in, fr_sbuff_term_t const *tt) |
790 | | CC_HINT(nonnull(2,3,4)); |
791 | | |
792 | | fr_dict_attr_t const *fr_dict_attr_by_oid(fr_dict_attr_err_t *err, |
793 | | fr_dict_attr_t const *parent, char const *oid) |
794 | | CC_HINT(nonnull(2,3)); |
795 | | |
796 | | bool fr_dict_attr_can_contain(fr_dict_attr_t const *parent, fr_dict_attr_t const *child) CC_HINT(nonnull); |
797 | | |
798 | | /** @} */ |
799 | | |
800 | | /** @name Attribute, vendor and dictionary lookup |
801 | | * |
802 | | * @{ |
803 | | */ |
804 | | |
805 | | /** @hidecallergraph */ |
806 | | fr_dict_attr_t const *fr_dict_root(fr_dict_t const *dict) CC_HINT(nonnull); |
807 | | |
808 | | bool fr_dict_is_read_only(fr_dict_t const *dict); |
809 | | |
810 | | dl_t *fr_dict_dl(fr_dict_t const *dict); |
811 | | |
812 | | fr_slen_t fr_dict_by_protocol_substr(fr_dict_attr_err_t *err, |
813 | | fr_dict_t const **out, fr_sbuff_t *name, fr_dict_t const *dict_def); |
814 | | |
815 | | fr_dict_t const *fr_dict_by_protocol_name(char const *name); |
816 | | |
817 | | fr_dict_t const *fr_dict_by_protocol_num(unsigned int num); |
818 | | |
819 | | fr_dict_attr_t const *fr_dict_unlocal(fr_dict_attr_t const *da) CC_HINT(nonnull); |
820 | | |
821 | | fr_dict_t const *fr_dict_proto_dict(fr_dict_t const *dict) CC_HINT(nonnull); |
822 | | |
823 | | fr_dict_t const *fr_dict_by_da(fr_dict_attr_t const *da) CC_HINT(nonnull); |
824 | | |
825 | | fr_dict_t const *fr_dict_by_attr_name(fr_dict_attr_t const **found, char const *name); |
826 | | |
827 | | bool fr_dict_compatible(fr_dict_t const *dict1, fr_dict_t const *dict2) CC_HINT(nonnull); |
828 | | |
829 | | /** Return true if this attribute is parented directly off the dictionary root |
830 | | * |
831 | | * @param[in] da to check. |
832 | | * @return |
833 | | * - true if attribute is top level. |
834 | | * - false if attribute is not top level. |
835 | | */ |
836 | | static inline bool fr_dict_attr_is_top_level(fr_dict_attr_t const *da) |
837 | 0 | { |
838 | 0 | if (unlikely(!da) || unlikely(!da->parent)) return false; |
839 | 0 | return da->parent->flags.is_root; |
840 | 0 | } Unexecuted instantiation: fuzzer_dhcpv6.c:fr_dict_attr_is_top_level Unexecuted instantiation: common.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_util.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_dhcpv4.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_cf.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_cbor.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_xlat.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_der.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_dns.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_tacacs.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_bfd.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_radius.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_tmpl.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_tftp.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_value.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_arp.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer_vmps.c:fr_dict_attr_is_top_level Unexecuted instantiation: backtrace.c:fr_dict_attr_is_top_level Unexecuted instantiation: base32.c:fr_dict_attr_is_top_level Unexecuted instantiation: base64.c:fr_dict_attr_is_top_level Unexecuted instantiation: calc.c:fr_dict_attr_is_top_level Unexecuted instantiation: cbor.c:fr_dict_attr_is_top_level Unexecuted instantiation: decode.c:fr_dict_attr_is_top_level Unexecuted instantiation: dict_ext.c:fr_dict_attr_is_top_level Unexecuted instantiation: dict_fixup.c:fr_dict_attr_is_top_level Unexecuted instantiation: dict_print.c:fr_dict_attr_is_top_level Unexecuted instantiation: dict_test.c:fr_dict_attr_is_top_level Unexecuted instantiation: dict_tokenize.c:fr_dict_attr_is_top_level Unexecuted instantiation: dict_unknown.c:fr_dict_attr_is_top_level Unexecuted instantiation: dict_util.c:fr_dict_attr_is_top_level Unexecuted instantiation: dict_validate.c:fr_dict_attr_is_top_level Unexecuted instantiation: dl.c:fr_dict_attr_is_top_level Unexecuted instantiation: dns.c:fr_dict_attr_is_top_level Unexecuted instantiation: edit.c:fr_dict_attr_is_top_level Unexecuted instantiation: encode.c:fr_dict_attr_is_top_level Unexecuted instantiation: timer.c:fr_dict_attr_is_top_level Unexecuted instantiation: file.c:fr_dict_attr_is_top_level Unexecuted instantiation: inet.c:fr_dict_attr_is_top_level Unexecuted instantiation: log.c:fr_dict_attr_is_top_level Unexecuted instantiation: packet.c:fr_dict_attr_is_top_level Unexecuted instantiation: pair.c:fr_dict_attr_is_top_level Unexecuted instantiation: pair_inline.c:fr_dict_attr_is_top_level Unexecuted instantiation: pair_legacy.c:fr_dict_attr_is_top_level Unexecuted instantiation: pair_print.c:fr_dict_attr_is_top_level Unexecuted instantiation: pair_tokenize.c:fr_dict_attr_is_top_level Unexecuted instantiation: print.c:fr_dict_attr_is_top_level Unexecuted instantiation: proto.c:fr_dict_attr_is_top_level Unexecuted instantiation: regex.c:fr_dict_attr_is_top_level Unexecuted instantiation: socket.c:fr_dict_attr_is_top_level Unexecuted instantiation: stats.c:fr_dict_attr_is_top_level Unexecuted instantiation: struct.c:fr_dict_attr_is_top_level Unexecuted instantiation: trie.c:fr_dict_attr_is_top_level Unexecuted instantiation: types.c:fr_dict_attr_is_top_level Unexecuted instantiation: uri.c:fr_dict_attr_is_top_level Unexecuted instantiation: value.c:fr_dict_attr_is_top_level Unexecuted instantiation: fuzzer.c:fr_dict_attr_is_top_level Unexecuted instantiation: base.c:fr_dict_attr_is_top_level Unexecuted instantiation: list.c:fr_dict_attr_is_top_level Unexecuted instantiation: tcp.c:fr_dict_attr_is_top_level Unexecuted instantiation: abinary.c:fr_dict_attr_is_top_level Unexecuted instantiation: raw.c:fr_dict_attr_is_top_level Unexecuted instantiation: udp.c:fr_dict_attr_is_top_level Unexecuted instantiation: vmps.c:fr_dict_attr_is_top_level Unexecuted instantiation: alpn.c:fr_dict_attr_is_top_level Unexecuted instantiation: cert.c:fr_dict_attr_is_top_level Unexecuted instantiation: conf.c:fr_dict_attr_is_top_level Unexecuted instantiation: connection.c:fr_dict_attr_is_top_level Unexecuted instantiation: ctx.c:fr_dict_attr_is_top_level Unexecuted instantiation: dtls.c:fr_dict_attr_is_top_level Unexecuted instantiation: pairs.c:fr_dict_attr_is_top_level Unexecuted instantiation: session.c:fr_dict_attr_is_top_level Unexecuted instantiation: strerror.c:fr_dict_attr_is_top_level Unexecuted instantiation: ticket.c:fr_dict_attr_is_top_level Unexecuted instantiation: ticket_stateful.c:fr_dict_attr_is_top_level Unexecuted instantiation: ticket_stateless.c:fr_dict_attr_is_top_level Unexecuted instantiation: utils.c:fr_dict_attr_is_top_level Unexecuted instantiation: verify.c:fr_dict_attr_is_top_level Unexecuted instantiation: version.c:fr_dict_attr_is_top_level Unexecuted instantiation: virtual_server.c:fr_dict_attr_is_top_level Unexecuted instantiation: auth.c:fr_dict_attr_is_top_level Unexecuted instantiation: cf_file.c:fr_dict_attr_is_top_level Unexecuted instantiation: cf_parse.c:fr_dict_attr_is_top_level Unexecuted instantiation: cf_util.c:fr_dict_attr_is_top_level Unexecuted instantiation: client.c:fr_dict_attr_is_top_level Unexecuted instantiation: command.c:fr_dict_attr_is_top_level Unexecuted instantiation: dependency.c:fr_dict_attr_is_top_level Unexecuted instantiation: dl_module.c:fr_dict_attr_is_top_level Unexecuted instantiation: exec.c:fr_dict_attr_is_top_level Unexecuted instantiation: exec_legacy.c:fr_dict_attr_is_top_level Unexecuted instantiation: exfile.c:fr_dict_attr_is_top_level Unexecuted instantiation: global_lib.c:fr_dict_attr_is_top_level Unexecuted instantiation: main_config.c:fr_dict_attr_is_top_level Unexecuted instantiation: main_loop.c:fr_dict_attr_is_top_level Unexecuted instantiation: map.c:fr_dict_attr_is_top_level Unexecuted instantiation: map_proc.c:fr_dict_attr_is_top_level Unexecuted instantiation: module.c:fr_dict_attr_is_top_level Unexecuted instantiation: module_method.c:fr_dict_attr_is_top_level Unexecuted instantiation: module_rlm.c:fr_dict_attr_is_top_level Unexecuted instantiation: paircmp.c:fr_dict_attr_is_top_level Unexecuted instantiation: pairmove.c:fr_dict_attr_is_top_level Unexecuted instantiation: password.c:fr_dict_attr_is_top_level Unexecuted instantiation: pool.c:fr_dict_attr_is_top_level Unexecuted instantiation: request.c:fr_dict_attr_is_top_level Unexecuted instantiation: request_data.c:fr_dict_attr_is_top_level Unexecuted instantiation: snmp.c:fr_dict_attr_is_top_level Unexecuted instantiation: state.c:fr_dict_attr_is_top_level Unexecuted instantiation: tmpl_dcursor.c:fr_dict_attr_is_top_level Unexecuted instantiation: tmpl_eval.c:fr_dict_attr_is_top_level Unexecuted instantiation: tmpl_tokenize.c:fr_dict_attr_is_top_level Unexecuted instantiation: trigger.c:fr_dict_attr_is_top_level Unexecuted instantiation: trunk.c:fr_dict_attr_is_top_level Unexecuted instantiation: users_file.c:fr_dict_attr_is_top_level Unexecuted instantiation: util.c:fr_dict_attr_is_top_level Unexecuted instantiation: virtual_servers.c:fr_dict_attr_is_top_level Unexecuted instantiation: call.c:fr_dict_attr_is_top_level Unexecuted instantiation: call_env.c:fr_dict_attr_is_top_level Unexecuted instantiation: caller.c:fr_dict_attr_is_top_level Unexecuted instantiation: catch.c:fr_dict_attr_is_top_level Unexecuted instantiation: child_request.c:fr_dict_attr_is_top_level Unexecuted instantiation: compile.c:fr_dict_attr_is_top_level Unexecuted instantiation: condition.c:fr_dict_attr_is_top_level Unexecuted instantiation: detach.c:fr_dict_attr_is_top_level Unexecuted instantiation: finally.c:fr_dict_attr_is_top_level Unexecuted instantiation: foreach.c:fr_dict_attr_is_top_level Unexecuted instantiation: function.c:fr_dict_attr_is_top_level Unexecuted instantiation: group.c:fr_dict_attr_is_top_level Unexecuted instantiation: interpret.c:fr_dict_attr_is_top_level Unexecuted instantiation: interpret_synchronous.c:fr_dict_attr_is_top_level Unexecuted instantiation: io.c:fr_dict_attr_is_top_level Unexecuted instantiation: limit.c:fr_dict_attr_is_top_level Unexecuted instantiation: load_balance.c:fr_dict_attr_is_top_level Unexecuted instantiation: map_builtin.c:fr_dict_attr_is_top_level Unexecuted instantiation: parallel.c:fr_dict_attr_is_top_level Unexecuted instantiation: return.c:fr_dict_attr_is_top_level Unexecuted instantiation: subrequest.c:fr_dict_attr_is_top_level Unexecuted instantiation: switch.c:fr_dict_attr_is_top_level Unexecuted instantiation: timeout.c:fr_dict_attr_is_top_level Unexecuted instantiation: tmpl.c:fr_dict_attr_is_top_level Unexecuted instantiation: try.c:fr_dict_attr_is_top_level Unexecuted instantiation: transaction.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_alloc.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_builtin.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_eval.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_expr.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_func.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_inst.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_pair.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_profiling.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_purify.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_redundant.c:fr_dict_attr_is_top_level Unexecuted instantiation: xlat_tokenize.c:fr_dict_attr_is_top_level Unexecuted instantiation: json.c:fr_dict_attr_is_top_level Unexecuted instantiation: jpath.c:fr_dict_attr_is_top_level Unexecuted instantiation: app_io.c:fr_dict_attr_is_top_level Unexecuted instantiation: channel.c:fr_dict_attr_is_top_level Unexecuted instantiation: coord.c:fr_dict_attr_is_top_level Unexecuted instantiation: coord_pair.c:fr_dict_attr_is_top_level Unexecuted instantiation: listen.c:fr_dict_attr_is_top_level Unexecuted instantiation: master.c:fr_dict_attr_is_top_level Unexecuted instantiation: network.c:fr_dict_attr_is_top_level Unexecuted instantiation: schedule.c:fr_dict_attr_is_top_level Unexecuted instantiation: thread.c:fr_dict_attr_is_top_level Unexecuted instantiation: worker.c:fr_dict_attr_is_top_level |
841 | | |
842 | | fr_dict_vendor_t const *fr_dict_vendor_by_da(fr_dict_attr_t const *da); |
843 | | |
844 | | fr_dict_vendor_t const *fr_dict_vendor_by_name(fr_dict_t const *dict, char const *name); |
845 | | |
846 | | fr_dict_vendor_t const *fr_dict_vendor_by_num(fr_dict_t const *dict, uint32_t vendor_pen); |
847 | | |
848 | | fr_dict_attr_t const *fr_dict_vendor_da_by_num(fr_dict_attr_t const *vendor_root, uint32_t vendor_pen); |
849 | | |
850 | | fr_slen_t fr_dict_attr_search_by_qualified_name_substr(fr_dict_attr_err_t *err, fr_dict_attr_t const **out, |
851 | | fr_dict_t const *dict_def, |
852 | | fr_sbuff_t *name, fr_sbuff_term_t const *tt, |
853 | | bool internal, bool foreign) |
854 | | CC_HINT(nonnull(2, 4)); |
855 | | |
856 | | fr_slen_t fr_dict_attr_search_by_name_substr(fr_dict_attr_err_t *err, fr_dict_attr_t const **out, |
857 | | fr_dict_t const *dict_def, |
858 | | fr_sbuff_t *name, fr_sbuff_term_t const *tt, |
859 | | bool internal, bool foreign) |
860 | | CC_HINT(nonnull(2, 4)); |
861 | | |
862 | | fr_slen_t fr_dict_attr_search_by_qualified_oid_substr(fr_dict_attr_err_t *err, fr_dict_attr_t const **out, |
863 | | fr_dict_t const *dict_def, |
864 | | fr_sbuff_t *in, fr_sbuff_term_t const *tt, |
865 | | bool internal, bool foreign) |
866 | | CC_HINT(nonnull(2, 4)); |
867 | | |
868 | | fr_dict_attr_t const *fr_dict_attr_search_by_qualified_oid(fr_dict_attr_err_t *err, |
869 | | fr_dict_t const *dict_def, char const *attr, |
870 | | bool internal, bool foreign) |
871 | | CC_HINT(nonnull(3)); |
872 | | |
873 | | fr_slen_t fr_dict_attr_search_by_oid_substr(fr_dict_attr_err_t *err, fr_dict_attr_t const **out, |
874 | | fr_dict_t const *dict_def, |
875 | | fr_sbuff_t *in, fr_sbuff_term_t const *tt, |
876 | | bool internal, bool foreign) |
877 | | CC_HINT(nonnull(2, 4)); |
878 | | |
879 | | fr_slen_t fr_dict_attr_by_name_substr(fr_dict_attr_err_t *err, fr_dict_attr_t const **out, |
880 | | fr_dict_attr_t const *parent, |
881 | | fr_sbuff_t *name, fr_sbuff_term_t const *tt) |
882 | | CC_HINT(nonnull(2,3,4)); |
883 | | |
884 | | fr_dict_attr_t const *fr_dict_attr_by_name(fr_dict_attr_err_t *err, fr_dict_attr_t const *parent, |
885 | | char const *attr) |
886 | | CC_HINT(nonnull(2,3)); |
887 | | |
888 | | fr_dict_attr_t const *fr_dict_attr_child_by_num(fr_dict_attr_t const *parent, unsigned int attr); |
889 | | |
890 | | typedef fr_hash_iter_t fr_dict_enum_iter_t; /* Alias this in case we want to change it in future */ |
891 | | |
892 | | fr_dict_enum_value_t const *fr_dict_enum_iter_init(fr_dict_attr_t const *da, fr_dict_enum_iter_t *iter); |
893 | | |
894 | | fr_dict_enum_value_t const *fr_dict_enum_iter_next(fr_dict_attr_t const *da, fr_dict_enum_iter_t *iter); |
895 | | |
896 | | fr_dict_enum_value_t const *fr_dict_enum_by_value(fr_dict_attr_t const *da, fr_value_box_t const *value); |
897 | | |
898 | | char const *fr_dict_enum_name_by_value(fr_dict_attr_t const *da, fr_value_box_t const *value); |
899 | | |
900 | | fr_dict_enum_value_t const *fr_dict_enum_by_name(fr_dict_attr_t const *da, char const *name, ssize_t len); |
901 | | |
902 | | fr_slen_t fr_dict_enum_by_name_substr(fr_dict_enum_value_t **out, fr_dict_attr_t const *da, fr_sbuff_t *in); |
903 | | |
904 | | fr_slen_t fr_dict_enum_name_from_substr(fr_sbuff_t *out, fr_sbuff_err_t *err, |
905 | | fr_sbuff_t *in, fr_sbuff_term_t const *tt); |
906 | | |
907 | | static inline fr_slen_t fr_dict_enum_name_afrom_substr(TALLOC_CTX *ctx, char **out, fr_sbuff_err_t *err, |
908 | | fr_sbuff_t *in, fr_sbuff_term_t const *tt) |
909 | 254 | SBUFF_OUT_TALLOC_FUNC_NO_LEN_ERR_DEF(fr_dict_enum_name_from_substr, err, in, tt) |
910 | | /** @} */ |
911 | | |
912 | | /** @name Dictionary and protocol loading |
913 | | * |
914 | | * @{ |
915 | | */ |
916 | | int fr_dict_internal_afrom_file(fr_dict_t **out, char const *dict_subdir, |
917 | | char const *dependent) CC_HINT(nonnull(1,3)); |
918 | | |
919 | | int fr_dict_protocol_afrom_file(fr_dict_t **out, char const *proto_name, char const *proto_dir, |
920 | | char const *dependent) CC_HINT(nonnull(1,2,4)); |
921 | | |
922 | | fr_dict_t *fr_dict_protocol_alloc(fr_dict_t const *parent); |
923 | | |
924 | | int fr_dict_protocol_reference(fr_dict_attr_t const **da_p, fr_dict_attr_t const *root, fr_sbuff_t *in) CC_HINT(nonnull); |
925 | | |
926 | | int fr_dict_read(fr_dict_t *dict, char const *dict_dir, char const *filename) CC_HINT(nonnull(3)); |
927 | | |
928 | | bool fr_dict_filename_loaded(fr_dict_t const *dict, char const *dict_dir, char const *filename) CC_HINT(nonnull(2,3)); |
929 | | /** @} */ |
930 | | |
931 | | /** @name Autoloader interface |
932 | | * |
933 | | * @{ |
934 | | */ |
935 | | int fr_dict_enum_autoload(fr_dict_enum_autoload_t const *to_load) CC_HINT(nonnull); |
936 | | |
937 | | int fr_dict_attr_autoload(fr_dict_attr_autoload_t const *to_load) CC_HINT(nonnull); |
938 | | |
939 | 794 | #define fr_dict_autoload(_to_load) _fr_dict_autoload(_to_load, __FILE__) |
940 | | int _fr_dict_autoload(fr_dict_autoload_t const *to_load, char const *dependent); |
941 | | |
942 | 794 | #define fr_dict_autofree(_to_free) _fr_dict_autofree(_to_free, __FILE__) |
943 | | int _fr_dict_autofree(fr_dict_autoload_t const *to_free, char const *dependent); |
944 | | |
945 | 0 | #define fr_dict_autoload_talloc(_ctx, _dict_out, _proto) _fr_dict_autoload_talloc(_ctx, _dict_out, _proto, __FILE__) |
946 | | fr_dict_autoload_talloc_t *_fr_dict_autoload_talloc(TALLOC_CTX *ctx, fr_dict_t const **out, char const *proto, char const *dependent); |
947 | | |
948 | | int fr_dl_dict_enum_autoload(dl_t const *module, void *symbol, void *uctx) CC_HINT(nonnull(1,2)); |
949 | | |
950 | | int fr_dl_dict_attr_autoload(dl_t const *module, void *symbol, void *uctx) CC_HINT(nonnull(1,2)); |
951 | | |
952 | | int fr_dl_dict_autoload(dl_t const *module, void *symbol, void *uctx) CC_HINT(nonnull(1,2)); |
953 | | |
954 | | void fr_dl_dict_autofree(dl_t const *module, void *symbol, void *uctx) CC_HINT(nonnull(1,2)); |
955 | | /** @} */ |
956 | | |
957 | | /** @name Allocating and freeing |
958 | | * |
959 | | * @{ |
960 | | */ |
961 | | fr_dict_t *fr_dict_alloc(char const *proto_name, unsigned int proto_number) CC_HINT(nonnull); |
962 | | |
963 | | int fr_dict_dependent_add(fr_dict_t const *dict, char const *dependent) CC_HINT(nonnull); |
964 | | |
965 | | int fr_dict_free(fr_dict_t **dict, char const *dependent) CC_HINT(nonnull); |
966 | | |
967 | | int fr_dict_const_free(fr_dict_t const **dict, char const *dependent) CC_HINT(nonnull); |
968 | | /** @} */ |
969 | | |
970 | | /** @name Global dictionary management |
971 | | * |
972 | | * @{ |
973 | | */ |
974 | | fr_dict_gctx_t *fr_dict_global_ctx_init(TALLOC_CTX *ctx, bool free_at_exit, char const *dict_dir) CC_HINT(nonnull(3)); |
975 | | |
976 | | void fr_dict_global_ctx_perm_check(fr_dict_gctx_t *gctx, bool enable) CC_HINT(nonnull); |
977 | | |
978 | | void fr_dict_global_ctx_set(fr_dict_gctx_t const *gctx) CC_HINT(nonnull); |
979 | | |
980 | | int fr_dict_global_ctx_free(fr_dict_gctx_t const *gctx) CC_HINT(nonnull); |
981 | | |
982 | | int fr_dict_global_ctx_dir_set(char const *dict_dir) CC_HINT(nonnull); |
983 | | |
984 | | void fr_dict_global_ctx_read_only(void); |
985 | | |
986 | | void fr_dict_gctx_debug(FILE *fp, fr_dict_gctx_t const *gctx) CC_HINT(nonnull(1)); |
987 | | |
988 | | char const *fr_dict_global_ctx_dir(void); |
989 | | |
990 | | typedef struct fr_hash_iter_s fr_dict_global_ctx_iter_t; |
991 | | |
992 | | fr_dict_t *fr_dict_global_ctx_iter_init(fr_dict_global_ctx_iter_t *iter) CC_HINT(nonnull); |
993 | | |
994 | | fr_dict_t *fr_dict_global_ctx_iter_next(fr_dict_global_ctx_iter_t *iter) CC_HINT(nonnull); |
995 | | |
996 | | fr_dict_t *fr_dict_unconst(fr_dict_t const *dict) CC_HINT(nonnull); |
997 | | |
998 | | fr_dict_attr_t *fr_dict_attr_unconst(fr_dict_attr_t const *da) CC_HINT(nonnull); |
999 | | |
1000 | | fr_dict_t const *fr_dict_internal(void); |
1001 | | |
1002 | | /** @} */ |
1003 | | |
1004 | | /** @name Dictionary testing and validation |
1005 | | * |
1006 | | * @{ |
1007 | | */ |
1008 | | void dict_dctx_debug(dict_tokenize_ctx_t *dctx) CC_HINT(nonnull); |
1009 | | |
1010 | | int fr_dict_parse_str(fr_dict_t *dict, char const *str, |
1011 | | fr_dict_attr_t const *parent) CC_HINT(nonnull(2,3)); |
1012 | | |
1013 | | ssize_t fr_dict_valid_name(char const *name, ssize_t len) CC_HINT(nonnull); |
1014 | | |
1015 | | ssize_t fr_dict_valid_oid_str(char const *name, ssize_t len) CC_HINT(nonnull); |
1016 | | |
1017 | | fr_dict_attr_t const *fr_dict_attr_iterate_children(fr_dict_attr_t const *parent, |
1018 | | fr_dict_attr_t const **prev) CC_HINT(nonnull); |
1019 | | |
1020 | | typedef int (*fr_dict_walk_t)(fr_dict_attr_t const *da, void *uctx); |
1021 | | |
1022 | | int fr_dict_walk(fr_dict_attr_t const *da, fr_dict_walk_t callback, void *uctx) CC_HINT(nonnull(1,2)); |
1023 | | |
1024 | | void fr_dict_attr_verify(char const *file, int line, fr_dict_attr_t const *da) CC_HINT(nonnull); |
1025 | | char const *fr_dict_attr_filename(fr_dict_attr_t const *da) CC_HINT(nonnull); |
1026 | | /** @} */ |
1027 | | |
1028 | | static_assert(FR_DICT_MAX_TLV_STACK <= UINT8_MAX, "FR_DICT_MAX_TLV_STACK is too large"); |
1029 | | static_assert(sizeof(fr_dict_attr_t) <= 64, "fr_dict_attr_t grew past one 64 byte x86 cache line"); |
1030 | | static_assert(FR_DICT_ATTR_MAX_NAME_LEN <= UINT8_MAX, "FR_DICT_ATTR_MAX_NAME_LEN is too large"); |
1031 | | |
1032 | | #undef _CONST |
1033 | | |
1034 | | #ifdef __cplusplus |
1035 | | } |
1036 | | #endif |