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) 2011, 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 2011 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 1.2.0
49 *
50 */
51
52/**
53 * TALINK Resource Record - DNSSEC Trust Anchor
54 *
55 * http://tools.ietf.org/id/draft-ietf-dnsop-dnssec-trust-history-00.txt
56 *
57 *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
58 *    /                   PREVIOUS                    /
59 *    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
60 *    /                     NEXT                      /
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 */
71class Net_DNS2_RR_TALINK extends Net_DNS2_RR
72{
73    /*
74     * the previous domain name
75     */
76    public $previous;
77
78    /*
79     * the next domain name
80     */
81    public $next;
82
83    /**
84     * method to return the rdata portion of the packet as a string
85     *
86     * @return  string
87     * @access  protected
88     *
89     */
90    protected function rrToString()
91    {
92        return $this->cleanString($this->previous) . '. ' .
93            $this->cleanString($this->next) . '.';
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        $this->previous = $this->cleanString($rdata[0]);
108        $this->next     = $this->cleanString($rdata[1]);
109
110        return true;
111    }
112
113    /**
114     * parses the rdata of the Net_DNS2_Packet object
115     *
116     * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet to parse the RR from
117     *
118     * @return boolean
119     * @access protected
120     *
121     */
122    protected function rrSet(Net_DNS2_Packet &$packet)
123    {
124        if ($this->rdlength > 0) {
125
126            $offset         = $packet->offset;
127
128            $this->previous = Net_DNS2_Packet::label($packet, $offset);
129            $this->next     = Net_DNS2_Packet::label($packet, $offset);
130
131            return true;
132        }
133
134        return false;
135    }
136
137    /**
138     * returns the rdata portion of the DNS packet
139     *
140     * @param Net_DNS2_Packet &$packet a Net_DNS2_Packet packet use for
141     *                                 compressed names
142     *
143     * @return mixed                   either returns a binary packed
144     *                                 string or null on failure
145     * @access protected
146     *
147     */
148    protected function rrGet(Net_DNS2_Packet &$packet)
149    {
150        if ( (strlen($this->previous) > 0) || (strlen($this->next) > 0) ) {
151
152            $data = chr(strlen($this->previous)) . $this->previous .
153                chr(strlen($this->next)) . $this->next;
154
155            $packet->offset += strlen($data);
156
157            return $data;
158        }
159
160        return null;
161    }
162}
163
164/*
165 * Local variables:
166 * tab-width: 4
167 * c-basic-offset: 4
168 * c-hanging-comment-ender-p: nil
169 * End:
170 */
171?>
172