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: A.php 113 2011-07-25 02:54:19Z 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 * A Resource Record - RFC1035 section 3.4.1 54 * 55 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 56 * | ADDRESS | 57 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 58 * 59 * @category Networking 60 * @package Net_DNS2 61 * @author Mike Pultz <mike@mikepultz.com> 62 * @license http://www.opensource.org/licenses/bsd-license.php BSD License 63 * @link http://pear.php.net/package/Net_DNS2 64 * @see Net_DNS2_RR 65 * 66 */ 67class Net_DNS2_RR_A extends Net_DNS2_RR 68{ 69 /* 70 * The IPv4 address in quad-dotted notation 71 */ 72 public $address; 73 74 /** 75 * method to return the rdata portion of the packet as a string 76 * 77 * @return string 78 * @access protected 79 * 80 */ 81 protected function rrToString() 82 { 83 return $this->address; 84 } 85 86 /** 87 * parses the rdata portion from a standard DNS config line 88 * 89 * @param array $rdata a string split line of values for the rdata 90 * 91 * @return boolean 92 * @access protected 93 * 94 */ 95 protected function rrFromString(array $rdata) 96 { 97 $value = array_shift($rdata); 98 99 if (Net_DNS2::isIPv4($value) == true) { 100 101 $this->address = $value; 102 return true; 103 } 104 105 return false; 106 } 107 108 /** 109 * parses the rdata of the Net_DNS2_Packet object 110 * 111 * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from 112 * 113 * @return boolean 114 * @access protected 115 * 116 */ 117 protected function rrSet(Net_DNS2_Packet &$packet) 118 { 119 if ($this->rdlength > 0) { 120 121 $this->address = inet_ntop($this->rdata); 122 if ($this->address !== false) { 123 124 return true; 125 } 126 } 127 128 return false; 129 } 130 131 /** 132 * returns the rdata portion of the DNS packet 133 * 134 * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for 135 * compressed names 136 * 137 * @return mixed either returns a binary packed 138 * string or null on failure 139 * @access protected 140 * 141 */ 142 protected function rrGet(Net_DNS2_Packet &$packet) 143 { 144 $packet->offset += 4; 145 return inet_pton($this->address); 146 } 147} 148 149/* 150 * Local variables: 151 * tab-width: 4 152 * c-basic-offset: 4 153 * c-hanging-comment-ender-p: nil 154 * End: 155 */ 156?> 157