1<?php 2/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ 3 4/** 5 * DNS Library for handling lookups and updates. 6 * 7 * PHP Version 5 8 * 9 * Copyright (c) 2010, Mike Pultz <mike@mikepultz.com>. 10 * All rights reserved. 11 * 12 * Redistribution and use in source and binary forms, with or without 13 * modification, are permitted provided that the following conditions 14 * are met: 15 * 16 * * Redistributions of source code must retain the above copyright 17 * notice, this list of conditions and the following disclaimer. 18 * 19 * * Redistributions in binary form must reproduce the above copyright 20 * notice, this list of conditions and the following disclaimer in 21 * the documentation and/or other materials provided with the 22 * distribution. 23 * 24 * * Neither the name of Mike Pultz nor the names of his contributors 25 * may be used to endorse or promote products derived from this 26 * software without specific prior written permission. 27 * 28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 30 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 31 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 32 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 33 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 34 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 35 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 36 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC 37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 38 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 39 * POSSIBILITY OF SUCH DAMAGE. 40 * 41 * @category Networking 42 * @package Net_DNS2 43 * @author Mike Pultz <mike@mikepultz.com> 44 * @copyright 2010 Mike Pultz <mike@mikepultz.com> 45 * @license http://www.opensource.org/licenses/bsd-license.php BSD License 46 * @version SVN: $Id: AFSDB.php 127 2011-12-03 03:29:39Z mike.pultz $ 47 * @link http://pear.php.net/package/Net_DNS2 48 * @since File available since Release 0.6.0 49 * 50 */ 51 52/** 53 * AFSDB Resource Record - RFC1183 section 1 54 * 55 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 56 * | SUBTYPE | 57 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 58 * / HOSTNAME / 59 * / / 60 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 61 * 62 * @category Networking 63 * @package Net_DNS2 64 * @author Mike Pultz <mike@mikepultz.com> 65 * @license http://www.opensource.org/licenses/bsd-license.php BSD License 66 * @link http://pear.php.net/package/Net_DNS2 67 * @see Net_DNS2_RR 68 * 69 */ 70class Net_DNS2_RR_AFSDB extends Net_DNS2_RR 71{ 72 /* 73 * The AFSDB sub type 74 */ 75 public $subtype; 76 77 /* 78 * The AFSDB hostname 79 */ 80 public $hostname; 81 82 /** 83 * method to return the rdata portion of the packet as a string 84 * 85 * @return string 86 * @access protected 87 * 88 */ 89 protected function rrToString() 90 { 91 return $this->subtype . ' ' . $this->cleanString($this->hostname) . '.'; 92 } 93 94 /** 95 * parses the rdata portion from a standard DNS config line 96 * 97 * @param array $rdata a string split line of values for the rdata 98 * 99 * @return boolean 100 * @access protected 101 * 102 */ 103 protected function rrFromString(array $rdata) 104 { 105 $this->subtype = array_shift($rdata); 106 $this->hostname = $this->cleanString(array_shift($rdata)); 107 108 return true; 109 } 110 111 /** 112 * parses the rdata of the Net_DNS2_Packet object 113 * 114 * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from 115 * 116 * @return boolean 117 * @access protected 118 * 119 */ 120 protected function rrSet(Net_DNS2_Packet &$packet) 121 { 122 if ($this->rdlength > 0) { 123 124 // 125 // unpack the subtype 126 // 127 $x = unpack('nsubtype', $this->rdata); 128 129 $this->subtype = $x['subtype']; 130 $offset = $packet->offset + 2; 131 132 $this->hostname = Net_DNS2_Packet::expand($packet, $offset); 133 134 return true; 135 } 136 137 return false; 138 } 139 140 /** 141 * returns the rdata portion of the DNS packet 142 * 143 * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for 144 * compressed names 145 * 146 * @return mixed either returns a binary packed 147 * string or null on failure 148 * @access protected 149 * 150 */ 151 protected function rrGet(Net_DNS2_Packet &$packet) 152 { 153 if (strlen($this->hostname) > 0) { 154 155 $data = pack('n', $this->subtype); 156 $packet->offset += 2; 157 158 $data .= $packet->compress($this->hostname, $packet->offset); 159 160 return $data; 161 } 162 163 return null; 164 } 165} 166 167/* 168 * Local variables: 169 * tab-width: 4 170 * c-basic-offset: 4 171 * c-hanging-comment-ender-p: nil 172 * End: 173 */ 174?> 175