/** * 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; }
/** * 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; }