tor-android/app/src/main/jni/pdnsd/src/rr_types.h

537 lines
16 KiB
C

/* This file was generated by running 'make_rr_types_h.pl rr_types.in'.
Modifications to this file may be lost the next time it is automatically
regenerated.
*/
/* rr_types.h - A header file with names & descriptions of
all rr types known to pdnsd
Copyright (C) 2000, 2001 Thomas Moestl
Copyright (C) 2007, 2010, 2011 Paul A. Rombouts
This file is part of the pdnsd package.
pdnsd is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
pdnsd is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with pdnsd; see the file COPYING. If not, see
<http://www.gnu.org/licenses/>.
*/
#ifndef _RR_TYPES_H_
#define _RR_TYPES_H_
#include <config.h>
#define T_MIN 1
#define T_A 1
#define T_NS 2
#define T_MD 3
#define T_MF 4
#define T_CNAME 5
#define T_SOA 6
#define T_MB 7
#define T_MG 8
#define T_MR 9
#define T_NULL 10
#define T_WKS 11
#define T_PTR 12
#define T_HINFO 13
#define T_MINFO 14
#define T_MX 15
#define T_TXT 16
#define T_RP 17
#define T_AFSDB 18
#define T_X25 19
#define T_ISDN 20
#define T_RT 21
#define T_NSAP 22
#define T_NSAP_PTR 23
#define T_SIG 24
#define T_KEY 25
#define T_PX 26
#define T_GPOS 27
#define T_AAAA 28
#define T_LOC 29
#define T_NXT 30
#define T_EID 31
#define T_NIMLOC 32
#define T_SRV 33
#define T_ATMA 34
#define T_NAPTR 35
#define T_KX 36
#define T_CERT 37
#define T_A6 38
#define T_DNAME 39
#define T_SINK 40
#define T_OPT 41
#define T_APL 42
#define T_DS 43
#define T_SSHFP 44
#define T_IPSECKEY 45
#define T_RRSIG 46
#define T_NSEC 47
#define T_DNSKEY 48
#define T_DHCID 49
#define T_NSEC3 50
#define T_NSEC3PARAM 51
#define T_HIP 55
#define T_NINFO 56
#define T_RKEY 57
#define T_TALINK 58
#define T_SPF 99
#define T_UINFO 100
#define T_UID 101
#define T_GID 102
#define T_UNSPEC 103
#define T_MAX 51
/* T_MAX - T_MIN + 1 */
#define T_NUM 51
/* Number of most frequently used rr types. */
#define NRRMU 8
/* Number of remaining rr types. */
#define NRREXT 39
/* NRRMU + NRREXT */
#define NRRTOT 47
/* Lookup table for converting rr type values to internally used indices. */
extern const unsigned short int rrlkuptab[T_NUM];
#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
const unsigned short int rrlkuptab[T_NUM] = {
0 /* A */,
1 /* NS */,
8 /* MD */,
9 /* MF */,
2 /* CNAME */,
3 /* SOA */,
10 /* MB */,
11 /* MG */,
12 /* MR */,
13 /* NULL */,
14 /* WKS */,
4 /* PTR */,
15 /* HINFO */,
16 /* MINFO */,
5 /* MX */,
6 /* TXT */,
17 /* RP */,
18 /* AFSDB */,
19 /* X25 */,
20 /* ISDN */,
21 /* RT */,
22 /* NSAP */,
23 /* NSAP_PTR */,
24 /* SIG */,
25 /* KEY */,
26 /* PX */,
27 /* GPOS */,
7 /* AAAA */,
28 /* LOC */,
29 /* NXT */,
30 /* EID */,
31 /* NIMLOC */,
32 /* SRV */,
33 /* ATMA */,
34 /* NAPTR */,
35 /* KX */,
36 /* CERT */,
47 /* A6 */,
48 /* DNAME */,
49 /* SINK */,
50 /* OPT */,
37 /* APL */,
38 /* DS */,
39 /* SSHFP */,
40 /* IPSECKEY */,
41 /* RRSIG */,
42 /* NSEC */,
43 /* DNSKEY */,
44 /* DHCID */,
45 /* NSEC3 */,
46 /* NSEC3PARAM */
};
#endif
/* List of most frequently used RR types in ascending order. */
extern const unsigned short int rrmuiterlist[NRRMU];
#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
const unsigned short int rrmuiterlist[NRRMU] = {
T_A,
T_NS,
T_CNAME,
T_SOA,
T_PTR,
T_MX,
T_TXT,
T_AAAA
};
#endif
/* List of the cache-able RR types in ascending order. */
extern const unsigned short int rrcachiterlist[NRRTOT];
#if DEFINE_RR_TYPE_ARRAYS
const unsigned short int rrcachiterlist[NRRTOT] = {
T_A,
T_NS,
T_MD,
T_MF,
T_CNAME,
T_SOA,
T_MB,
T_MG,
T_MR,
T_NULL,
T_WKS,
T_PTR,
T_HINFO,
T_MINFO,
T_MX,
T_TXT,
T_RP,
T_AFSDB,
T_X25,
T_ISDN,
T_RT,
T_NSAP,
T_NSAP_PTR,
T_SIG,
T_KEY,
T_PX,
T_GPOS,
T_AAAA,
T_LOC,
T_NXT,
T_EID,
T_NIMLOC,
T_SRV,
T_ATMA,
T_NAPTR,
T_KX,
T_CERT,
T_APL,
T_DS,
T_SSHFP,
T_IPSECKEY,
T_RRSIG,
T_NSEC,
T_DNSKEY,
T_DHCID,
T_NSEC3,
T_NSEC3PARAM
};
#endif
/* Optimized getrrset macros for fixed rr types. */
#define getrrset_A(cent) GET_RRSMU(cent,0)
#define getrrset_NS(cent) GET_RRSMU(cent,1)
#define getrrset_MD(cent) GET_RRSEXT(cent,0)
#define getrrset_MF(cent) GET_RRSEXT(cent,1)
#define getrrset_CNAME(cent) GET_RRSMU(cent,2)
#define getrrset_SOA(cent) GET_RRSMU(cent,3)
#define getrrset_MB(cent) GET_RRSEXT(cent,2)
#define getrrset_MG(cent) GET_RRSEXT(cent,3)
#define getrrset_MR(cent) GET_RRSEXT(cent,4)
#define getrrset_NULL(cent) GET_RRSEXT(cent,5)
#define getrrset_WKS(cent) GET_RRSEXT(cent,6)
#define getrrset_PTR(cent) GET_RRSMU(cent,4)
#define getrrset_HINFO(cent) GET_RRSEXT(cent,7)
#define getrrset_MINFO(cent) GET_RRSEXT(cent,8)
#define getrrset_MX(cent) GET_RRSMU(cent,5)
#define getrrset_TXT(cent) GET_RRSMU(cent,6)
#define getrrset_RP(cent) GET_RRSEXT(cent,9)
#define getrrset_AFSDB(cent) GET_RRSEXT(cent,10)
#define getrrset_X25(cent) GET_RRSEXT(cent,11)
#define getrrset_ISDN(cent) GET_RRSEXT(cent,12)
#define getrrset_RT(cent) GET_RRSEXT(cent,13)
#define getrrset_NSAP(cent) GET_RRSEXT(cent,14)
#define getrrset_NSAP_PTR(cent) GET_RRSEXT(cent,15)
#define getrrset_SIG(cent) GET_RRSEXT(cent,16)
#define getrrset_KEY(cent) GET_RRSEXT(cent,17)
#define getrrset_PX(cent) GET_RRSEXT(cent,18)
#define getrrset_GPOS(cent) GET_RRSEXT(cent,19)
#define getrrset_AAAA(cent) GET_RRSMU(cent,7)
#define getrrset_LOC(cent) GET_RRSEXT(cent,20)
#define getrrset_NXT(cent) GET_RRSEXT(cent,21)
#define getrrset_EID(cent) GET_RRSEXT(cent,22)
#define getrrset_NIMLOC(cent) GET_RRSEXT(cent,23)
#define getrrset_SRV(cent) GET_RRSEXT(cent,24)
#define getrrset_ATMA(cent) GET_RRSEXT(cent,25)
#define getrrset_NAPTR(cent) GET_RRSEXT(cent,26)
#define getrrset_KX(cent) GET_RRSEXT(cent,27)
#define getrrset_CERT(cent) GET_RRSEXT(cent,28)
#define getrrset_APL(cent) GET_RRSEXT(cent,29)
#define getrrset_DS(cent) GET_RRSEXT(cent,30)
#define getrrset_SSHFP(cent) GET_RRSEXT(cent,31)
#define getrrset_IPSECKEY(cent) GET_RRSEXT(cent,32)
#define getrrset_RRSIG(cent) GET_RRSEXT(cent,33)
#define getrrset_NSEC(cent) GET_RRSEXT(cent,34)
#define getrrset_DNSKEY(cent) GET_RRSEXT(cent,35)
#define getrrset_DHCID(cent) GET_RRSEXT(cent,36)
#define getrrset_NSEC3(cent) GET_RRSEXT(cent,37)
#define getrrset_NSEC3PARAM(cent) GET_RRSEXT(cent,38)
/* have_rr macros for fixed rr types. */
#define have_rr_A(cent) HAVE_RRMU(cent,0)
#define have_rr_NS(cent) HAVE_RRMU(cent,1)
#define have_rr_MD(cent) HAVE_RREXT(cent,0)
#define have_rr_MF(cent) HAVE_RREXT(cent,1)
#define have_rr_CNAME(cent) HAVE_RRMU(cent,2)
#define have_rr_SOA(cent) HAVE_RRMU(cent,3)
#define have_rr_MB(cent) HAVE_RREXT(cent,2)
#define have_rr_MG(cent) HAVE_RREXT(cent,3)
#define have_rr_MR(cent) HAVE_RREXT(cent,4)
#define have_rr_NULL(cent) HAVE_RREXT(cent,5)
#define have_rr_WKS(cent) HAVE_RREXT(cent,6)
#define have_rr_PTR(cent) HAVE_RRMU(cent,4)
#define have_rr_HINFO(cent) HAVE_RREXT(cent,7)
#define have_rr_MINFO(cent) HAVE_RREXT(cent,8)
#define have_rr_MX(cent) HAVE_RRMU(cent,5)
#define have_rr_TXT(cent) HAVE_RRMU(cent,6)
#define have_rr_RP(cent) HAVE_RREXT(cent,9)
#define have_rr_AFSDB(cent) HAVE_RREXT(cent,10)
#define have_rr_X25(cent) HAVE_RREXT(cent,11)
#define have_rr_ISDN(cent) HAVE_RREXT(cent,12)
#define have_rr_RT(cent) HAVE_RREXT(cent,13)
#define have_rr_NSAP(cent) HAVE_RREXT(cent,14)
#define have_rr_NSAP_PTR(cent) HAVE_RREXT(cent,15)
#define have_rr_SIG(cent) HAVE_RREXT(cent,16)
#define have_rr_KEY(cent) HAVE_RREXT(cent,17)
#define have_rr_PX(cent) HAVE_RREXT(cent,18)
#define have_rr_GPOS(cent) HAVE_RREXT(cent,19)
#define have_rr_AAAA(cent) HAVE_RRMU(cent,7)
#define have_rr_LOC(cent) HAVE_RREXT(cent,20)
#define have_rr_NXT(cent) HAVE_RREXT(cent,21)
#define have_rr_EID(cent) HAVE_RREXT(cent,22)
#define have_rr_NIMLOC(cent) HAVE_RREXT(cent,23)
#define have_rr_SRV(cent) HAVE_RREXT(cent,24)
#define have_rr_ATMA(cent) HAVE_RREXT(cent,25)
#define have_rr_NAPTR(cent) HAVE_RREXT(cent,26)
#define have_rr_KX(cent) HAVE_RREXT(cent,27)
#define have_rr_CERT(cent) HAVE_RREXT(cent,28)
#define have_rr_A6(cent) 0
#define have_rr_DNAME(cent) 0
#define have_rr_SINK(cent) 0
#define have_rr_OPT(cent) 0
#define have_rr_APL(cent) HAVE_RREXT(cent,29)
#define have_rr_DS(cent) HAVE_RREXT(cent,30)
#define have_rr_SSHFP(cent) HAVE_RREXT(cent,31)
#define have_rr_IPSECKEY(cent) HAVE_RREXT(cent,32)
#define have_rr_RRSIG(cent) HAVE_RREXT(cent,33)
#define have_rr_NSEC(cent) HAVE_RREXT(cent,34)
#define have_rr_DNSKEY(cent) HAVE_RREXT(cent,35)
#define have_rr_DHCID(cent) HAVE_RREXT(cent,36)
#define have_rr_NSEC3(cent) HAVE_RREXT(cent,37)
#define have_rr_NSEC3PARAM(cent) HAVE_RREXT(cent,38)
/* These macros specify which RR types are cached by pdnsd. */
#define IS_CACHED_A 1
#define IS_CACHED_NS 1
#define IS_CACHED_MD 1
#define IS_CACHED_MF 1
#define IS_CACHED_CNAME 1
#define IS_CACHED_SOA 1
#define IS_CACHED_MB 1
#define IS_CACHED_MG 1
#define IS_CACHED_MR 1
#define IS_CACHED_NULL 1
#define IS_CACHED_WKS 1
#define IS_CACHED_PTR 1
#define IS_CACHED_HINFO 1
#define IS_CACHED_MINFO 1
#define IS_CACHED_MX 1
#define IS_CACHED_TXT 1
#define IS_CACHED_RP 1
#define IS_CACHED_AFSDB 1
#define IS_CACHED_X25 1
#define IS_CACHED_ISDN 1
#define IS_CACHED_RT 1
#define IS_CACHED_NSAP 1
#define IS_CACHED_NSAP_PTR 1
#define IS_CACHED_SIG 1
#define IS_CACHED_KEY 1
#define IS_CACHED_PX 1
#define IS_CACHED_GPOS 1
#define IS_CACHED_AAAA 1
#define IS_CACHED_LOC 1
#define IS_CACHED_NXT 1
#define IS_CACHED_EID 1
#define IS_CACHED_NIMLOC 1
#define IS_CACHED_SRV 1
#define IS_CACHED_ATMA 1
#define IS_CACHED_NAPTR 1
#define IS_CACHED_KX 1
#define IS_CACHED_CERT 1
#define IS_CACHED_APL 1
#define IS_CACHED_DS 1
#define IS_CACHED_SSHFP 1
#define IS_CACHED_IPSECKEY 1
#define IS_CACHED_RRSIG 1
#define IS_CACHED_NSEC 1
#define IS_CACHED_DNSKEY 1
#define IS_CACHED_DHCID 1
#define IS_CACHED_NSEC3 1
#define IS_CACHED_NSEC3PARAM 1
/* Array indices for most frequently used rr types. */
#define RRMUINDEX_A 0
#define RRMUINDEX_NS 1
#define RRMUINDEX_CNAME 2
#define RRMUINDEX_SOA 3
#define RRMUINDEX_PTR 4
#define RRMUINDEX_MX 5
#define RRMUINDEX_TXT 6
#define RRMUINDEX_AAAA 7
/* Table of rr names. */
extern const char *const rrnames[T_NUM];
#if DEFINE_RR_TYPE_ARRAYS
const char *const rrnames[T_NUM] = {
"A",
"NS",
"MD",
"MF",
"CNAME",
"SOA",
"MB",
"MG",
"MR",
"NULL",
"WKS",
"PTR",
"HINFO",
"MINFO",
"MX",
"TXT",
"RP",
"AFSDB",
"X25",
"ISDN",
"RT",
"NSAP",
"NSAP_PTR",
"SIG",
"KEY",
"PX",
"GPOS",
"AAAA",
"LOC",
"NXT",
"EID",
"NIMLOC",
"SRV",
"ATMA",
"NAPTR",
"KX",
"CERT",
"A6",
"DNAME",
"SINK",
"OPT",
"APL",
"DS",
"SSHFP",
"IPSECKEY",
"RRSIG",
"NSEC",
"DNSKEY",
"DHCID",
"NSEC3",
"NSEC3PARAM"
};
#endif
/* Structure for rr information */
struct rr_infos {
unsigned short class; /* class (values see below) */
unsigned short excludes; /* relations to other classes.
Mutual exclusion is marked by or'ing the
respective RRCL value in this field.
Exclusions should be symmetric. */
};
/* Class values */
#define RRCL_ALIAS 1 /* for CNAMES, conflicts with RRCL_RECORD */
#define RRCL_RECORD 2 /* normal direct record */
#define RRCL_IDEM 4 /* types that conflict with no others (MX, CNAME, ...) */
#define RRCL_PTR 8 /* PTR */
/* Standard excludes for the classes */
#define RRX_ALIAS (RRCL_RECORD|RRCL_PTR)
#define RRX_RECORD (RRCL_ALIAS|RRCL_PTR)
#define RRX_IDEM 0
#define RRX_PTR (RRCL_ALIAS|RRCL_RECORD)
/* There could be a separate table detailing the relationship of types, but this
* is slightly more flexible, as it allows a finer granularity of exclusion. Also,
* Membership in multiple classes could be added.
* Index by internally used RR-set indices, not RR type values!
*/
extern const struct rr_infos rr_info[NRRTOT];
#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
const struct rr_infos rr_info[NRRTOT] = {
{RRCL_RECORD, RRX_RECORD} /* A */,
{RRCL_IDEM, RRX_IDEM} /* NS */,
{RRCL_ALIAS, RRX_ALIAS} /* CNAME */,
{RRCL_IDEM, RRX_IDEM} /* SOA */,
{RRCL_PTR, RRX_PTR} /* PTR */,
{RRCL_IDEM, RRX_IDEM} /* MX */,
{RRCL_IDEM, RRX_IDEM} /* TXT */,
{RRCL_RECORD, RRX_RECORD} /* AAAA */,
{RRCL_IDEM, RRX_IDEM} /* MD */,
{RRCL_IDEM, RRX_IDEM} /* MF */,
{RRCL_IDEM, RRX_IDEM} /* MB */,
{RRCL_IDEM, RRX_IDEM} /* MG */,
{RRCL_IDEM, RRX_IDEM} /* MR */,
{RRCL_IDEM, RRX_IDEM} /* NULL */,
{RRCL_RECORD, RRX_RECORD} /* WKS */,
{RRCL_RECORD, RRX_RECORD} /* HINFO */,
{RRCL_IDEM, RRX_IDEM} /* MINFO */,
{RRCL_RECORD, RRX_RECORD} /* RP */,
{RRCL_RECORD, RRX_RECORD} /* AFSDB */,
{RRCL_RECORD, RRX_RECORD} /* X25 */,
{RRCL_RECORD, RRX_RECORD} /* ISDN */,
{RRCL_RECORD, RRX_RECORD} /* RT */,
{RRCL_RECORD, RRX_RECORD} /* NSAP */,
{RRCL_PTR, RRX_PTR} /* NSAP_PTR */,
{RRCL_IDEM, RRX_IDEM} /* SIG */,
{RRCL_IDEM, RRX_IDEM} /* KEY */,
{RRCL_IDEM, RRX_IDEM} /* PX */,
{RRCL_RECORD, RRX_RECORD} /* GPOS */,
{RRCL_RECORD, RRX_RECORD} /* LOC */,
{RRCL_IDEM, RRX_IDEM} /* NXT */,
{RRCL_RECORD, RRX_RECORD} /* EID */,
{RRCL_RECORD, RRX_RECORD} /* NIMLOC */,
{RRCL_RECORD, RRX_RECORD} /* SRV */,
{RRCL_RECORD, RRX_RECORD} /* ATMA */,
{RRCL_RECORD, RRX_RECORD} /* NAPTR */,
{RRCL_RECORD, RRX_RECORD} /* KX */,
{RRCL_RECORD, RRX_RECORD} /* CERT */,
{RRCL_IDEM, RRX_IDEM} /* APL */,
{RRCL_IDEM, RRX_IDEM} /* DS */,
{RRCL_IDEM, RRX_IDEM} /* SSHFP */,
{RRCL_IDEM, RRX_IDEM} /* IPSECKEY */,
{RRCL_IDEM, RRX_IDEM} /* RRSIG */,
{RRCL_IDEM, RRX_IDEM} /* NSEC */,
{RRCL_IDEM, RRX_IDEM} /* DNSKEY */,
{RRCL_IDEM, RRX_IDEM} /* DHCID */,
{RRCL_IDEM, RRX_IDEM} /* NSEC3 */,
{RRCL_IDEM, RRX_IDEM} /* NSEC3PARAM */
};
#endif
int rr_tp_byname(char *name);
const char *loc2str(const void *binary, char *ascii, size_t asclen);
#endif