Annotation of embedaddon/strongswan/src/libstrongswan/resolver/rr.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * Copyright (C) 2012 Reto Guadagnini
                      3:  * HSR Hochschule fuer Technik Rapperswil
                      4:  *
                      5:  * This program is free software; you can redistribute it and/or modify it
                      6:  * under the terms of the GNU General Public License as published by the
                      7:  * Free Software Foundation; either version 2 of the License, or (at your
                      8:  * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
                      9:  *
                     10:  * This program is distributed in the hope that it will be useful, but
                     11:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                     12:  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
                     13:  * for more details.
                     14:  */
                     15: 
                     16: /**
                     17:  * @defgroup rr rr
                     18:  * @{ @ingroup resolver
                     19:  */
                     20: 
                     21: #ifndef RR_H_
                     22: #define RR_H_
                     23: 
                     24: typedef struct rr_t rr_t;
                     25: typedef enum rr_type_t rr_type_t;
                     26: typedef enum rr_class_t rr_class_t;
                     27: 
                     28: #include <library.h>
                     29: 
                     30: /**
                     31:  * Resource Record types.
                     32:  *
                     33:  * According to www.iana.org/assignments/dns-parameters (version 2012-03-13).
                     34:  */
                     35: enum rr_type_t {
                     36:        /** a host address */
                     37:        RR_TYPE_A = 1,
                     38:        /** an authoritative name server */
                     39:        RR_TYPE_NS = 2,
                     40:        //** a mail destination (OBSOLETE - use MX */
                     41:        RR_TYPE_MD = 3,
                     42:        /** a mail forwarder (OBSOLETE - use MX) */
                     43:        RR_TYPE_MF = 4,
                     44:        /** the canonical name for an alias */
                     45:        RR_TYPE_CNAME = 5,
                     46:        /** marks the start of a zone of authority */
                     47:        RR_TYPE_SOA = 6,
                     48:        /** a mailbox domain name (EXPERIMENTAL) */
                     49:        RR_TYPE_MB = 7,
                     50:        /** a mail group member (EXPERIMENTAL) */
                     51:        RR_TYPE_MG = 8,
                     52:        /** a mail rename domain name (EXPERIMENTAL) */
                     53:        RR_TYPE_MR = 9,
                     54:        /** a null RR (EXPERIMENTAL) */
                     55:        RR_TYPE_NULL = 10,
                     56:        /** a well known service description */
                     57:        RR_TYPE_WKS = 11,
                     58:        /**  a domain name pointer */
                     59:        RR_TYPE_PTR = 12,
                     60:        /**  host information */
                     61:        RR_TYPE_HINFO = 13,
                     62:        /**  mailbox or mail list information */
                     63:        RR_TYPE_MINFO = 14,
                     64:        /**  mail exchange */
                     65:        RR_TYPE_MX = 15,
                     66:        /**  text strings */
                     67:        RR_TYPE_TXT = 16,
                     68:        /** for Responsible Person */
                     69:        RR_TYPE_RP = 17,
                     70:        /** for AFS Data Base location */
                     71:        RR_TYPE_AFSDB = 18,
                     72:        /** for X.25 PSDN address */
                     73:        RR_TYPE_X25 = 19,
                     74:        /** for ISDN address */
                     75:        RR_TYPE_ISDN = 20,
                     76:        /** for Route Through */
                     77:        RR_TYPE_RT = 21,
                     78:        /** for NSAP address, NSAP style A record */
                     79:        RR_TYPE_NSAP = 22,
                     80:        /** for domain name pointer, NSAP style  */
                     81:        RR_TYPE_NSAP_PTR = 23,
                     82:        /** for security signature */
                     83:        RR_TYPE_SIG = 24,
                     84:        /** for security key */
                     85:        RR_TYPE_KEY = 25,
                     86:        /** X.400 mail mapping information  */
                     87:        RR_TYPE_PX = 26,
                     88:        /**  Geographical Position  */
                     89:        RR_TYPE_GPOS = 27,
                     90:        /** ipv6 address */
                     91:        RR_TYPE_AAAA = 28,
                     92:        /** Location Information  */
                     93:        RR_TYPE_LOC = 29,
                     94:        /** Next Domain (OBSOLETE) */
                     95:        RR_TYPE_NXT = 30,
                     96:        /** Endpoint Identifier  */
                     97:        RR_TYPE_EID = 31,
                     98:        /** Nimrod Locator */
                     99:        RR_TYPE_NIMLOC = 32,
                    100:        /** Server Selection */
                    101:        RR_TYPE_SRV = 33,
                    102:        /** ATM Address */
                    103:        RR_TYPE_ATMA = 34,
                    104:        /** Naming Authority Pointer */
                    105:        RR_TYPE_NAPTR = 35,
                    106:        /** Key Exchanger */
                    107:        RR_TYPE_KX = 36,
                    108:        /** CERT */
                    109:        RR_TYPE_CERT = 37,
                    110:        /** A6 (OBSOLETE - use AAAA) */
                    111:        RR_TYPE_A6 = 38,
                    112:        /** DNAME */
                    113:        RR_TYPE_DNAME = 39,
                    114:        /** SINK */
                    115:        RR_TYPE_SINK = 40,
                    116:        /** OPT */
                    117:        RR_TYPE_OPT = 41,
                    118:        /** APL */
                    119:        RR_TYPE_APL = 42,
                    120:        /** Delegation Signer */
                    121:        RR_TYPE_DS = 43,
                    122:        /** SSH Key Fingerprint */
                    123:        RR_TYPE_SSHFP = 44,
                    124:        /** IPSECKEY */
                    125:        RR_TYPE_IPSECKEY = 45,
                    126:        /** RRSIG */
                    127:        RR_TYPE_RRSIG = 46,
                    128:        /** NSEC */
                    129:        RR_TYPE_NSEC = 47,
                    130:        /** DNSKEY */
                    131:        RR_TYPE_DNSKEY = 48,
                    132:        /** DHCID */
                    133:        RR_TYPE_DHCID = 49,
                    134:        /** NSEC3 */
                    135:        RR_TYPE_NSEC3 = 50,
                    136:        /** NSEC3PARAM */
                    137:        RR_TYPE_NSEC3PARAM = 51,
                    138: 
                    139:        /** Unassigned   52-54 */
                    140: 
                    141:        /** Host Identity Protocol */
                    142:        RR_TYPE_HIP =  55,
                    143:        /** NINFO */
                    144:        RR_TYPE_NINFO = 56,
                    145:        /** RKEY */
                    146:        RR_TYPE_RKEY = 57,
                    147:        /** Trust Anchor LINK */
                    148:        RR_TYPE_TALINK = 58,
                    149:        /** Child DS */
                    150:        RR_TYPE_CDS = 59,
                    151: 
                    152:        /** Unassigned   60-98 */
                    153: 
                    154:        /** SPF */
                    155:        RR_TYPE_SPF = 99,
                    156:        /** UINFO */
                    157:        RR_TYPE_UINFO = 100,
                    158:        /** UID */
                    159:        RR_TYPE_UID = 101,
                    160:        /** GID */
                    161:        RR_TYPE_GID = 102,
                    162:        /** UNSPEC */
                    163:        RR_TYPE_UNSPEC = 103,
                    164: 
                    165:        /** Unassigned   104-248 */
                    166: 
                    167:        /** Transaction Key */
                    168:        RR_TYPE_TKEY = 249,
                    169:        /** Transaction Signature */
                    170:        RR_TYPE_TSIG = 250,
                    171:        /** incremental transfer */
                    172:        RR_TYPE_IXFR = 251,
                    173:        /** transfer of an entire zone */
                    174:        RR_TYPE_AXFR = 252,
                    175:        /** mailbox-related RRs (MB, MG or MR) */
                    176:        RR_TYPE_MAILB = 253,
                    177:        /** mail agent RRs (OBSOLETE - see MX) */
                    178:        RR_TYPE_MAILA = 254,
                    179:        /** A request for all records */
                    180:        RR_TYPE_ANY = 255,
                    181:        /** URI */
                    182:        RR_TYPE_URI = 256,
                    183:        /** Certification Authority Authorization */
                    184:        RR_TYPE_CAA = 257,
                    185: 
                    186:        /** Unassigned   258-32767 */
                    187: 
                    188:        /** DNSSEC Trust Authorities */
                    189:        RR_TYPE_TA = 32768,
                    190:        /** DNSSEC Lookaside Validation */
                    191:        RR_TYPE_DLV = 32769,
                    192: 
                    193:        /** Unassigned   32770-65279 */
                    194: 
                    195:        /** Private use  65280-65534 */
                    196: 
                    197:        /** Reserved     65535 */
                    198: };
                    199: 
                    200: 
                    201: /**
                    202:  * Resource Record CLASSes
                    203:  */
                    204: enum rr_class_t {
                    205:        /** Internet */
                    206:        RR_CLASS_IN = 1,
                    207:        /** Chaos */
                    208:        RR_CLASS_CH = 3,
                    209:        /** Hesiod */
                    210:        RR_CLASS_HS = 4,
                    211:        /** further CLASSes: http://wwwiana.org/assignments/dns-parameters */
                    212: };
                    213: 
                    214: 
                    215: /**
                    216:  * A DNS Resource Record.
                    217:  *
                    218:  * Represents a Resource Record of the Domain Name System
                    219:  * as defined in RFC 1035.
                    220:  *
                    221:  */
                    222: struct rr_t {
                    223: 
                    224:        /**
                    225:         * Get the NAME of the owner of this RR.
                    226:         *
                    227:         * @return                      owner name as string
                    228:         */
                    229:        char *(*get_name)(rr_t *this);
                    230: 
                    231:        /**
                    232:         * Get the type of this RR.
                    233:         *
                    234:         * @return                      RR type
                    235:         */
                    236:        rr_type_t (*get_type)(rr_t *this);
                    237: 
                    238:        /**
                    239:         * Get the class of this RR.
                    240:         *
                    241:         * @return                      RR class
                    242:         */
                    243:        rr_class_t (*get_class)(rr_t *this);
                    244: 
                    245:        /**
                    246:         * Get the Time to Live (TTL) of this RR.
                    247:         *
                    248:         * @return                      Time to Live
                    249:         */
                    250:        uint32_t (*get_ttl)(rr_t *this);
                    251: 
                    252:        /**
                    253:         * Get the content of the RDATA field as chunk.
                    254:         *
                    255:         * The data pointed by the chunk is still owned by the RR.
                    256:         * Clone it if needed.
                    257:         *
                    258:         * @return                      RDATA field as chunk
                    259:         */
                    260:        chunk_t (*get_rdata)(rr_t *this);
                    261: 
                    262:        /**
                    263:         * Destroy the Resource Record.
                    264:         */
                    265:        void (*destroy) (rr_t *this);
                    266: };
                    267: 
                    268: #endif /** RR_H_ @}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>