Net_DNS2
[ class tree: Net_DNS2 ] [ index: Net_DNS2 ] [ all elements ]

Source for file ATMA.php

Documentation is available at ATMA.php

  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: ATMA.php 179 2012-11-23 05:49:01Z mike.pultz $
  47.  * @link      http://pear.php.net/package/Net_DNS2
  48.  * @since     File available since Release 1.1.0
  49.  *
  50.  */
  51.  
  52. /**
  53.  * ATMA Resource Record
  54.  *
  55.  *   0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  56.  * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  57.  * |          FORMAT       |                       |
  58.  * |                       +--+--+--+--+--+--+--+--+
  59.  * /                    ADDRESS                    /
  60.  * |                                               |
  61.  * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  62.  *
  63.  * @category Networking
  64.  * @package  Net_DNS2
  65.  * @author   Mike Pultz <mike@mikepultz.com>
  66.  * @license  http://www.opensource.org/licenses/bsd-license.php  BSD License
  67.  * @link     http://pear.php.net/package/Net_DNS2
  68.  * @see      Net_DNS2_RR
  69.  *
  70.  */
  71. class Net_DNS2_RR_ATMA extends Net_DNS2_RR
  72. {
  73.     /*
  74.      * One octet that indicates the format of ADDRESS. The two possible values 
  75.      * for FORMAT are value 0 indicating ATM End System Address (AESA) format
  76.      * and value 1 indicating E.164 format
  77.      */
  78.     public $format;
  79.  
  80.     /*
  81.      * The IPv4 address in quad-dotted notation
  82.      */
  83.     public $address;
  84.  
  85.     /**
  86.      * method to return the rdata portion of the packet as a string
  87.      *
  88.      * @return  string 
  89.      * @access  protected
  90.      *
  91.      */
  92.     protected function rrToString()
  93.     {
  94.         return $this->address;
  95.     }
  96.  
  97.     /**
  98.      * parses the rdata portion from a standard DNS config line
  99.      *
  100.      * @param array $rdata a string split line of values for the rdata
  101.      *
  102.      * @return boolean 
  103.      * @access protected
  104.      *
  105.      */
  106.     protected function rrFromString(array $rdata)
  107.     {
  108.         $value = array_shift($rdata);
  109.  
  110.         if (ctype_xdigit($value== true{
  111.             
  112.             $this->format   = 0;
  113.             $this->address  = $value;
  114.  
  115.         else if (is_numeric($value== true{
  116.  
  117.             $this->format   = 1;
  118.             $this->address  = $value;
  119.  
  120.         else {
  121.  
  122.             return false;
  123.         }
  124.  
  125.         return true;
  126.     }
  127.  
  128.     /**
  129.      * parses the rdata of the Net_DNS2_Packet object
  130.      *
  131.      * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from
  132.      *
  133.      * @return boolean 
  134.      * @access protected
  135.      * 
  136.      */
  137.     protected function rrSet(Net_DNS2_Packet &$packet)
  138.     {
  139.         if ($this->rdlength > 0{
  140.  
  141.             //
  142.             // unpack the format
  143.             //
  144.             $x unpack('Cformat/N*address'$this->rdata);
  145.  
  146.             $this->format = $x['format'];
  147.  
  148.             if ($this->format == 0{
  149.  
  150.                 $a unpack('@1/H*address'$this->rdata);
  151.  
  152.                 $this->address = $a['address'];
  153.  
  154.             else if ($this->format == 1{
  155.  
  156.                 $this->address = substr($this->rdata1$this->rdlength - 1);
  157.  
  158.             else {
  159.  
  160.                 return false;
  161.             }
  162.  
  163.             return true;
  164.         }
  165.  
  166.         return false;
  167.     }
  168.  
  169.     /**
  170.      * returns the rdata portion of the DNS packet
  171.      * 
  172.      * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for
  173.      *                                  compressed names
  174.      *
  175.      * @return mixed                   either returns a binary packed
  176.      *                                  string or null on failure
  177.      * @access protected
  178.      * 
  179.      */
  180.     protected function rrGet(Net_DNS2_Packet &$packet)
  181.     {
  182.         $data chr($this->format);
  183.  
  184.         if ($this->format == 0{
  185.  
  186.             $data .= pack('H*'$this->address);
  187.  
  188.         else if ($this->format == 1{
  189.  
  190.             $data .= $this->address;
  191.  
  192.         else {
  193.  
  194.             return null;
  195.         }
  196.  
  197.         $packet->offset += strlen($data);
  198.         
  199.         return $data;
  200.     }
  201. }
  202.  
  203. /*
  204.  * Local variables:
  205.  * tab-width: 4
  206.  * c-basic-offset: 4
  207.  * c-hanging-comment-ender-p: nil
  208.  * End:
  209.  */
  210. ?>

Documentation generated on Sun, 01 Dec 2013 01:30:08 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.