background image

 define( "DNS_OPCODE_UPDATE", 0x2000 );

 define( "DNS_RCODE_SUCCESSFUL"   , 0x0001 );
 define( "DNS_RCODE_MALFORMATED"  , 0x0002 );
 define( "DNS_RCODE_FAILEDSERVER" , 0x0003 );
 define( "DNS_RCODE_NAMEERROR"    , 0x0004 );
 define( "DNS_RCODE_UNIMPLEMENTED", 0x0005 );
 define( "DNS_RCODE_REFUSED"      , 0x0006 );

 define( "DNS_HEADERSPEC_IS_RESPONSE"         , 0x8000 );
 define( "DNS_HEADERSPEC_OPCODE_MASK"         , 0x7800 );
 define( "DNS_HEADERSPEC_AUTHORITIVE_ANSWER"  , 0x0400 );
 define( "DNS_HEADERSPEC_TRUNCATED"           , 0x0200 );
 define( "DNS_HEADERSPEC_RECURSION_DESIRED"   , 0x0100 );
 define( "DNS_HEADERSPEC_RECURSION_AVAILABLE" , 0x0080 );
 define( "DNS_HEADERSPEC_RESPONSE_SPEC_MASK"  , 0x0480 );
 define( "DNS_HEADERSPEC_QUERY_SPEC_MASK"     , 0x0300 );
 define( "DNS_HEADERSPEC_RESERVED"            , 0x0e00 );
 define( "DNS_HEADERSPEC_RESULT_CODE_MASK"    , 0x000f );

 define( "DNS_CLASS_INTERNET"                 , 0x0001 );

 define( "DNS_UDP_PACKET_MAX_LENGTH", 512 );

 class DNSRecord
 {
  var $type;
  var $name;
  var $dclass;
  var $ttl;
  var $specific_fields;

  function DNSRecord(
    $name,
    $type,
    $dclass = DNS_CLASS_INTERNET,
    $ttl = 0,
    $specific_fields = false ) {
   $this->name = $name;
   $this->type = $type;
   $this->dclass = $dclass;
   $this->ttl = $ttl;
   $this->specific_fields = $specific_fields;
  }