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 * Implements common functionality for the many record types whose format 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * is an unsigned 16 bit integer followed by a name. 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Brian Wellington 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenabstract class U16NameBase extends Record { 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate static final long serialVersionUID = -8315884183112502995L; 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected int u16Field; 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected Name nameField; 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenU16NameBase() {} 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenU16NameBase(Name name, int type, int dclass, long ttl) { 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(name, type, dclass, ttl); 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenU16NameBase(Name name, int type, int dclass, long ttl, int u16Field, 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen String u16Description, Name nameField, String nameDescription) 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{ 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(name, type, dclass, ttl); 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.u16Field = checkU16(u16Description, u16Field); 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.nameField = checkName(nameDescription, nameField); 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrFromWire(DNSInput in) throws IOException { 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen u16Field = in.readU16(); 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen nameField = new Name(in); 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrdataFromString(Tokenizer st, Name origin) throws IOException { 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen u16Field = st.getUInt16(); 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen nameField = st.getName(origin); 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenString 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrToString() { 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuffer sb = new StringBuffer(); 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen sb.append(u16Field); 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen sb.append(" "); 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen sb.append(nameField); 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return sb.toString(); 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected int 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetU16Field() { 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return u16Field; 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprotected Name 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetNameField() { 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return nameField; 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrToWire(DNSOutput out, Compression c, boolean canonical) { 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen out.writeU16(u16Field); 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen nameField.toWire(out, null, canonical); 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 76