001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *
019 */
020
021 package org.apache.directory.server.dns.messages;
022
023
024 import org.apache.directory.server.dns.util.EnumConverter;
025 import org.apache.directory.server.dns.util.ReverseEnumMap;
026
027
028 /**
029 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
030 * @version $Rev: 547524 $, $Date: 2007-06-15 07:42:26 +0300 (Fri, 15 Jun 2007) $
031 */
032 public enum RecordType implements EnumConverter<Short>
033 {
034 /** Host address */
035 A(1),
036
037 /** Authoritative name server */
038 NS(2),
039
040 /** Mail destination */
041 MD(3),
042
043 /** Mail forwarder */
044 MF(4),
045
046 /** Canonical name for an alias */
047 CNAME(5),
048
049 /** Start of a zone of authority */
050 SOA(6),
051
052 /** Mailbox domain name */
053 MB(7),
054
055 /** Mail group member */
056 MG(8),
057
058 /** Mail rename domain name */
059 MR(9),
060
061 /** Null resource record */
062 NULL(10),
063
064 /** Well know service description */
065 WKS(11),
066
067 /** Domain name pointer */
068 PTR(12),
069
070 /** Host information */
071 HINFO(13),
072
073 /** Mailbox or mail list information */
074 MINFO(14),
075
076 /** Mail exchange */
077 MX(15),
078
079 /** Text strings */
080 TXT(16),
081
082 /** Responsible person */
083 RP(17),
084
085 /** AFS cell database */
086 AFSDB(18),
087
088 /** X.25 calling address */
089 X25(19),
090
091 /** ISDN calling address */
092 ISDN(20),
093
094 /** Router */
095 RT(21),
096
097 /** NSAP address */
098 NSAP(22),
099
100 /** Reverse NSAP address (deprecated) */
101 NSAP_PTR(23),
102
103 /** Signature */
104 SIG(24),
105
106 /** Key */
107 KEY(25),
108
109 /** X.400 mail mapping */
110 PX(26),
111
112 /** Geographical position (withdrawn) */
113 GPOS(27),
114
115 /** IPv6 address */
116 AAAA(28),
117
118 /** Location */
119 LOC(29),
120
121 /** Next valid name in zone */
122 NXT(30),
123
124 /** Endpoint identifier */
125 EID(31),
126
127 /** Nimrod locator */
128 NIMLOC(32),
129
130 /** Server selection */
131 SRV(33),
132
133 /** ATM address */
134 ATMA(34),
135
136 /** Naming authority pointer */
137 NAPTR(35),
138
139 /** Key exchange */
140 KX(36),
141
142 /** Certificate */
143 CERT(34),
144
145 /** IPv6 address (experimental) */
146 A6(38),
147
148 /** Non-terminal name redirection */
149 DNAME(39),
150
151 /** Options - contains EDNS metadata */
152 OPT(41),
153
154 /** Address Prefix List */
155 APL(42),
156
157 /** Delegation Signer */
158 DS(43),
159
160 /** SSH Key Fingerprint */
161 SSHFP(44),
162
163 /** Resource Record Signature */
164 RRSIG(46),
165
166 /** Next Secure Name */
167 NSEC(47),
168
169 /** DNSSEC Key */
170 DNSKEY(48),
171
172 /** Transaction key - used to compute a shared secret or exchange a key */
173 TKEY(249),
174
175 /** Transaction signature */
176 TSIG(250),
177
178 /** Incremental zone transfer */
179 IXFR(251),
180
181 /** Request for transfer of an entire zone */
182 AXFR(252),
183
184 /** Request for mailbox-related records */
185 MAILB(253),
186
187 /** Request for mail agent resource records */
188 MAILA(254),
189
190 /** Request for all records */
191 ANY(255);
192
193 private static ReverseEnumMap<Short, RecordType> map = new ReverseEnumMap<Short, RecordType>( RecordType.class );
194
195 private final short value;
196
197
198 private RecordType( int value )
199 {
200 this.value = ( short ) value;
201 }
202
203
204 public Short convert()
205 {
206 return this.value;
207 }
208
209
210 /**
211 * Converts an ordinal value into a {@link RecordType}.
212 *
213 * @param value
214 * @return The {@link RecordType}.
215 */
216 public static RecordType convert( short value )
217 {
218 return map.get( value );
219 }
220
221
222 /**
223 * Returns whether a given {@link RecordType} is a {@link ResourceRecord}.
224 *
225 * @param resourceType
226 * @return true of the {@link RecordType} is a {@link ResourceRecord}.
227 */
228 public static boolean isResourceRecord( RecordType resourceType )
229 {
230 switch ( resourceType )
231 {
232 case OPT:
233 case TKEY:
234 case TSIG:
235 case IXFR:
236 case AXFR:
237 case MAILB:
238 case MAILA:
239 case ANY:
240 return false;
241 default:
242 return true;
243 }
244 }
245 }