示例#1
0
 internal SoaRecord(SmartPointer pointer)
 {
     _primaryNameServer      = pointer.ReadDomain();
     _responsibleMailAddress = pointer.ReadDomain();
     _serial     = pointer.ReadInt();
     _refresh    = pointer.ReadInt();
     _retry      = pointer.ReadInt();
     _expire     = pointer.ReadInt();
     _defaultTTL = pointer.ReadInt();
 }
示例#2
0
 internal SoaRecord(SmartPointer pointer)
 {
     _primaryNameServer = pointer.ReadDomain();
     _responsibleMailAddress = pointer.ReadDomain();
     _serial = pointer.ReadInt();
     _refresh = pointer.ReadInt();
     _retry = pointer.ReadInt();
     _expire = pointer.ReadInt();
     _defaultTTL = pointer.ReadInt();
 }
示例#3
0
        internal ResourceRecord(SmartPointer pointer)
        {
            _domain   = pointer.ReadDomain();
            _dnsType  = (DnsType)pointer.ReadShort();
            _dnsClass = (DnsClass)pointer.ReadShort();
            _ttl      = pointer.ReadInt();

            int recordLength = pointer.ReadShort();

            switch (_dnsType)
            {
            case DnsType.ANAME: _record = new ANameRecord(pointer); break;

            case DnsType.MX: _record = new MxRecord(pointer); break;

            case DnsType.NS: _record = new NsRecord(pointer); break;

            case DnsType.SOA: _record = new NsRecord(pointer); break;

            case DnsType.CNAME: _record = new CNameRecord(pointer); break;

            case DnsType.PTR: _record = new CNameRecord(pointer); break;

            default:
                pointer += recordLength;
                break;
            }
        }
示例#4
0
        /// <summary>
        /// reads an entire string of format xx.yy.zz
        /// </summary>
        /// <returns></returns>
        public string ReadDomain()
        {
            StringBuilder domain = new StringBuilder();
            int           len    = 0;

            while ((len = ReadByte()) != 0)
            {
                if ((len & 0xc0) == 0xc0)
                {
                    SmartPointer newPointer = Copy();
                    newPointer.SetPosition((len & 0x3f) << 8 | ReadByte());

                    domain.Append(newPointer.ReadDomain());
                    return(domain.ToString());
                }

                while (len > 0)
                {
                    domain.Append(ReadChar());
                    len--;
                }

                if (Peek() != 0)
                {
                    domain.Append('.');
                }
            }

            return(domain.ToString());
        }
示例#5
0
        internal ResourceRecord(SmartPointer pointer)
        {
            _domain = pointer.ReadDomain();
            _dnsType = (DnsType)pointer.ReadShort();
            _dnsClass = (DnsClass)pointer.ReadShort();
            _ttl = pointer.ReadInt();

            int recordLength = pointer.ReadShort();

            switch (_dnsType)
            {
                case DnsType.ANAME: _record = new ANameRecord(pointer); break;
                case DnsType.MX: _record = new MxRecord(pointer); break;
                case DnsType.NS: _record = new NsRecord(pointer); break;
                case DnsType.SOA: _record = new NsRecord(pointer); break;
                case DnsType.CNAME: _record = new CNameRecord(pointer); break;
                case DnsType.PTR: _record = new CNameRecord(pointer); break;
                default:
                    pointer += recordLength;
                    break;
            }
        }
示例#6
0
 internal Query(SmartPointer pointer)
 {
     _domain = pointer.ReadDomain();
     _dnsType = (DnsType)pointer.ReadShort();
     _dnsClass = (DnsClass)pointer.ReadShort();
 }
示例#7
0
 internal MxRecord(SmartPointer pointer)
 {
     _preference = pointer.ReadShort();
     _domainName = pointer.ReadDomain();
 }
示例#8
0
 internal CNameRecord(SmartPointer pointer)
 {
     _domain = pointer.ReadDomain();
 }
示例#9
0
 internal NsRecord(SmartPointer pointer)
 {
     _domainName = pointer.ReadDomain();
 }
示例#10
0
 internal RouteThroughRecord(SmartPointer pointer)
 {
     _preference       = pointer.ReadShort();
     _intermediateHost = pointer.ReadDomain();
 }
示例#11
0
 internal CNameRecord(SmartPointer pointer)
 {
     _domain = pointer.ReadDomain();
 }
示例#12
0
 internal Query(SmartPointer pointer)
 {
     _domain   = pointer.ReadDomain();
     _dnsType  = (DnsType)pointer.ReadShort();
     _dnsClass = (DnsClass)pointer.ReadShort();
 }
示例#13
0
 internal NsRecord(SmartPointer pointer)
 {
     _domainName = pointer.ReadDomain();
 }
示例#14
0
 internal MxRecord(SmartPointer pointer)
 {
     _preference = pointer.ReadShort();
     _domainName = pointer.ReadDomain();
 }
示例#15
0
 internal RouteThroughRecord(SmartPointer pointer)
 {
     _preference = pointer.ReadShort();
     _intermediateHost = pointer.ReadDomain();
 }