Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
packed_rrset.h
Go to the documentation of this file.
1
/*
2
* util/data/packed_rrset.h - data storage for a set of resource records.
3
*
4
* Copyright (c) 2007, NLnet Labs. All rights reserved.
5
*
6
* This software is open source.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
*
12
* Redistributions of source code must retain the above copyright notice,
13
* this list of conditions and the following disclaimer.
14
*
15
* Redistributions in binary form must reproduce the above copyright notice,
16
* this list of conditions and the following disclaimer in the documentation
17
* and/or other materials provided with the distribution.
18
*
19
* Neither the name of the NLNET LABS nor the names of its contributors may
20
* be used to endorse or promote products derived from this software without
21
* specific prior written permission.
22
*
23
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
29
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
*/
35
41
42
#ifndef UTIL_DATA_PACKED_RRSET_H
43
#define UTIL_DATA_PACKED_RRSET_H
44
#include "
util/storage/lruhash.h
"
45
struct
alloc_cache
;
46
struct
regional
;
47
50
typedef
uint64_t
rrset_id_type
;
51
53
#define PACKED_RRSET_NSEC_AT_APEX 0x1
55
#define PACKED_RRSET_PARENT_SIDE 0x2
59
#define PACKED_RRSET_SOA_NEG 0x4
63
#define PACKED_RRSET_FIXEDTTL 0x80000000
64
69
#define RR_COUNT_MAX 0xffffff
70
74
struct
packed_rrset_key
{
80
uint8_t
*
dname
;
84
size_t
dname_len
;
92
uint32_t
flags
;
94
uint16_t
type
;
96
uint16_t
rrset_class
;
97
};
98
107
struct
ub_packed_rrset_key
{
113
struct
lruhash_entry
entry
;
122
rrset_id_type
id
;
124
struct
packed_rrset_key
rk
;
125
};
126
140
enum
rrset_trust
{
142
rrset_trust_none
= 0,
144
rrset_trust_add_noAA
,
146
rrset_trust_auth_noAA
,
148
rrset_trust_add_AA
,
151
rrset_trust_nonauth_ans_AA
,
153
rrset_trust_ans_noAA
,
155
rrset_trust_glue
,
157
rrset_trust_auth_AA
,
160
rrset_trust_ans_AA
,
162
rrset_trust_sec_noglue
,
164
rrset_trust_prim_noglue
,
166
rrset_trust_validated
,
169
rrset_trust_ultimate
170
};
171
176
enum
sec_status
{
178
sec_status_unchecked
= 0,
181
sec_status_bogus
,
185
sec_status_indeterminate
,
189
sec_status_insecure
,
193
sec_status_secure_sentinel_fail
,
196
sec_status_secure
197
};
198
235
struct
packed_rrset_data
{
238
time_t
ttl
;
240
size_t
count
;
242
size_t
rrsig_count
;
244
enum
rrset_trust
trust
;
246
enum
sec_status
security
;
248
size_t
*
rr_len
;
250
time_t *
rr_ttl
;
258
uint8_t
**
rr_data
;
259
};
260
266
struct
packed_rrset
{
268
struct
packed_rrset_key
*
k
;
270
struct
packed_rrset_data
*
d
;
271
};
272
276
struct
packed_rrset_list
{
278
struct
packed_rrset_list
*
next
;
280
struct
packed_rrset
rrset
;
281
};
282
289
void
ub_packed_rrset_parsedelete
(
struct
ub_packed_rrset_key
* pkey,
290
struct
alloc_cache
* alloc);
291
297
size_t
packed_rrset_sizeof
(
struct
packed_rrset_data
* data);
298
304
time_t
ub_packed_rrset_ttl
(
struct
ub_packed_rrset_key
*
key
);
305
312
size_t
ub_rrset_sizefunc
(
void
*
key
,
void
* data);
313
320
int
ub_rrset_compare
(
void
* k1,
void
* k2);
321
329
int
rrsetdata_equal
(
struct
packed_rrset_data
* d1,
struct
packed_rrset_data
* d2);
330
338
void
ub_rrset_key_delete
(
void
*
key
,
void
* userdata);
339
345
void
rrset_data_delete
(
void
* data,
void
* userdata);
346
352
hashvalue_type
rrset_key_hash
(
struct
packed_rrset_key
*
key
);
353
359
void
packed_rrset_ptr_fixup
(
struct
packed_rrset_data
* data);
360
366
void
packed_rrset_ttl_add
(
struct
packed_rrset_data
* data, time_t add);
367
379
void
get_cname_target
(
struct
ub_packed_rrset_key
* rrset,
uint8_t
** dname,
380
size_t
* dname_len);
381
387
const
char
*
rrset_trust_to_string
(
enum
rrset_trust
s);
388
394
const
char
*
sec_status_to_string
(
enum
sec_status
s);
395
402
void
log_rrset_key
(
enum
verbosity_value
v,
const
char
* str,
403
struct
ub_packed_rrset_key
* rrset);
404
414
int
packed_rr_to_string
(
struct
ub_packed_rrset_key
* rrset,
size_t
i,
415
time_t now,
char
*
dest
,
size_t
dest_len);
416
423
void
log_packed_rrset
(
enum
verbosity_value
v,
const
char
* str,
424
struct
ub_packed_rrset_key
* rrset);
425
434
struct
ub_packed_rrset_key
*
packed_rrset_copy_region
(
435
struct
ub_packed_rrset_key
*
key
,
struct
regional
* region,
436
time_t now);
437
445
struct
ub_packed_rrset_key
*
packed_rrset_copy_alloc
(
446
struct
ub_packed_rrset_key
*
key
,
struct
alloc_cache
* alloc,
447
time_t now);
448
449
#endif
/* UTIL_DATA_PACKED_RRSET_H */
key
const char * key
Definition
hmac_keccak.cpp:39
verbosity_value
verbosity_value
Definition
log.h:49
lruhash.h
hashvalue_type
uint32_t hashvalue_type
Definition
lruhash.h:119
ub_rrset_sizefunc
size_t ub_rrset_sizefunc(void *key, void *data)
packed_rr_to_string
int packed_rr_to_string(struct ub_packed_rrset_key *rrset, size_t i, time_t now, char *dest, size_t dest_len)
rrset_key_hash
hashvalue_type rrset_key_hash(struct packed_rrset_key *key)
packed_rrset_copy_alloc
struct ub_packed_rrset_key * packed_rrset_copy_alloc(struct ub_packed_rrset_key *key, struct alloc_cache *alloc, time_t now)
packed_rrset_ptr_fixup
void packed_rrset_ptr_fixup(struct packed_rrset_data *data)
ub_rrset_key_delete
void ub_rrset_key_delete(void *key, void *userdata)
log_rrset_key
void log_rrset_key(enum verbosity_value v, const char *str, struct ub_packed_rrset_key *rrset)
ub_packed_rrset_parsedelete
void ub_packed_rrset_parsedelete(struct ub_packed_rrset_key *pkey, struct alloc_cache *alloc)
get_cname_target
void get_cname_target(struct ub_packed_rrset_key *rrset, uint8_t **dname, size_t *dname_len)
ub_rrset_compare
int ub_rrset_compare(void *k1, void *k2)
rrset_trust_to_string
const char * rrset_trust_to_string(enum rrset_trust s)
rrset_trust
rrset_trust
Definition
packed_rrset.h:140
rrset_trust_nonauth_ans_AA
@ rrset_trust_nonauth_ans_AA
Definition
packed_rrset.h:151
rrset_trust_glue
@ rrset_trust_glue
Definition
packed_rrset.h:155
rrset_trust_ans_AA
@ rrset_trust_ans_AA
Definition
packed_rrset.h:160
rrset_trust_prim_noglue
@ rrset_trust_prim_noglue
Definition
packed_rrset.h:164
rrset_trust_none
@ rrset_trust_none
Definition
packed_rrset.h:142
rrset_trust_sec_noglue
@ rrset_trust_sec_noglue
Definition
packed_rrset.h:162
rrset_trust_ans_noAA
@ rrset_trust_ans_noAA
Definition
packed_rrset.h:153
rrset_trust_add_AA
@ rrset_trust_add_AA
Definition
packed_rrset.h:148
rrset_trust_validated
@ rrset_trust_validated
Definition
packed_rrset.h:166
rrset_trust_ultimate
@ rrset_trust_ultimate
Definition
packed_rrset.h:169
rrset_trust_auth_AA
@ rrset_trust_auth_AA
Definition
packed_rrset.h:157
rrset_trust_add_noAA
@ rrset_trust_add_noAA
Definition
packed_rrset.h:144
rrset_trust_auth_noAA
@ rrset_trust_auth_noAA
Definition
packed_rrset.h:146
rrsetdata_equal
int rrsetdata_equal(struct packed_rrset_data *d1, struct packed_rrset_data *d2)
sec_status_to_string
const char * sec_status_to_string(enum sec_status s)
packed_rrset_sizeof
size_t packed_rrset_sizeof(struct packed_rrset_data *data)
ub_packed_rrset_ttl
time_t ub_packed_rrset_ttl(struct ub_packed_rrset_key *key)
packed_rrset_ttl_add
void packed_rrset_ttl_add(struct packed_rrset_data *data, time_t add)
rrset_id_type
uint64_t rrset_id_type
Definition
packed_rrset.h:50
rrset_data_delete
void rrset_data_delete(void *data, void *userdata)
sec_status
sec_status
Definition
packed_rrset.h:176
sec_status_bogus
@ sec_status_bogus
Definition
packed_rrset.h:181
sec_status_secure
@ sec_status_secure
Definition
packed_rrset.h:196
sec_status_indeterminate
@ sec_status_indeterminate
Definition
packed_rrset.h:185
sec_status_secure_sentinel_fail
@ sec_status_secure_sentinel_fail
Definition
packed_rrset.h:193
sec_status_insecure
@ sec_status_insecure
Definition
packed_rrset.h:189
sec_status_unchecked
@ sec_status_unchecked
Definition
packed_rrset.h:178
packed_rrset_copy_region
struct ub_packed_rrset_key * packed_rrset_copy_region(struct ub_packed_rrset_key *key, struct regional *region, time_t now)
log_packed_rrset
void log_packed_rrset(enum verbosity_value v, const char *str, struct ub_packed_rrset_key *rrset)
dest
CXA_THROW_INFO_T void(* dest)(void *))
Definition
stack_trace.cpp:91
uint16_t
unsigned short uint16_t
Definition
stdint.h:125
uint32_t
unsigned int uint32_t
Definition
stdint.h:126
uint8_t
unsigned char uint8_t
Definition
stdint.h:124
uint64_t
unsigned __int64 uint64_t
Definition
stdint.h:136
alloc_cache
Definition
alloc.h:72
lruhash_entry
Definition
lruhash.h:203
packed_rrset_data
Definition
packed_rrset.h:235
packed_rrset_data::rr_ttl
time_t * rr_ttl
Definition
packed_rrset.h:250
packed_rrset_data::ttl
time_t ttl
Definition
packed_rrset.h:238
packed_rrset_data::security
enum sec_status security
Definition
packed_rrset.h:246
packed_rrset_data::rr_len
size_t * rr_len
Definition
packed_rrset.h:248
packed_rrset_data::rr_data
uint8_t ** rr_data
Definition
packed_rrset.h:258
packed_rrset_data::count
size_t count
Definition
packed_rrset.h:240
packed_rrset_data::trust
enum rrset_trust trust
Definition
packed_rrset.h:244
packed_rrset_data::rrsig_count
size_t rrsig_count
Definition
packed_rrset.h:242
packed_rrset_key
Definition
packed_rrset.h:74
packed_rrset_key::type
uint16_t type
Definition
packed_rrset.h:94
packed_rrset_key::flags
uint32_t flags
Definition
packed_rrset.h:92
packed_rrset_key::dname_len
size_t dname_len
Definition
packed_rrset.h:84
packed_rrset_key::dname
uint8_t * dname
Definition
packed_rrset.h:80
packed_rrset_key::rrset_class
uint16_t rrset_class
Definition
packed_rrset.h:96
packed_rrset_list
Definition
packed_rrset.h:276
packed_rrset_list::rrset
struct packed_rrset rrset
Definition
packed_rrset.h:280
packed_rrset_list::next
struct packed_rrset_list * next
Definition
packed_rrset.h:278
packed_rrset
Definition
packed_rrset.h:266
packed_rrset::k
struct packed_rrset_key * k
Definition
packed_rrset.h:268
packed_rrset::d
struct packed_rrset_data * d
Definition
packed_rrset.h:270
regional
Definition
regional.h:60
ub_packed_rrset_key
Definition
packed_rrset.h:107
ub_packed_rrset_key::id
rrset_id_type id
Definition
packed_rrset.h:122
ub_packed_rrset_key::entry
struct lruhash_entry entry
Definition
packed_rrset.h:113
ub_packed_rrset_key::rk
struct packed_rrset_key rk
Definition
packed_rrset.h:124
external
unbound
util
data
packed_rrset.h
Generated on
for Electroneum by
1.17.0