diff options
Diffstat (limited to 'src/org/xbill/DNS/Flags.java')
-rw-r--r-- | src/org/xbill/DNS/Flags.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/org/xbill/DNS/Flags.java b/src/org/xbill/DNS/Flags.java new file mode 100644 index 0000000..964ce23 --- /dev/null +++ b/src/org/xbill/DNS/Flags.java @@ -0,0 +1,81 @@ +// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org) + +package org.xbill.DNS; + +/** + * Constants and functions relating to flags in the DNS header. + * + * @author Brian Wellington + */ + +public final class Flags { + +private static Mnemonic flags = new Mnemonic("DNS Header Flag", + Mnemonic.CASE_LOWER); + +/** query/response */ +public static final byte QR = 0; + +/** authoritative answer */ +public static final byte AA = 5; + +/** truncated */ +public static final byte TC = 6; + +/** recursion desired */ +public static final byte RD = 7; + +/** recursion available */ +public static final byte RA = 8; + +/** authenticated data */ +public static final byte AD = 10; + +/** (security) checking disabled */ +public static final byte CD = 11; + +/** dnssec ok (extended) */ +public static final int DO = ExtendedFlags.DO; + +static { + flags.setMaximum(0xF); + flags.setPrefix("FLAG"); + flags.setNumericAllowed(true); + + flags.add(QR, "qr"); + flags.add(AA, "aa"); + flags.add(TC, "tc"); + flags.add(RD, "rd"); + flags.add(RA, "ra"); + flags.add(AD, "ad"); + flags.add(CD, "cd"); +} + +private +Flags() {} + +/** Converts a numeric Flag into a String */ +public static String +string(int i) { + return flags.getText(i); +} + +/** Converts a String representation of an Flag into its numeric value */ +public static int +value(String s) { + return flags.getValue(s); +} + +/** + * Indicates if a bit in the flags field is a flag or not. If it's part of + * the rcode or opcode, it's not. + */ +public static boolean +isFlag(int index) { + flags.check(index); + if ((index >= 1 && index <= 4) || (index >= 12)) + return false; + return true; +} + +} |