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>