resolved-dns-rr.h revision af22c65b272f0e7a1c0518c222749f3c09d05438
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering This file is part of systemd.
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering Copyright 2014 Lennart Poettering
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering systemd is free software; you can redistribute it and/or modify it
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering under the terms of the GNU Lesser General Public License as published by
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering (at your option) any later version.
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering systemd is distributed in the hope that it will be useful, but
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering Lesser General Public License for more details.
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering You should have received a copy of the GNU Lesser General Public License
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
f48e75cb9a8112d35855c44a156934f2ee0edb2eLennart Poetteringtypedef struct DnsResourceKey DnsResourceKey;
785890acf6d629ff881a1f065f431df1b7fc8c7aLennart Poetteringtypedef struct DnsResourceRecord DnsResourceRecord;
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen/* DNSKEY RR flags */
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering#define DNSKEY_FLAG_ZONE_KEY (UINT16_C(1) << 8)
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering#define DNSKEY_FLAG_SEP (UINT16_C(1) << 0)
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering/* mDNS RR flags */
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen#define MDNS_RR_CACHE_FLUSH (UINT16_C(1) << 15)
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering/* DNSSEC algorithm identifiers, see
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * http://tools.ietf.org/html/rfc4034#appendix-A.1 and
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poettering * https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml */
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering DNSSEC_ALGORITHM_RSASHA256 = 8, /* RFC 5702 */
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering DNSSEC_ALGORITHM_RSASHA512 = 10, /* RFC 5702 */
e56056e93d33619a3acf13e483900b4f8938228fThomas Hindoe Paaboel Andersen _DNSSEC_ALGORITHM_MAX_DEFINED
d21ed1ead18d16d35c30299a69d3366847f8a039Lennart Poettering/* DNSSEC digest identifiers, see
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering * https://www.iana.org/assignments/ds-rr-types/ds-rr-types.xhtml */
1ee306e1248866617c96ed9f4263f375588ad838Lennart Poettering char *_name; /* don't access directy, use DNS_RESOURCE_KEY_NAME()! */
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering/* Creates a temporary resource key. This is only useful to quickly
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen * look up something, without allocating a full DnsResourceKey object
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen * for it. Note that it is not OK to take references to this kind of
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom Gundersen * resource key object. */
56159e0d918e9a9be07988133bb2847779325de0Lennart Poettering ._name = (char*) n, \
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering /* https://tools.ietf.org/html/rfc4255#section-3.1 */
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering /* http://tools.ietf.org/html/rfc4034#section-2.1 */
10f9c75519671e7c7ab8993b54fe22da7c2d0c38Lennart Poettering /* http://tools.ietf.org/html/rfc4034#section-3.1 */
10f9c75519671e7c7ab8993b54fe22da7c2d0c38Lennart Poettering /* https://tools.ietf.org/html/rfc4034#section-4.1 */
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poetteringstatic inline const char* DNS_RESOURCE_KEY_NAME(const DnsResourceKey *key) {
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poettering return (char*) key + sizeof(DnsResourceKey);
10f9c75519671e7c7ab8993b54fe22da7c2d0c38Lennart PoetteringDnsResourceKey* dns_resource_key_new(uint16_t class, uint16_t type, const char *name);
8937e7b68940d0fa0d0aab90eb7425fa7dccebc9Lennart PoetteringDnsResourceKey* dns_resource_key_new_redirect(const DnsResourceKey *key, const DnsResourceRecord *cname);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poetteringint dns_resource_key_new_append_suffix(DnsResourceKey **ret, DnsResourceKey *key, char *name);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart PoetteringDnsResourceKey* dns_resource_key_new_consume(uint16_t class, uint16_t type, char *name);
8937e7b68940d0fa0d0aab90eb7425fa7dccebc9Lennart PoetteringDnsResourceKey* dns_resource_key_ref(DnsResourceKey *key);
10f9c75519671e7c7ab8993b54fe22da7c2d0c38Lennart PoetteringDnsResourceKey* dns_resource_key_unref(DnsResourceKey *key);
10f9c75519671e7c7ab8993b54fe22da7c2d0c38Lennart Poetteringbool dns_resource_key_is_address(const DnsResourceKey *key);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poetteringint dns_resource_key_equal(const DnsResourceKey *a, const DnsResourceKey *b);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poetteringint dns_resource_key_match_rr(const DnsResourceKey *key, DnsResourceRecord *rr, const char *search_domain);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poetteringint dns_resource_key_match_cname_or_dname(const DnsResourceKey *key, const DnsResourceKey *cname, const char *search_domain);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poetteringint dns_resource_key_match_soa(const DnsResourceKey *key, const DnsResourceKey *soa);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poetteringint dns_resource_key_to_string(const DnsResourceKey *key, char **ret);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(DnsResourceKey*, dns_resource_key_unref);
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart Poetteringstatic inline bool dns_key_is_shared(const DnsResourceKey *key) {
cd61c3bfd718fb398cc53ced906266a9297782c9Lennart PoetteringDnsResourceRecord* dns_resource_record_new(DnsResourceKey *key);
89f7c8465cd1ab37347dd0c15920bce31e8225dfLennart PoetteringDnsResourceRecord* dns_resource_record_new_full(uint16_t class, uint16_t type, const char *name);
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom GundersenDnsResourceRecord* dns_resource_record_ref(DnsResourceRecord *rr);
a1da85830bfaa77b9eb9c54693e5573559c97e50Tom GundersenDnsResourceRecord* dns_resource_record_unref(DnsResourceRecord *rr);
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringint dns_resource_record_new_reverse(DnsResourceRecord **ret, int family, const union in_addr_union *address, const char *name);
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringint dns_resource_record_new_address(DnsResourceRecord **ret, int family, const union in_addr_union *address, const char *name);
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringint dns_resource_record_equal(const DnsResourceRecord *a, const DnsResourceRecord *b);
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringconst char* dns_resource_record_to_string(DnsResourceRecord *rr);
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart PoetteringDEFINE_TRIVIAL_CLEANUP_FUNC(DnsResourceRecord*, dns_resource_record_unref);
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringint dns_resource_record_to_wire_format(DnsResourceRecord *rr, bool canonical);
d21ed1ead18d16d35c30299a69d3366847f8a039Lennart PoetteringDnsTxtItem *dns_txt_item_free_all(DnsTxtItem *i);
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringbool dns_txt_item_equal(DnsTxtItem *a, DnsTxtItem *b);
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringextern const struct hash_ops dns_resource_key_hash_ops;
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringconst char* dnssec_algorithm_to_string(int i) _const_;
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringint dnssec_algorithm_from_string(const char *s) _pure_;
aa1936ea1a89c2bb968ba33e3274898a4eeae771Lennart Poetteringconst char *dnssec_digest_to_string(int i) _const_;