• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)
2 
3 package org.xbill.DNS;
4 
5 /**
6  * Constants and functions relating to DNS classes.  This is called DClass
7  * to avoid confusion with Class.
8  *
9  * @author Brian Wellington
10  */
11 
12 public final class DClass {
13 
14 /** Internet */
15 public static final int IN		= 1;
16 
17 /** Chaos network (MIT) */
18 public static final int CH		= 3;
19 
20 /** Chaos network (MIT, alternate name) */
21 public static final int CHAOS		= 3;
22 
23 /** Hesiod name server (MIT) */
24 public static final int HS		= 4;
25 
26 /** Hesiod name server (MIT, alternate name) */
27 public static final int HESIOD		= 4;
28 
29 /** Special value used in dynamic update messages */
30 public static final int NONE		= 254;
31 
32 /** Matches any class */
33 public static final int ANY		= 255;
34 
35 private static class DClassMnemonic extends Mnemonic {
36 	public
DClassMnemonic()37 	DClassMnemonic() {
38 		super("DClass", CASE_UPPER);
39 		setPrefix("CLASS");
40 	}
41 
42 	public void
check(int val)43 	check(int val) {
44 		DClass.check(val);
45 	}
46 }
47 
48 private static Mnemonic classes = new DClassMnemonic();
49 
50 static {
classes.add(IN, "IN")51 	classes.add(IN, "IN");
classes.add(CH, "CH")52 	classes.add(CH, "CH");
classes.addAlias(CH, "CHAOS")53 	classes.addAlias(CH, "CHAOS");
classes.add(HS, "HS")54 	classes.add(HS, "HS");
classes.addAlias(HS, "HESIOD")55 	classes.addAlias(HS, "HESIOD");
classes.add(NONE, "NONE")56 	classes.add(NONE, "NONE");
classes.add(ANY, "ANY")57 	classes.add(ANY, "ANY");
58 }
59 
60 private
DClass()61 DClass() {}
62 
63 /**
64  * Checks that a numeric DClass is valid.
65  * @throws InvalidDClassException The class is out of range.
66  */
67 public static void
check(int i)68 check(int i) {
69 	if (i < 0 || i > 0xFFFF)
70 		throw new InvalidDClassException(i);
71 }
72 
73 /**
74  * Converts a numeric DClass into a String
75  * @return The canonical string representation of the class
76  * @throws InvalidDClassException The class is out of range.
77  */
78 public static String
string(int i)79 string(int i) {
80 	return classes.getText(i);
81 }
82 
83 /**
84  * Converts a String representation of a DClass into its numeric value
85  * @return The class code, or -1 on error.
86  */
87 public static int
value(String s)88 value(String s) {
89 	return classes.getValue(s);
90 }
91 
92 }
93