Esempio n. 1
0
 /**
  * builds a new Net_DNS2_Packet_Response object
  *
  * @param string  $data binary DNS packet
  * @param integer $size the length of the DNS packet
  *
  * @return boolean
  * @throws Net_DNS2_Exception
  * @access public
  *
  */
 public function set($data, $size)
 {
     //
     // store the full packet
     //
     $this->rdata = $data;
     $this->rdlength = $size;
     //
     // parse the header
     //
     // we don't bother checking the size earlier, because the first thing the
     // header class does, is check the size and throw and exception if it's
     // invalid.
     //
     $this->header = new Net_DNS2_Header($this);
     //
     // if the truncation bit is set, then just return right here, because the
     // rest of the packet is probably empty; and there's no point in processing
     // anything else.
     //
     // we also don't need to worry about checking to see if the the header is
     // null or not, since the Net_DNS2_Header() constructor will throw an
     // exception if the packet is invalid.
     //
     if ($this->header->tc == 1) {
         return false;
     }
     //
     // parse the questions
     //
     for ($x = 0; $x < $this->header->qdcount; ++$x) {
         $this->question[$x] = new Net_DNS2_Question($this);
     }
     //
     // parse the answers
     //
     for ($x = 0; $x < $this->header->ancount; ++$x) {
         $o = Net_DNS2_RR::parse($this);
         if (!is_null($o)) {
             $this->answer[] = $o;
         }
     }
     //
     // parse the authority section
     //
     for ($x = 0; $x < $this->header->nscount; ++$x) {
         $o = Net_DNS2_RR::parse($this);
         if (!is_null($o)) {
             $this->authority[] = $o;
         }
     }
     //
     // parse the additional section
     //
     for ($x = 0; $x < $this->header->arcount; ++$x) {
         $o = Net_DNS2_RR::parse($this);
         if (!is_null($o)) {
             $this->additional[] = $o;
         }
     }
     return true;
 }
Esempio n. 2
0
 /**
  * builds a new Net_DNS2_Packet_Response object
  *
  * @param string  $data binary DNS packet
  * @param integer $size the length of the DNS packet
  *
  * @return boolean
  * @throws Net_DNS2_Exception
  * @access public
  *
  */
 public function set($data, $size)
 {
     //
     // store the full packet
     //
     $this->rdata = $data;
     $this->rdlength = $size;
     //
     // parse the header
     //
     // we don't bother checking the size earlier, because the first thing the
     // header class does, it check the size and throw and exception if it's
     // invalid.
     //
     $this->header = new Net_DNS2_Header($this);
     //
     // parse the questions
     //
     for ($x = 0; $x < $this->header->qdcount; ++$x) {
         $this->question[$x] = new Net_DNS2_Question($this);
     }
     //
     // parse the answers
     //
     for ($x = 0; $x < $this->header->ancount; ++$x) {
         $o = Net_DNS2_RR::parse($this);
         if (!is_null($o)) {
             $this->answer[] = $o;
         }
     }
     //
     // parse the authority section
     //
     for ($x = 0; $x < $this->header->nscount; ++$x) {
         $o = Net_DNS2_RR::parse($this);
         if (!is_null($o)) {
             $this->authority[] = $o;
         }
     }
     //
     // parse the additional section
     //
     for ($x = 0; $x < $this->header->arcount; ++$x) {
         $o = Net_DNS2_RR::parse($this);
         if (!is_null($o)) {
             $this->additional[] = $o;
         }
     }
     return true;
 }