Coverage Report

Created: 2026-11-12 06:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
}
base.c:dict_flag_abinary
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
}
base.c:dict_flag_concat
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
}
base.c:dict_flag_has_tag
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
}
base.c:dict_flag_exists
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