~ubuntu-branches/ubuntu/utopic/php-net-dns2/utopic-proposed

« back to all changes in this revision

Viewing changes to Net_DNS2-1.3.2/Net/DNS2/RR/PX.php

  • Committer: Package Import Robot
  • Author(s): Mathieu Parent
  • Date: 2014-02-21 16:59:58 UTC
  • Revision ID: package-import@ubuntu.com-20140221165958-tyc92gchfhho9660
Tags: upstream-1.3.2
ImportĀ upstreamĀ versionĀ 1.3.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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: PX.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
 * PX Resource Record - RFC2163 section 4
 
54
 *
 
55
 *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 
56
 *    |                  PREFERENCE                   |
 
57
 *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 
58
 *    /                    MAP822                     /
 
59
 *    /                                               /
 
60
 *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
 
61
 *    /                    MAPX400                    /
 
62
 *    /                                               /
 
63
 *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--
 
64
 *
 
65
 * @category Networking
 
66
 * @package  Net_DNS2
 
67
 * @author   Mike Pultz <mike@mikepultz.com>
 
68
 * @license  http://www.opensource.org/licenses/bsd-license.php  BSD License
 
69
 * @link     http://pear.php.net/package/Net_DNS2
 
70
 * @see      Net_DNS2_RR
 
71
 *
 
72
 */
 
73
class Net_DNS2_RR_PX extends Net_DNS2_RR
 
74
{
 
75
    /*
 
76
     * preference
 
77
     */
 
78
    public $preference;
 
79
 
 
80
    /* 
 
81
     * the RFC822 part of the MCGAM
 
82
     */
 
83
    public $map822;
 
84
 
 
85
    /*
 
86
     * the X.400 part of the MCGAM
 
87
     */
 
88
    public $mapx400;
 
89
 
 
90
    /**
 
91
     * method to return the rdata portion of the packet as a string
 
92
     *
 
93
     * @return  string
 
94
     * @access  protected
 
95
     *
 
96
     */
 
97
    protected function rrToString()
 
98
    {
 
99
        return $this->preference . ' ' . $this->cleanString($this->map822) . '. ' . 
 
100
            $this->cleanString($this->mapx400) . '.';
 
101
    }
 
102
 
 
103
    /**
 
104
     * parses the rdata portion from a standard DNS config line
 
105
     *
 
106
     * @param array $rdata a string split line of values for the rdata
 
107
     *
 
108
     * @return boolean
 
109
     * @access protected
 
110
     *
 
111
     */
 
112
    protected function rrFromString(array $rdata)
 
113
    {
 
114
        $this->preference   = $rdata[0];
 
115
        $this->map822       = $this->cleanString($rdata[1]);
 
116
        $this->mapx400      = $this->cleanString($rdata[2]);
 
117
 
 
118
        return true;
 
119
    }
 
120
 
 
121
    /**
 
122
     * parses the rdata of the Net_DNS2_Packet object
 
123
     *
 
124
     * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from
 
125
     *
 
126
     * @return boolean
 
127
     * @access protected
 
128
     *
 
129
     */
 
130
    protected function rrSet(Net_DNS2_Packet &$packet)
 
131
    {
 
132
        if ($this->rdlength > 0) {
 
133
 
 
134
            //
 
135
            // parse the preference
 
136
            //
 
137
            $x = unpack('npreference', $this->rdata);
 
138
            $this->preference = $x['preference'];
 
139
 
 
140
            $offset         = $packet->offset + 2;
 
141
 
 
142
            $this->map822   = Net_DNS2_Packet::expand($packet, $offset);
 
143
            $this->mapx400  = Net_DNS2_Packet::expand($packet, $offset);
 
144
 
 
145
            return true;
 
146
        }
 
147
 
 
148
        return false;
 
149
    }
 
150
 
 
151
    /**
 
152
     * returns the rdata portion of the DNS packet
 
153
     *
 
154
     * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for
 
155
     *                                 compressed names
 
156
     *
 
157
     * @return mixed                   either returns a binary packed
 
158
     *                                 string or null on failure
 
159
     * @access protected
 
160
     *
 
161
     */
 
162
    protected function rrGet(Net_DNS2_Packet &$packet)
 
163
    {
 
164
        if (strlen($this->map822) > 0) {
 
165
            
 
166
            $data = pack('n', $this->preference);
 
167
            $packet->offset += 2;
 
168
 
 
169
            $data .= $packet->compress($this->map822, $packet->offset);
 
170
            $data .= $packet->compress($this->mapx400, $packet->offset);
 
171
 
 
172
            return $data;
 
173
        }
 
174
 
 
175
        return null;
 
176
    }
 
177
}
 
178
 
 
179
/*
 
180
 * Local variables:
 
181
 * tab-width: 4
 
182
 * c-basic-offset: 4
 
183
 * c-hanging-comment-ender-p: nil
 
184
 * End:
 
185
 */
 
186
?>