"Fossies" - the Fresh Open Source Software Archive

Member "serendipity/bundled-libs/Net/DNS2/RR/AAAA.php" (20 Nov 2022, 5491 Bytes) of package /linux/www/serendipity-2.4.0.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PHP source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "AAAA.php" see the Fossies "Dox" file reference documentation.

    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$
   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  *    |                                               |       
   57  *    |                                               |       
   58  *    |                                               |       
   59  *    |                    ADDRESS                    |       
   60  *    |                                               |       
   61  *    |                   (128 bit)                   |       
   62  *    |                                               |       
   63  *    |                                               |       
   64  *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   65  * 
   66  * @category Networking
   67  * @package  Net_DNS2
   68  * @author   Mike Pultz <mike@mikepultz.com>
   69  * @license  http://www.opensource.org/licenses/bsd-license.php  BSD License
   70  * @link     http://pear.php.net/package/Net_DNS2
   71  * @see      Net_DNS2_RR
   72  *
   73  */
   74 class Net_DNS2_RR_AAAA extends Net_DNS2_RR
   75 {
   76     /*
   77      * the IPv6 address in the preferred hexadecimal values of the eight 
   78      * 16-bit pieces 
   79      * per RFC1884
   80      *
   81      */
   82     public $address;
   83 
   84     /**
   85      * method to return the rdata portion of the packet as a string
   86      *
   87      * @return  string
   88      * @access  protected
   89      *
   90      */
   91     protected function rrToString()
   92     {
   93         return $this->address;
   94     }
   95 
   96     /**
   97      * parses the rdata portion from a standard DNS config line
   98      *
   99      * @param array $rdata a string split line of values for the rdata
  100      *
  101      * @return boolean
  102      * @access protected
  103      *
  104      */
  105     protected function rrFromString(array $rdata)
  106     {
  107         //
  108         // expand out compressed formats
  109         //
  110         $value = array_shift($rdata);
  111         if (Net_DNS2::isIPv6($value) == true) {
  112 
  113             $this->address = $value;
  114             return true;
  115         }
  116             
  117         return false;
  118     }
  119 
  120     /**
  121      * parses the rdata of the Net_DNS2_Packet object
  122      *
  123      * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from
  124      *
  125      * @return boolean
  126      * @access protected
  127      *
  128      */
  129     protected function rrSet(Net_DNS2_Packet &$packet)
  130     {
  131         //
  132         // must be 8 x 16bit chunks, or 16 x 8bit
  133         //
  134         if ($this->rdlength == 16) {
  135 
  136             //
  137             // PHP's inet_ntop returns IPv6 addresses in their compressed form,
  138             // but we want to keep with the preferred standard, so we'll parse
  139             // it manually.
  140             //
  141             $x = unpack('n8', $this->rdata);
  142             if (count($x) == 8) {
  143 
  144                 $this->address = vsprintf('%x:%x:%x:%x:%x:%x:%x:%x', $x);
  145                 return true;
  146             }
  147         }
  148         
  149         return false;
  150     }
  151 
  152     /**
  153      * returns the rdata portion of the DNS packet
  154      *
  155      * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for
  156      *                                 compressed names
  157      *
  158      * @return mixed                   either returns a binary packed
  159      *                                 string or null on failure
  160      * @access protected
  161      *
  162      */
  163     protected function rrGet(Net_DNS2_Packet &$packet)
  164     {
  165         $packet->offset += 16;
  166         return inet_pton($this->address);
  167     }
  168 }
  169 
  170 /*
  171  * Local variables:
  172  * tab-width: 4
  173  * c-basic-offset: 4
  174  * c-hanging-comment-ender-p: nil
  175  * End:
  176  */
  177 ?>