aboutsummaryrefslogtreecommitdiff
path: root/src/org/xbill/DNS/SOARecord.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/xbill/DNS/SOARecord.java')
-rw-r--r--src/org/xbill/DNS/SOARecord.java162
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);
+}
+
+}