Shuyi Chen | d7955ce | 2013-05-22 14:51:55 -0700 | [diff] [blame] | 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 rcodes (error values) |
| 7 | * |
| 8 | * @author Brian Wellington |
| 9 | */ |
| 10 | |
| 11 | public final class Rcode { |
| 12 | |
| 13 | private static Mnemonic rcodes = new Mnemonic("DNS Rcode", |
| 14 | Mnemonic.CASE_UPPER); |
| 15 | |
| 16 | private static Mnemonic tsigrcodes = new Mnemonic("TSIG rcode", |
| 17 | Mnemonic.CASE_UPPER); |
| 18 | |
| 19 | /** No error */ |
| 20 | public static final int NOERROR = 0; |
| 21 | |
| 22 | /** Format error */ |
| 23 | public static final int FORMERR = 1; |
| 24 | |
| 25 | /** Server failure */ |
| 26 | public static final int SERVFAIL = 2; |
| 27 | |
| 28 | /** The name does not exist */ |
| 29 | public static final int NXDOMAIN = 3; |
| 30 | |
| 31 | /** The operation requested is not implemented */ |
| 32 | public static final int NOTIMP = 4; |
| 33 | |
| 34 | /** Deprecated synonym for NOTIMP. */ |
| 35 | public static final int NOTIMPL = 4; |
| 36 | |
| 37 | /** The operation was refused by the server */ |
| 38 | public static final int REFUSED = 5; |
| 39 | |
| 40 | /** The name exists */ |
| 41 | public static final int YXDOMAIN = 6; |
| 42 | |
| 43 | /** The RRset (name, type) exists */ |
| 44 | public static final int YXRRSET = 7; |
| 45 | |
| 46 | /** The RRset (name, type) does not exist */ |
| 47 | public static final int NXRRSET = 8; |
| 48 | |
| 49 | /** The requestor is not authorized to perform this operation */ |
| 50 | public static final int NOTAUTH = 9; |
| 51 | |
| 52 | /** The zone specified is not a zone */ |
| 53 | public static final int NOTZONE = 10; |
| 54 | |
| 55 | /* EDNS extended rcodes */ |
| 56 | /** Unsupported EDNS level */ |
| 57 | public static final int BADVERS = 16; |
| 58 | |
| 59 | /* TSIG/TKEY only rcodes */ |
| 60 | /** The signature is invalid (TSIG/TKEY extended error) */ |
| 61 | public static final int BADSIG = 16; |
| 62 | |
| 63 | /** The key is invalid (TSIG/TKEY extended error) */ |
| 64 | public static final int BADKEY = 17; |
| 65 | |
| 66 | /** The time is out of range (TSIG/TKEY extended error) */ |
| 67 | public static final int BADTIME = 18; |
| 68 | |
| 69 | /** The mode is invalid (TKEY extended error) */ |
| 70 | public static final int BADMODE = 19; |
| 71 | |
| 72 | static { |
| 73 | rcodes.setMaximum(0xFFF); |
| 74 | rcodes.setPrefix("RESERVED"); |
| 75 | rcodes.setNumericAllowed(true); |
| 76 | |
| 77 | rcodes.add(NOERROR, "NOERROR"); |
| 78 | rcodes.add(FORMERR, "FORMERR"); |
| 79 | rcodes.add(SERVFAIL, "SERVFAIL"); |
| 80 | rcodes.add(NXDOMAIN, "NXDOMAIN"); |
| 81 | rcodes.add(NOTIMP, "NOTIMP"); |
| 82 | rcodes.addAlias(NOTIMP, "NOTIMPL"); |
| 83 | rcodes.add(REFUSED, "REFUSED"); |
| 84 | rcodes.add(YXDOMAIN, "YXDOMAIN"); |
| 85 | rcodes.add(YXRRSET, "YXRRSET"); |
| 86 | rcodes.add(NXRRSET, "NXRRSET"); |
| 87 | rcodes.add(NOTAUTH, "NOTAUTH"); |
| 88 | rcodes.add(NOTZONE, "NOTZONE"); |
| 89 | rcodes.add(BADVERS, "BADVERS"); |
| 90 | |
| 91 | tsigrcodes.setMaximum(0xFFFF); |
| 92 | tsigrcodes.setPrefix("RESERVED"); |
| 93 | tsigrcodes.setNumericAllowed(true); |
| 94 | tsigrcodes.addAll(rcodes); |
| 95 | |
| 96 | tsigrcodes.add(BADSIG, "BADSIG"); |
| 97 | tsigrcodes.add(BADKEY, "BADKEY"); |
| 98 | tsigrcodes.add(BADTIME, "BADTIME"); |
| 99 | tsigrcodes.add(BADMODE, "BADMODE"); |
| 100 | } |
| 101 | |
| 102 | private |
| 103 | Rcode() {} |
| 104 | |
| 105 | /** Converts a numeric Rcode into a String */ |
| 106 | public static String |
| 107 | string(int i) { |
| 108 | return rcodes.getText(i); |
| 109 | } |
| 110 | |
| 111 | /** Converts a numeric TSIG extended Rcode into a String */ |
| 112 | public static String |
| 113 | TSIGstring(int i) { |
| 114 | return tsigrcodes.getText(i); |
| 115 | } |
| 116 | |
| 117 | /** Converts a String representation of an Rcode into its numeric value */ |
| 118 | public static int |
| 119 | value(String s) { |
| 120 | return rcodes.getValue(s); |
| 121 | } |
| 122 | |
| 123 | } |