diff options
Diffstat (limited to 'src/org/xbill/DNS/SOARecord.java')
-rw-r--r-- | src/org/xbill/DNS/SOARecord.java | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/src/org/xbill/DNS/SOARecord.java b/src/org/xbill/DNS/SOARecord.java new file mode 100644 index 0000000..7f27077 --- /dev/null +++ b/src/org/xbill/DNS/SOARecord.java @@ -0,0 +1,162 @@ +// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org) + +package org.xbill.DNS; + +import java.io.*; + +/** + * Start of Authority - describes properties of a zone. + * + * @author Brian Wellington + */ + +public class SOARecord extends Record { + +private static final long serialVersionUID = 1049740098229303931L; + +private Name host, admin; +private long serial, refresh, retry, expire, minimum; + +SOARecord() {} + +Record +getObject() { + return new SOARecord(); +} + +/** + * Creates an SOA Record from the given data + * @param host The primary name server for the zone + * @param admin The zone administrator's address + * @param serial The zone's serial number + * @param refresh The amount of time until a secondary checks for a new serial + * number + * @param retry The amount of time between a secondary's checks for a new + * serial number + * @param expire The amount of time until a secondary expires a zone + * @param minimum The minimum TTL for records in the zone +*/ +public +SOARecord(Name name, int dclass, long ttl, Name host, Name admin, + long serial, long refresh, long retry, long expire, long minimum) +{ + super(name, Type.SOA, dclass, ttl); + this.host = checkName("host", host); + this.admin = checkName("admin", admin); + this.serial = checkU32("serial", serial); + this.refresh = checkU32("refresh", refresh); + this.retry = checkU32("retry", retry); + this.expire = checkU32("expire", expire); + this.minimum = checkU32("minimum", minimum); +} + +void +rrFromWire(DNSInput in) throws IOException { + host = new Name(in); + admin = new Name(in); + serial = in.readU32(); + refresh = in.readU32(); + retry = in.readU32(); + expire = in.readU32(); + minimum = in.readU32(); +} + +void +rdataFromString(Tokenizer st, Name origin) throws IOException { + host = st.getName(origin); + admin = st.getName(origin); + serial = st.getUInt32(); + refresh = st.getTTLLike(); + retry = st.getTTLLike(); + expire = st.getTTLLike(); + minimum = st.getTTLLike(); +} + +/** Convert to a String */ +String +rrToString() { + StringBuffer sb = new StringBuffer(); + sb.append(host); + sb.append(" "); + sb.append(admin); + if (Options.check("multiline")) { + sb.append(" (\n\t\t\t\t\t"); + sb.append(serial); + sb.append("\t; serial\n\t\t\t\t\t"); + sb.append(refresh); + sb.append("\t; refresh\n\t\t\t\t\t"); + sb.append(retry); + sb.append("\t; retry\n\t\t\t\t\t"); + sb.append(expire); + sb.append("\t; expire\n\t\t\t\t\t"); + sb.append(minimum); + sb.append(" )\t; minimum"); + } else { + sb.append(" "); + sb.append(serial); + sb.append(" "); + sb.append(refresh); + sb.append(" "); + sb.append(retry); + sb.append(" "); + sb.append(expire); + sb.append(" "); + sb.append(minimum); + } + return sb.toString(); +} + +/** Returns the primary name server */ +public Name +getHost() { + return host; +} + +/** Returns the zone administrator's address */ +public Name +getAdmin() { + return admin; +} + +/** Returns the zone's serial number */ +public long +getSerial() { + return serial; +} + +/** Returns the zone refresh interval */ +public long +getRefresh() { + return refresh; +} + +/** Returns the zone retry interval */ +public long +getRetry() { + return retry; +} + +/** Returns the time until a secondary expires a zone */ +public long +getExpire() { + return expire; +} + +/** Returns the minimum TTL for records in the zone */ +public long +getMinimum() { + return minimum; +} + +void +rrToWire(DNSOutput out, Compression c, boolean canonical) { + host.toWire(out, c, canonical); + admin.toWire(out, c, canonical); + out.writeU32(serial); + out.writeU32(refresh); + out.writeU32(retry); + out.writeU32(expire); + out.writeU32(minimum); +} + +} |