1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.xbill.DNS;
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Constants and functions relating to DNS opcodes
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Brian Wellington
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic final class Opcode {
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** A standard query */
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int QUERY		= 0;
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** An inverse query (deprecated) */
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int IQUERY		= 1;
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** A server status request (not used) */
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int STATUS		= 2;
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * A message from a primary to a secondary server to initiate a zone transfer
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int NOTIFY		= 4;
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** A dynamic update message */
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static final int UPDATE		= 5;
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate static Mnemonic opcodes = new Mnemonic("DNS Opcode",
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen					       Mnemonic.CASE_UPPER);
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenstatic {
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	opcodes.setMaximum(0xF);
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	opcodes.setPrefix("RESERVED");
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	opcodes.setNumericAllowed(true);
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	opcodes.add(QUERY, "QUERY");
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	opcodes.add(IQUERY, "IQUERY");
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	opcodes.add(STATUS, "STATUS");
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	opcodes.add(NOTIFY, "NOTIFY");
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	opcodes.add(UPDATE, "UPDATE");
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenOpcode() {}
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Converts a numeric Opcode into a String */
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static String
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenstring(int i) {
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return opcodes.getText(i);
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Converts a String representation of an Opcode into its numeric value */
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic static int
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvalue(String s) {
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return opcodes.getValue(s);
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
61