ldns(3)
π ldns β the ldns(3) page, but make it make sense π
okay bestie, sit down, grab a boba, because we're doing library functions manual energy today. this is ldns(3), and it's all about data structures for validation chains. yes, chains. like the ones that hold your DNSSEC receipts together. let's go π«Ά
β¨ NAME β¨
ldns_dnssec_data_chain, ldns_dnssec_data_chain_struct, ldns_dnssec_trust_tree β data structures for validation chains. that's the whole vibe. that's the assignment. π
πΈ SYNOPSIS πΈ
#include <stdint.h>
#include <stdbool.h>
#include <ldns/ldns.h>
ldns_dnssec_data_chain_struct();
like, include the headers, call the thing, live your truth. π
π¦ DESCRIPTION π¦
π ldns_dnssec_data_chain
bestie, this is the chain structure that contains all DNSSEC data needed to verify an rrset. it's literally the little briefcase of proof. π§³β¨
struct ldns_dnssec_data_chain_struct
{
ldns_rr_list *rrset;
ldns_rr_list *signatures;
ldns_rr_type parent_type;
ldns_dnssec_data_chain *parent;
ldns_pkt_rcode packet_rcode;
ldns_rr_type packet_qtype;
bool packet_nodata;
};
typedef struct ldns_dnssec_data_chain_struct
ldns_dnssec_data_chain;
no notes, she's perfect, she's doing her job. π
π
ldns_dnssec_data_chain_struct()
yeah. that's it. that's the entry. iconic minimalism. β¨
π ldns_dnssec_trust_tree
okay so this one? this is the tree structure that contains the relation of DNSSEC data, and their cryptographic status. very main character. very "let me trace your whole lineage". π³π«
This tree is derived from a data_chain, and can be used to look whether there is a connection between an RRSET and a trusted key.
π¨ HUGE caveat, no cap: the tree only contains pointers to the data_chain, and therefore one should never free() the data_chain when there is still a trust tree derived from that chain. like, do NOT do it. that's a use-after-free waiting to happen and she does not deserve that. π
Example tree:
key key key
\ | /
\ | /
\ | /
ds
|
key
|
key
|
rr
For each signature there is a parent; if the parent pointer is null, it couldn't be found and there was no denial; otherwise is a tree which contains either a DNSKEY, a DS, or a NSEC rr. π§
struct ldns_dnssec_trust_tree_struct
{
ldns_rr *rr;
/* the complete rrset this rr was in */
ldns_rr_list *rrset;
ldns_dnssec_trust_tree
*parents[LDNS_DNSSEC_TRUST_TREE_MAX_PARENTS];
ldns_status
parent_status[LDNS_DNSSEC_TRUST_TREE_MAX_PARENTS];
/** for debugging, add signatures too (you might want
those if they contain errors) */
ldns_rr
*parent_signature[LDNS_DNSSEC_TRUST_TREE_MAX_PARENTS];
size_t parent_count;
};
typedef struct ldns_dnssec_trust_tree_struct
ldns_dnssec_trust_tree;
slay. obsessed. the parent_signature field is there for debugging, and lowkey you might want those if they contain errors, so keep that in mind. π₯
π AUTHOR π
The ldns team at NLnet Labs. legends only, fr fr. π
π REPORTING BUGS π
Please report bugs to dns-team@nlnetlabs.nl or on GitHub at https://github.com/NLnetLabs/ldns/issues. we love a good bug report, it's giving community care. π«Ά
π COPYRIGHT π
Copyright (c) 2004 - 2006 NLnet Labs.
Licensed under the BSD License. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
read that again bestie: NO warranty. none. zero. nada. she is not liable for your 3am DNS adventures. π
β SEE ALSO β
ldns_dnssec_data_chain_newldns_dnssec_trust_tree_newldns_dnssec_verify_denial
And perldoc Net::DNS, RFC1034, RFC1035, RFC4033, RFC4034 and RFC4035. the classics. the reading list. πβ¨
π REMARKS π
This manpage was automatically generated from the ldns source code. yes, a robot wrote the original. she's doing her best. be nice. π€π
and that's the whole page, bestie! π this little cutie comes from ldns(3), dated 30 May 2006 β yeah, she's vintage, she's a classic, she predates half the internet drama we know today. anyway, go forth and verify some rrsets. periodt. ππ¦π
π¦ where this page comes from
- alpine 3.22: ldns-doc 1.8.4-r0 Β· BSD-3-Clause
- alpine 3.23: ldns-doc 1.8.4-r1 Β· BSD-3-Clause
- alpine 3.24: ldns-doc 1.8.4-r1 Β· BSD-3-Clause
- arch rolling: ldns 1.9.2-1 Β· custom:BSD
- debian trixie: libldns-dev 1.8.4-2+b1
- fedora 43: ldns-devel 1.8.4-8.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.8.4-8.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.9.2-1.fc43 Β· BSD-3-Clause
- fedora 43: ldns-devel 1.9.2-1.fc43 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.0-2.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.0-2.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.2-1.fc44 Β· BSD-3-Clause
- fedora 44: ldns-devel 1.9.2-1.fc44 Β· BSD-3-Clause
- nixos 26.05: ldns 1.9.2
- nixpkgs unstable: ldns 1.9.2
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- opensuse-leap 16.0: ldns-devel 1.8.4-160000.3.1 Β· BSD-3-Clause
- ubuntu questing: libldns-dev 1.8.4-2build1
- ubuntu resolute: libldns-dev 1.8.4-2build3
- ubuntu stonking: libldns-dev 1.9.2-1ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms