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