📄 nxtrecord.java
字号:
// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)package org.xbill.DNS;import java.io.*;import java.util.*;/** * Next name - this record contains the following name in an ordered list * of names in the zone, and a set of types for which records exist for * this name. The presence of this record in a response signifies a * failed query for data in a DNSSEC-signed zone. * * @author Brian Wellington */public class NXTRecord extends Record {private Name next;private BitSet bitmap;NXTRecord() {}RecordgetObject() { return new NXTRecord();}/** * Creates an NXT Record from the given data * @param next The following name in an ordered list of the zone * @param bitmap The set of type for which records exist at this name*/publicNXTRecord(Name name, int dclass, long ttl, Name next, BitSet bitmap) { super(name, Type.NXT, dclass, ttl); this.next = checkName("next", next); this.bitmap = bitmap;}voidrrFromWire(DNSInput in) throws IOException { next = new Name(in); bitmap = new BitSet(); int bitmapLength = in.remaining(); for (int i = 0; i < bitmapLength; i++) { int t = in.readU8(); for (int j = 0; j < 8; j++) if ((t & (1 << (7 - j))) != 0) bitmap.set(i * 8 + j); }}voidrdataFromString(Tokenizer st, Name origin) throws IOException { next = st.getName(origin); bitmap = new BitSet(); while (true) { Tokenizer.Token t = st.get(); if (!t.isString()) break; int type = Type.value(t.value, true); if (type <= 0 || type > 128) throw st.exception("Invalid type: " + t.value); bitmap.set(type); } st.unget();}/** Converts rdata to a String */StringrrToString() { StringBuffer sb = new StringBuffer(); sb.append(next); int length = bitmap.length(); for (short i = 0; i < length; i++) if (bitmap.get(i)) { sb.append(" "); sb.append(Type.string(i)); } return sb.toString();}/** Returns the next name */public NamegetNext() { return next;}/** Returns the set of types defined for this name */public BitSetgetBitmap() { return bitmap;}voidrrToWire(DNSOutput out, Compression c, boolean canonical) { next.toWire(out, null, canonical); int length = bitmap.length(); for (int i = 0, t = 0; i < length; i++) { t |= (bitmap.get(i) ? (1 << (7 - i % 8)) : 0); if (i % 8 == 7 || i == length - 1) { out.writeU8(t); t = 0; } }}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -