%PDF- %PDF-
Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/cares/src/lib/ |
Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/cares/src/lib/ares_dns_private.h |
/* MIT License * * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * SPDX-License-Identifier: MIT */ #ifndef __ARES_DNS_PRIVATE_H #define __ARES_DNS_PRIVATE_H ares_bool_t ares_dns_rec_type_allow_name_compression(ares_dns_rec_type_t type); ares_bool_t ares_dns_opcode_isvalid(ares_dns_opcode_t opcode); ares_bool_t ares_dns_rcode_isvalid(ares_dns_rcode_t rcode); ares_bool_t ares_dns_flags_arevalid(unsigned short flags); ares_bool_t ares_dns_rec_type_isvalid(ares_dns_rec_type_t type, ares_bool_t is_query); ares_bool_t ares_dns_class_isvalid(ares_dns_class_t qclass, ares_bool_t is_query); ares_bool_t ares_dns_section_isvalid(ares_dns_section_t sect); ares_status_t ares_dns_rr_set_str_own(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, char *val); ares_status_t ares_dns_rr_set_bin_own(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, unsigned char *val, size_t len); ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, unsigned short opt, unsigned char *val, size_t val_len); ares_status_t ares_dns_record_rr_prealloc(ares_dns_record_t *dnsrec, ares_dns_section_t sect, size_t cnt); ares_bool_t ares_dns_has_opt_rr(const ares_dns_record_t *rec); void ares_dns_record_write_ttl_decrement(ares_dns_record_t *dnsrec, unsigned int ttl_decrement); struct ares_dns_qd { char *name; ares_dns_rec_type_t qtype; ares_dns_class_t qclass; }; typedef struct { struct in_addr addr; } ares__dns_a_t; typedef struct { char *nsdname; } ares__dns_ns_t; typedef struct { char *cname; } ares__dns_cname_t; typedef struct { char *mname; char *rname; unsigned int serial; unsigned int refresh; unsigned int retry; unsigned int expire; unsigned int minimum; } ares__dns_soa_t; typedef struct { char *dname; } ares__dns_ptr_t; typedef struct { char *cpu; char *os; } ares__dns_hinfo_t; typedef struct { unsigned short preference; char *exchange; } ares__dns_mx_t; typedef struct { char *data; size_t data_len; } ares__dns_txt_t; typedef struct { struct ares_in6_addr addr; } ares__dns_aaaa_t; typedef struct { unsigned short priority; unsigned short weight; unsigned short port; char *target; } ares__dns_srv_t; typedef struct { unsigned short order; unsigned short preference; char *flags; char *services; char *regexp; char *replacement; } ares__dns_naptr_t; typedef struct { unsigned short opt; unsigned char *val; size_t val_len; } ares__dns_optval_t; typedef struct { ares__dns_optval_t *optval; /*!< Attribute/value pairs */ size_t cnt; /*!< Count of Attribute/Value pairs */ size_t alloc; /*!< Allocated count of attribute/value * pairs */ } ares__dns_options_t; typedef struct { unsigned short udp_size; /*!< taken from class */ unsigned char version; /*!< taken from bits 8-16 of ttl */ unsigned short flags; /*!< Flags, remaining 16 bits, though only * 1 currently defined */ ares__dns_options_t *options; /*!< Attribute/Value pairs */ } ares__dns_opt_t; typedef struct { unsigned char cert_usage; unsigned char selector; unsigned char match; unsigned char *data; size_t data_len; } ares__dns_tlsa_t; typedef struct { unsigned short priority; char *target; ares__dns_options_t *params; } ares__dns_svcb_t; typedef struct { unsigned short priority; unsigned short weight; char *target; } ares__dns_uri_t; typedef struct { unsigned char critical; char *tag; unsigned char *value; size_t value_len; } ares__dns_caa_t; /*! Raw, unparsed RR data */ typedef struct { unsigned short type; /*!< Not ares_rec_type_t because it likely isn't one * of those values since it wasn't parsed */ unsigned char *data; /*!< Raw RR data */ size_t length; /*!< Length of raw RR data */ } ares__dns_raw_rr_t; /*! DNS RR data structure */ struct ares_dns_rr { ares_dns_record_t *parent; char *name; ares_dns_rec_type_t type; ares_dns_class_t rclass; unsigned int ttl; union { ares__dns_a_t a; ares__dns_ns_t ns; ares__dns_cname_t cname; ares__dns_soa_t soa; ares__dns_ptr_t ptr; ares__dns_hinfo_t hinfo; ares__dns_mx_t mx; ares__dns_txt_t txt; ares__dns_aaaa_t aaaa; ares__dns_srv_t srv; ares__dns_naptr_t naptr; ares__dns_opt_t opt; ares__dns_tlsa_t tlsa; ares__dns_svcb_t svcb; ares__dns_svcb_t https; /*!< https is a type of svcb, so this is right */ ares__dns_uri_t uri; ares__dns_caa_t caa; ares__dns_raw_rr_t raw_rr; } r; }; /*! DNS data structure */ struct ares_dns_record { unsigned short id; /*!< DNS query id */ unsigned short flags; /*!< One or more ares_dns_flags_t */ ares_dns_opcode_t opcode; /*!< DNS Opcode */ ares_dns_rcode_t rcode; /*!< DNS RCODE */ unsigned short raw_rcode; /*!< Raw rcode, used to ultimately form real * rcode after reading OPT record if it * exists */ unsigned int ttl_decrement; /*!< Special case to apply to writing out * this record, where it will decrement * the ttl of any resource records by * this amount. Used for cache */ ares_dns_qd_t *qd; size_t qdcount; size_t qdalloc; ares_dns_rr_t *an; size_t ancount; size_t analloc; ares_dns_rr_t *ns; size_t nscount; size_t nsalloc; ares_dns_rr_t *ar; size_t arcount; size_t aralloc; }; #endif