ldns(3)

πŸ“¦
version 1.9.2 Β· 2 versions
, in alpine 3.22, alpine 3.23, alpine 3.24, arch rolling, debian trixie, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– 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 (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_new
  • ldns_dnssec_trust_tree_new
  • ldns_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. πŸŒˆπŸ¦‹πŸ’œ