1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.xbill.DNS;
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.io.*;
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * X.400 mail mapping record.
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Brian Wellington
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class PXRecord extends Record {
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate static final long serialVersionUID = 1811540008806660667L;
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate int preference;
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate Name map822;
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate Name mapX400;
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenPXRecord() {}
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenRecord
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetObject() {
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return new PXRecord();
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates an PX Record from the given data
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param preference The preference of this mail address.
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param map822 The RFC 822 component of the mail address.
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param mapX400 The X.400 component of the mail address.
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenPXRecord(Name name, int dclass, long ttl, int preference,
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 Name map822, Name mapX400)
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	super(name, Type.PX, dclass, ttl);
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	this.preference = checkU16("preference", preference);
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	this.map822 = checkName("map822", map822);
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	this.mapX400 = checkName("mapX400", mapX400);
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrFromWire(DNSInput in) throws IOException {
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	preference = in.readU16();
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	map822 = new Name(in);
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	mapX400 = new Name(in);
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrdataFromString(Tokenizer st, Name origin) throws IOException {
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	preference = st.getUInt16();
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	map822 = st.getName(origin);
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	mapX400 = st.getName(origin);
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Converts the PX Record to a String */
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenString
61d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrToString() {
62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	StringBuffer sb = new StringBuffer();
63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	sb.append(preference);
64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	sb.append(" ");
65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	sb.append(map822);
66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	sb.append(" ");
67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	sb.append(mapX400);
68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return sb.toString();
69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid
72d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrToWire(DNSOutput out, Compression c, boolean canonical) {
73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	out.writeU16(preference);
74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	map822.toWire(out, null, canonical);
75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	mapX400.toWire(out, null, canonical);
76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Gets the preference of the route. */
79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic int
80d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetPreference() {
81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return preference;
82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Gets the RFC 822 component of the mail address. */
85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic Name
86d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetMap822() {
87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return map822;
88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** Gets the X.400 component of the mail address. */
91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic Name
92d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetMapX400() {
93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	return mapX400;
94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
97