NetworkPackets.Dns.DnsPacket.DnsPacket C# (CSharp) Method

DnsPacket() public method

Parses a MemBlock as a DnsPacket.
public DnsPacket ( MemBlock Packet ) : Brunet
Packet MemBlock The payload containing hte Dns Packet in byte format.
return Brunet
    public DnsPacket(MemBlock Packet) {
      ID = (short) ((Packet[0] << 8) + Packet[1]);
      Query = (bool) (((Packet[2] & 0x80) >> 7) == 0);
      Opcode = (byte) ((Packet[2] & 0x78) >> 3);

      if((Packet[2] & 0x4) == 0x4) {
        AA = true;
      }
      else {
        AA = false;
      }

      if((Packet[2] & 0x1) == 0x1) {
        RD = true;
      }
      else {
        RD = false;
      }

      if((Packet[3] & 0x80) == 0x80) {
        RA = true;
      }
      else {
        RA = false;
      }

      int qdcount = (Packet[4] << 8) + Packet[5];
      int ancount = (Packet[6] << 8) + Packet[7];
      int nscount = (Packet[8] << 8) + Packet[9];
      int arcount = (Packet[10] << 8) + Packet[11];
      int idx = 12;

      Questions = new Question[qdcount];
      for(int i = 0; i < qdcount; i++) {
        Questions[i] = new Question(Packet, idx);
        idx += Questions[i].Packet.Length;
      }

      Answers = new Response[ancount];
      for(int i = 0; i < ancount; i++) {
        Answers[i] = new Response(Packet, idx);
        idx += Answers[i].Packet.Length;
      }

      Authority = new Response[nscount];
      for(int i = 0; i < nscount; i++) {
        Authority[i] = new Response(Packet, idx);
        idx += Authority[i].Packet.Length;
      }

      Additional = new Response[arcount];
      for(int i = 0; i < arcount; i++) {
        Additional[i] = new Response(Packet, idx);
        idx += Additional[i].Packet.Length;
      }

      _icpacket = _packet = Packet;
    }

Same methods

DnsPacket::DnsPacket ( short ID, bool Query, byte Opcode, bool AA, bool RA, bool RD, Question Questions, Response Answers, Response Authority, Response Additional ) : Brunet