org.xbill.DNS
Class ZoneTransferIn

java.lang.Object
  extended by org.xbill.DNS.ZoneTransferIn

public class ZoneTransferIn
extends Object

An incoming DNS Zone Transfer. To use this class, first initialize an object, then call the run() method. If run() doesn't throw an exception the result will either be an IXFR-style response, an AXFR-style response, or an indication that the zone is up to date.

Author:
Brian Wellington

Nested Class Summary
static class ZoneTransferIn.Delta
           
 
Method Summary
 List getAXFR()
          Gets the AXFR-style response.
 List getIXFR()
          Gets the IXFR-style response.
 Name getName()
          Gets the name of the zone being transferred.
 int getType()
          Gets the type of zone transfer (either AXFR or IXFR).
 boolean isAXFR()
          Returns true if the response is an AXFR-style response (List of Records).
 boolean isCurrent()
          Returns true if the response indicates that the zone is up to date.
 boolean isIXFR()
          Returns true if the response is an IXFR-style response (List of Deltas).
static ZoneTransferIn newAXFR(Name zone, SocketAddress address, TSIG key)
          Instantiates a ZoneTransferIn object to do an AXFR (full zone transfer).
static ZoneTransferIn newAXFR(Name zone, String host, int port, TSIG key)
          Instantiates a ZoneTransferIn object to do an AXFR (full zone transfer).
static ZoneTransferIn newAXFR(Name zone, String host, TSIG key)
          Instantiates a ZoneTransferIn object to do an AXFR (full zone transfer).
static ZoneTransferIn newIXFR(Name zone, long serial, boolean fallback, SocketAddress address, TSIG key)
          Instantiates a ZoneTransferIn object to do an IXFR (incremental zone transfer).
static ZoneTransferIn newIXFR(Name zone, long serial, boolean fallback, String host, int port, TSIG key)
          Instantiates a ZoneTransferIn object to do an IXFR (incremental zone transfer).
static ZoneTransferIn newIXFR(Name zone, long serial, boolean fallback, String host, TSIG key)
          Instantiates a ZoneTransferIn object to do an IXFR (incremental zone transfer).
 List run()
          Does the zone transfer.
 void setDClass(int dclass)
          Sets an alternate DNS class for this zone transfer.
 void setLocalAddress(SocketAddress addr)
          Sets the local address to bind to when sending messages.
 void setTimeout(int secs)
          Sets a timeout on this zone transfer.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

newAXFR

public static ZoneTransferIn newAXFR(Name zone,
                                     SocketAddress address,
                                     TSIG key)
Instantiates a ZoneTransferIn object to do an AXFR (full zone transfer).

Parameters:
zone - The zone to transfer.
address - The host/port from which to transfer the zone.
key - The TSIG key used to authenticate the transfer, or null.
Returns:
The ZoneTransferIn object.
Throws:
UnknownHostException - The host does not exist.

newAXFR

public static ZoneTransferIn newAXFR(Name zone,
                                     String host,
                                     int port,
                                     TSIG key)
                              throws UnknownHostException
Instantiates a ZoneTransferIn object to do an AXFR (full zone transfer).

Parameters:
zone - The zone to transfer.
host - The host from which to transfer the zone.
port - The port to connect to on the server, or 0 for the default.
key - The TSIG key used to authenticate the transfer, or null.
Returns:
The ZoneTransferIn object.
Throws:
UnknownHostException - The host does not exist.

newAXFR

public static ZoneTransferIn newAXFR(Name zone,
                                     String host,
                                     TSIG key)
                              throws UnknownHostException
Instantiates a ZoneTransferIn object to do an AXFR (full zone transfer).

Parameters:
zone - The zone to transfer.
host - The host from which to transfer the zone.
key - The TSIG key used to authenticate the transfer, or null.
Returns:
The ZoneTransferIn object.
Throws:
UnknownHostException - The host does not exist.

newIXFR

public static ZoneTransferIn newIXFR(Name zone,
                                     long serial,
                                     boolean fallback,
                                     SocketAddress address,
                                     TSIG key)
Instantiates a ZoneTransferIn object to do an IXFR (incremental zone transfer).

Parameters:
zone - The zone to transfer.
serial - The existing serial number.
fallback - If true, fall back to AXFR if IXFR is not supported.
address - The host/port from which to transfer the zone.
key - The TSIG key used to authenticate the transfer, or null.
Returns:
The ZoneTransferIn object.
Throws:
UnknownHostException - The host does not exist.

newIXFR

public static ZoneTransferIn newIXFR(Name zone,
                                     long serial,
                                     boolean fallback,
                                     String host,
                                     int port,
                                     TSIG key)
                              throws UnknownHostException
Instantiates a ZoneTransferIn object to do an IXFR (incremental zone transfer).

Parameters:
zone - The zone to transfer.
serial - The existing serial number.
fallback - If true, fall back to AXFR if IXFR is not supported.
host - The host from which to transfer the zone.
port - The port to connect to on the server, or 0 for the default.
key - The TSIG key used to authenticate the transfer, or null.
Returns:
The ZoneTransferIn object.
Throws:
UnknownHostException - The host does not exist.

newIXFR

public static ZoneTransferIn newIXFR(Name zone,
                                     long serial,
                                     boolean fallback,
                                     String host,
                                     TSIG key)
                              throws UnknownHostException
Instantiates a ZoneTransferIn object to do an IXFR (incremental zone transfer).

Parameters:
zone - The zone to transfer.
serial - The existing serial number.
fallback - If true, fall back to AXFR if IXFR is not supported.
host - The host from which to transfer the zone.
key - The TSIG key used to authenticate the transfer, or null.
Returns:
The ZoneTransferIn object.
Throws:
UnknownHostException - The host does not exist.

getName

public Name getName()
Gets the name of the zone being transferred.


getType

public int getType()
Gets the type of zone transfer (either AXFR or IXFR).


setTimeout

public void setTimeout(int secs)
Sets a timeout on this zone transfer. The default is 900 seconds (15 minutes).

Parameters:
secs - The maximum amount of time that this zone transfer can take.

setDClass

public void setDClass(int dclass)
Sets an alternate DNS class for this zone transfer.

Parameters:
dclass - The class to use instead of class IN.

setLocalAddress

public void setLocalAddress(SocketAddress addr)
Sets the local address to bind to when sending messages.

Parameters:
addr - The local address to send messages from.

run

public List run()
         throws IOException,
                ZoneTransferException
Does the zone transfer.

Returns:
A list, which is either an AXFR-style response (List of Records), and IXFR-style response (List of Deltas), or null, which indicates that an IXFR was performed and the zone is up to date.
Throws:
IOException - The zone transfer failed to due an IO problem.
ZoneTransferException - The zone transfer failed to due a problem with the zone transfer itself.

isAXFR

public boolean isAXFR()
Returns true if the response is an AXFR-style response (List of Records). This will be true if either an IXFR was performed, an IXFR was performed and the server provided a full zone transfer, or an IXFR failed and fallback to AXFR occurred.


getAXFR

public List getAXFR()
Gets the AXFR-style response.


isIXFR

public boolean isIXFR()
Returns true if the response is an IXFR-style response (List of Deltas). This will be true only if an IXFR was performed and the server provided an incremental zone transfer.


getIXFR

public List getIXFR()
Gets the IXFR-style response.


isCurrent

public boolean isCurrent()
Returns true if the response indicates that the zone is up to date. This will be true only if an IXFR was performed.