1 // Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)
2
3 package org.xbill.DNS;
4
5 import java.io.*;
6 import java.net.*;
7
8 /**
9 * IPv6 Address Record - maps a domain name to an IPv6 address
10 *
11 * @author Brian Wellington
12 */
13
14 public class AAAARecord extends Record {
15
16 private static final long serialVersionUID = -4588601512069748050L;
17
18 private InetAddress address;
19
AAAARecord()20 AAAARecord() {}
21
22 Record
getObject()23 getObject() {
24 return new AAAARecord();
25 }
26
27 /**
28 * Creates an AAAA Record from the given data
29 * @param address The address suffix
30 */
31 public
AAAARecord(Name name, int dclass, long ttl, InetAddress address)32 AAAARecord(Name name, int dclass, long ttl, InetAddress address) {
33 super(name, Type.AAAA, dclass, ttl);
34 if (Address.familyOf(address) != Address.IPv6)
35 throw new IllegalArgumentException("invalid IPv6 address");
36 this.address = address;
37 }
38
39 void
rrFromWire(DNSInput in)40 rrFromWire(DNSInput in) throws IOException {
41 address = InetAddress.getByAddress(name.toString(),
42 in.readByteArray(16));
43 }
44
45 void
rdataFromString(Tokenizer st, Name origin)46 rdataFromString(Tokenizer st, Name origin) throws IOException {
47 address = st.getAddress(Address.IPv6);
48 }
49
50 /** Converts rdata to a String */
51 String
rrToString()52 rrToString() {
53 return address.getHostAddress();
54 }
55
56 /** Returns the address */
57 public InetAddress
getAddress()58 getAddress() {
59 return address;
60 }
61
62 void
rrToWire(DNSOutput out, Compression c, boolean canonical)63 rrToWire(DNSOutput out, Compression c, boolean canonical) {
64 out.writeByteArray(address.getAddress());
65 }
66
67 }
68