1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright (c) 1999-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 * Host Information - describes the CPU and OS of a host 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Brian Wellington 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class HINFORecord extends Record { 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate static final long serialVersionUID = -4732870630947452112L; 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenprivate byte [] cpu, os; 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenHINFORecord() {} 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenRecord 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetObject() { 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return new HINFORecord(); 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates an HINFO Record from the given data 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param cpu A string describing the host's CPU 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param os A string describing the host's OS 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @throws IllegalArgumentException One of the strings has invalid escapes 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenHINFORecord(Name name, int dclass, long ttl, String cpu, String os) { 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(name, Type.HINFO, dclass, ttl); 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen try { 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.cpu = byteArrayFromString(cpu); 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen this.os = byteArrayFromString(os); 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen catch (TextParseException e) { 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw new IllegalArgumentException(e.getMessage()); 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrFromWire(DNSInput in) throws IOException { 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen cpu = in.readCountedString(); 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen os = in.readCountedString(); 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrdataFromString(Tokenizer st, Name origin) throws IOException { 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen try { 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen cpu = byteArrayFromString(st.getString()); 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen os = byteArrayFromString(st.getString()); 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen catch (TextParseException e) { 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen throw st.exception(e.getMessage()); 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the host's CPU 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic String 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetCPU() { 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return byteArrayToString(cpu, false); 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns the host's OS 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic String 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChengetOS() { 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return byteArrayToString(os, false); 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrToWire(DNSOutput out, Compression c, boolean canonical) { 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen out.writeCountedString(cpu); 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen out.writeCountedString(os); 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Converts to a string 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenString 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenrrToString() { 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuffer sb = new StringBuffer(); 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen sb.append(byteArrayToString(cpu, true)); 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen sb.append(" "); 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen sb.append(byteArrayToString(os, true)); 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return sb.toString(); 93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 96