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