| // Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org) |
| |
| package org.xbill.DNS; |
| |
| /** |
| * Constants and functions relating to DNS rcodes (error values) |
| * |
| * @author Brian Wellington |
| */ |
| |
| public final class Rcode { |
| |
| private static Mnemonic rcodes = new Mnemonic("DNS Rcode", |
| Mnemonic.CASE_UPPER); |
| |
| private static Mnemonic tsigrcodes = new Mnemonic("TSIG rcode", |
| Mnemonic.CASE_UPPER); |
| |
| /** No error */ |
| public static final int NOERROR = 0; |
| |
| /** Format error */ |
| public static final int FORMERR = 1; |
| |
| /** Server failure */ |
| public static final int SERVFAIL = 2; |
| |
| /** The name does not exist */ |
| public static final int NXDOMAIN = 3; |
| |
| /** The operation requested is not implemented */ |
| public static final int NOTIMP = 4; |
| |
| /** Deprecated synonym for NOTIMP. */ |
| public static final int NOTIMPL = 4; |
| |
| /** The operation was refused by the server */ |
| public static final int REFUSED = 5; |
| |
| /** The name exists */ |
| public static final int YXDOMAIN = 6; |
| |
| /** The RRset (name, type) exists */ |
| public static final int YXRRSET = 7; |
| |
| /** The RRset (name, type) does not exist */ |
| public static final int NXRRSET = 8; |
| |
| /** The requestor is not authorized to perform this operation */ |
| public static final int NOTAUTH = 9; |
| |
| /** The zone specified is not a zone */ |
| public static final int NOTZONE = 10; |
| |
| /* EDNS extended rcodes */ |
| /** Unsupported EDNS level */ |
| public static final int BADVERS = 16; |
| |
| /* TSIG/TKEY only rcodes */ |
| /** The signature is invalid (TSIG/TKEY extended error) */ |
| public static final int BADSIG = 16; |
| |
| /** The key is invalid (TSIG/TKEY extended error) */ |
| public static final int BADKEY = 17; |
| |
| /** The time is out of range (TSIG/TKEY extended error) */ |
| public static final int BADTIME = 18; |
| |
| /** The mode is invalid (TKEY extended error) */ |
| public static final int BADMODE = 19; |
| |
| static { |
| rcodes.setMaximum(0xFFF); |
| rcodes.setPrefix("RESERVED"); |
| rcodes.setNumericAllowed(true); |
| |
| rcodes.add(NOERROR, "NOERROR"); |
| rcodes.add(FORMERR, "FORMERR"); |
| rcodes.add(SERVFAIL, "SERVFAIL"); |
| rcodes.add(NXDOMAIN, "NXDOMAIN"); |
| rcodes.add(NOTIMP, "NOTIMP"); |
| rcodes.addAlias(NOTIMP, "NOTIMPL"); |
| rcodes.add(REFUSED, "REFUSED"); |
| rcodes.add(YXDOMAIN, "YXDOMAIN"); |
| rcodes.add(YXRRSET, "YXRRSET"); |
| rcodes.add(NXRRSET, "NXRRSET"); |
| rcodes.add(NOTAUTH, "NOTAUTH"); |
| rcodes.add(NOTZONE, "NOTZONE"); |
| rcodes.add(BADVERS, "BADVERS"); |
| |
| tsigrcodes.setMaximum(0xFFFF); |
| tsigrcodes.setPrefix("RESERVED"); |
| tsigrcodes.setNumericAllowed(true); |
| tsigrcodes.addAll(rcodes); |
| |
| tsigrcodes.add(BADSIG, "BADSIG"); |
| tsigrcodes.add(BADKEY, "BADKEY"); |
| tsigrcodes.add(BADTIME, "BADTIME"); |
| tsigrcodes.add(BADMODE, "BADMODE"); |
| } |
| |
| private |
| Rcode() {} |
| |
| /** Converts a numeric Rcode into a String */ |
| public static String |
| string(int i) { |
| return rcodes.getText(i); |
| } |
| |
| /** Converts a numeric TSIG extended Rcode into a String */ |
| public static String |
| TSIGstring(int i) { |
| return tsigrcodes.getText(i); |
| } |
| |
| /** Converts a String representation of an Rcode into its numeric value */ |
| public static int |
| value(String s) { |
| return rcodes.getValue(s); |
| } |
| |
| } |