Пример #1
0
        public Response(byte[] data)
        {
            Error     = "";
            TimeStamp = DateTime.Now;

            Header = new Header(data);

            using (PersistedReader reader = new PersistedReader(Header.Buffer, Header.Payload))
            {
                for (int intI = 0; intI < Header.QuestionCount; intI++)
                {
                    Questions.Add(new Question(reader));
                }

                for (int intI = 0; intI < Header.AnswersCount; intI++)
                {
                    Answers.Add(new Resource(reader));
                }

                for (int intI = 0; intI < Header.AuthorityCount; intI++)
                {
                    Authorities.Add(new Resource(reader));
                }

                for (int intI = 0; intI < Header.AdditionalCount; intI++)
                {
                    Additionals.Add(new Resource(reader));
                }
            }
        }
Пример #2
0
 public RKEY(PersistedReader reader)
 {
     Flags    = reader.ReadUInt16();
     Protocol = reader.ReadByte();
     Algo     = reader.ReadByte();
     PKey     = reader.ReadString();
 }
Пример #3
0
 public RSRV(PersistedReader reader)
 {
     Priority = reader.ReadUInt16();
     Weigth   = reader.ReadUInt16();
     Port     = reader.ReadUInt16();
     Target   = reader.ReadDomainName();
 }
Пример #4
0
        public RNULL(PersistedReader reader)
        {
            reader.BaseStream.Position -= 2;
            ushort length = reader.ReadUInt16();

            Buffer = new byte[length];
            Buffer = reader.ReadBytes(Buffer.Length);
        }
Пример #5
0
        public RTXT(PersistedReader reader, int len)
        {
            long pos = reader.BaseStream.Position;

            while ((reader.BaseStream.Position - pos) < len)
            {
                Txt.Add(reader.ReadString());
            }
        }
Пример #6
0
 public RNAPTR(PersistedReader reader)
 {
     Order       = reader.ReadUInt16();
     Preference  = reader.ReadUInt16();
     Flags       = reader.ReadString();
     Services    = reader.ReadString();
     RegeXp      = reader.ReadString();
     Replacement = reader.ReadDomainName();
 }
Пример #7
0
 public Resource(PersistedReader reader)
 {
     Name   = reader.ReadDomainName();
     Type   = (Type)reader.ReadUInt16();
     Class  = (Class)reader.ReadUInt16();
     TTL    = reader.ReadUInt32();
     Length = reader.ReadUInt16();
     RECORD = ReadRecord(reader, Type, Length);
 }
Пример #8
0
 public RSOA(PersistedReader reader)
 {
     MName   = reader.ReadDomainName();
     RName   = reader.ReadDomainName();
     Serial  = reader.ReadUInt16();
     Refresh = reader.ReadUInt16();
     Retry   = reader.ReadUInt16();
     Expire  = reader.ReadUInt16();
     Minimum = reader.ReadUInt16();
 }
Пример #9
0
 public RLOC(PersistedReader reader)
 {
     Version     = reader.ReadByte();         // must be 0!
     Size        = reader.ReadByte();
     HPreference = reader.ReadByte();
     VPreference = reader.ReadByte();
     Latitude    = reader.ReadUInt16();
     Longitude   = reader.ReadUInt16();
     Altitude    = reader.ReadUInt16();
 }
Пример #10
0
 public RSIG(PersistedReader reader)
 {
     TypeCovered   = reader.ReadUInt16();
     Algo          = reader.ReadByte();
     Labels        = reader.ReadByte();
     TTL           = reader.ReadUInt16();
     SigExpiration = reader.ReadUInt16();
     SigInception  = reader.ReadUInt16();
     KeyTag        = reader.ReadUInt16();
     SigName       = reader.ReadDomainName();
     Sig           = reader.ReadString();
 }
Пример #11
0
        public RDS(PersistedReader reader)
        {
            reader.BaseStream.Position -= 2;
            ushort length = reader.ReadUInt16();

            KeyTag     = reader.ReadUInt16();
            Algo       = reader.ReadByte();
            DigestType = reader.ReadByte();
            length    -= 4;
            Digest     = new byte[length];
            Digest     = reader.ReadBytes(Digest.Length);
        }
Пример #12
0
 public RTKEY(PersistedReader reader)
 {
     Algo              = reader.ReadDomainName();
     Inception         = reader.ReadUInt16();
     Expiration        = reader.ReadUInt16();
     Mode              = reader.ReadUInt16();
     EResourceRecordOR = reader.ReadUInt16();
     KeySize           = reader.ReadUInt16();
     KeyData           = reader.ReadBytes(KeySize);
     PayloadLength     = reader.ReadUInt16();
     PayloadData       = reader.ReadBytes(PayloadLength);
 }
Пример #13
0
        public Request(byte[] data)
        {
            Header = new Header(data);

            using (PersistedReader reader = new PersistedReader(Header.Buffer, Header.Payload))
            {
                for (int i = 0; i < Header.QuestionCount; i++)
                {
                    Questions.Add(new Question(reader));
                }
            }
        }
Пример #14
0
 public RTSIG(PersistedReader reader)
 {
     AlgoName          = reader.ReadDomainName();
     TimeSIgned        = reader.ReadUInt16() << 32 | reader.ReadUInt16();
     Fudge             = reader.ReadUInt16();
     MacSize           = reader.ReadUInt16();
     Mac               = reader.ReadBytes(MacSize);
     OriginalID        = reader.ReadUInt16();
     EResourceRecordOR = reader.ReadUInt16();
     PayloadLength     = reader.ReadUInt16();
     PayloadData       = reader.ReadBytes(PayloadLength);
 }
Пример #15
0
 public RAAAA(PersistedReader reader)
 {
     if (IPAddress.TryParse(string.Format("{0:x}:{1:x}:{2:x}:{3:x}:{4:x}:{5:x}:{6:x}:{7:x}",
                                          reader.ReadUInt16(), reader.ReadUInt16(), reader.ReadUInt16(), reader.ReadUInt16(),
                                          reader.ReadUInt16(), reader.ReadUInt16(), reader.ReadUInt16(), reader.ReadUInt16()),
                            out IPAddress address))
     {
         this.Address = address;
     }
     else
     {
         Address = IPAddress.Any;
     }
 }
Пример #16
0
        public RWKS(PersistedReader reader)
        {
            reader.BaseStream.Position -= 2;
            ushort length = reader.ReadUInt16();

            Address = string.Format("{0}.{1}.{2}.{3}",
                                    reader.ReadByte(),
                                    reader.ReadByte(),
                                    reader.ReadByte(),
                                    reader.ReadByte());
            Protocol = (int)reader.ReadByte();
            length  -= 5;
            Bitmap   = new byte[length];
            Bitmap   = reader.ReadBytes(length);
        }
Пример #17
0
        public BaseRecord ReadRecord(PersistedReader pReader, Type type, int len)
        {
            switch (type)
            {
            case Type.A:
                return(new RA(pReader));

            case Type.NS:
                return(new RNS(pReader));

            case Type.CNAME:
                return(new RCNAME(pReader));

            case Type.SOA:
                return(new RSOA(pReader));

            case Type.MB:
                return(new RMB(pReader));

            case Type.MG:
                return(new RMG(pReader));

            case Type.MR:
                return(new RMR(pReader));

            case Type.NULL:
                return(new RNULL(pReader));

            case Type.WKS:
                return(new RWKS(pReader));

            case Type.PTR:
                return(new RPTR(pReader));

            case Type.HINFO:
                return(new RHINFO(pReader));

            case Type.MINFO:
                return(new RMINFO(pReader));

            case Type.MX:
                return(new RMX(pReader));

            case Type.TXT:
                return(new RTXT(pReader, len));

            case Type.RP:
                return(new RRP(pReader));

            case Type.AFSDB:
                return(new RAFSDB(pReader));

            case Type.X25:
                return(new RX25(pReader));

            case Type.ISDN:
                return(new RISDN(pReader));

            case Type.RT:
                return(new RRT(pReader));

            case Type.NSAP:
                return(new RNSAP(pReader));

            case Type.SIG:
                return(new RSIG(pReader));

            case Type.KEY:
                return(new RKEY(pReader));

            case Type.PX:
                return(new RPX(pReader));

            case Type.AAAA:
                return(new RAAAA(pReader));

            case Type.LOC:
                return(new RLOC(pReader));

            case Type.SRV:
                return(new RSRV(pReader));

            case Type.NAPTR:
                return(new RNAPTR(pReader));

            case Type.KX:
                return(new RKX(pReader));

            case Type.DNAME:
                return(new RDNAME(pReader));

            case Type.DS:
                return(new RDS(pReader));

            case Type.TKEY:
                return(new RTKEY(pReader));

            case Type.TSIG:
                return(new RTSIG(pReader));

            default:
                return(new RUnknown(pReader));
            }
        }
Пример #18
0
 public RA(PersistedReader reader)
 {
     Address = new IPAddress(reader.ReadBytes(4));
 }
Пример #19
0
 public RRP(PersistedReader reader)
 {
     MboxdName = reader.ReadDomainName();
     TxtdName  = reader.ReadDomainName();
 }
Пример #20
0
 public RDNAME(PersistedReader reader)
 {
     Target = reader.ReadDomainName();
 }
Пример #21
0
 public RPTR(PersistedReader reader)
 {
     PtrdName = reader.ReadDomainName();
 }
Пример #22
0
 public Question(PersistedReader reader)
 {
     QName  = reader.ReadDomainName();
     QType  = (Type)reader.ReadUInt16();
     QClass = (Class)reader.ReadUInt16();
 }
Пример #23
0
 public RKX(PersistedReader reader)
 {
     Preference = reader.ReadUInt16();
     Exchanger  = reader.ReadDomainName();
 }
Пример #24
0
 public RAFSDB(PersistedReader reader)
 {
     SubType  = reader.ReadUInt16();
     HostName = reader.ReadDomainName();
 }
Пример #25
0
 public RRT(PersistedReader reader)
 {
     Preference = reader.ReadUInt16();
     InterHost  = reader.ReadDomainName();
 }
Пример #26
0
 public RX25(PersistedReader reader)
 {
     PsdnAddress = reader.ReadString();
 }
Пример #27
0
 public RCNAME(PersistedReader reader)
 {
     CName = reader.ReadDomainName();
 }
Пример #28
0
 public RNSAP(PersistedReader reader)
 {
     Length      = reader.ReadUInt16();
     NsapAddress = reader.ReadBytes(Length);
 }
Пример #29
0
 public RMG(PersistedReader reader)
 {
     MgmName = reader.ReadDomainName();
 }
Пример #30
0
 public RHINFO(PersistedReader reader)
 {
     Cpu = reader.ReadString();
     OS  = reader.ReadString();
 }