Exemplo n.º 1
0
        /// <summary>
        ///     Construct a resource record from a pointer to a byte array
        /// </summary>
        /// <param name="pointer"> the position in the byte array of the record </param>
        protected ResourceRecord(Pointer pointer)
        {
            // the next short is the record length, we only use it for unrecognised record types
            int recordLength = pointer.ReadShort();

            // and create the appropriate RDATA record based on the dnsType
            switch ((DnsType)pointer.ReadShort())
            {
            case DnsType.NS:
                this._record = new NSRecord(pointer);
                break;

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

            case DnsType.ANAME:
                this._record = new ANameRecord(pointer);
                break;

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

            default:
            {
                // move the pointer over this unrecognised record
                pointer += recordLength;
                break;
            }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 ///     Construct the question reading from a DNS Server response. Consult RFC1035 4.1.2
 ///     for byte-wise details of this structure in byte array form
 /// </summary>
 /// <param name="pointer"> a logical pointer to the Question in byte array form </param>
 public Question(Pointer pointer)
 {
     // extract from the message
     this._domain   = pointer.ReadDomain();
     this._dnsType  = (DnsType)pointer.ReadShort();
     this._dnsClass = (DnsClass)pointer.ReadShort();
 }
Exemplo n.º 3
0
        /// <summary>
        ///     Construct a resource record from a pointer to a byte array
        /// </summary>
        /// <param name="pointer"> the position in the byte array of the record </param>
        protected ResourceRecord(Pointer pointer)
        {
            // the next short is the record length, we only use it for unrecognised record types
            int recordLength = pointer.ReadShort();

            // and create the appropriate RDATA record based on the dnsType
            switch ((DnsType)pointer.ReadShort())
            {
                case DnsType.NS:
                    this._record = new NSRecord(pointer);
                    break;
                case DnsType.MX:
                    this._record = new MXRecord(pointer);
                    break;
                case DnsType.ANAME:
                    this._record = new ANameRecord(pointer);
                    break;
                case DnsType.SOA:
                    this._record = new SoaRecord(pointer);
                    break;
                default:
                    {
                        // move the pointer over this unrecognised record
                        pointer += recordLength;
                        break;
                    }
            }
        }
Exemplo n.º 4
0
 /// <summary>
 ///     Construct the question reading from a DNS Server response. Consult RFC1035 4.1.2
 ///     for byte-wise details of this structure in byte array form
 /// </summary>
 /// <param name="pointer"> a logical pointer to the Question in byte array form </param>
 public Question(Pointer pointer)
 {
     // extract from the message
     this._domain = pointer.ReadDomain();
     this._dnsType = (DnsType) pointer.ReadShort();
     this._dnsClass = (DnsClass) pointer.ReadShort();
 }
Exemplo n.º 5
0
 /// <summary>
 ///     Constructs an MX record by reading bytes from a return message
 /// </summary>
 /// <param name="pointer"> A logical pointer to the bytes holding the record </param>
 public MXRecord(Pointer pointer)
 {
     this._preference = pointer.ReadShort();
     this._domainName = pointer.ReadDomain();
 }
Exemplo n.º 6
0
 /// <summary>
 ///     Constructs an MX record by reading bytes from a return message
 /// </summary>
 /// <param name="pointer"> A logical pointer to the bytes holding the record </param>
 public MXRecord(Pointer pointer)
 {
     this._preference = pointer.ReadShort();
     this._domainName = pointer.ReadDomain();
 }