NetworkPackets.Dhcp.DhcpPacket.DhcpPacket C# (CSharp) 메소드

DhcpPacket() 공개 메소드

Parse a MemBlock packet into a Dhcp Packet
public DhcpPacket ( MemBlock Packet ) : Brunet
Packet MemBlock The dhcp packet to parse
리턴 Brunet
    public DhcpPacket(MemBlock Packet) {
      if(Packet.Length < 240) {
        throw new Exception("Invalid Dhcp Packet:  Length < 240.");
      }

      _packet = Packet;
      op = Packet[0];
      int hlen = Packet[2];
      xid = Packet.Slice(4, 4);
      ciaddr = Packet.Slice(12, 4);
      yiaddr = Packet.Slice(16, 4);
      siaddr = Packet.Slice(20, 4);
      chaddr = Packet.Slice(28, hlen);
      MemBlock key = Packet.Slice(236, 4);
      if(!key.Equals(magic_key)) {
        throw new Exception("Invalid Dhcp Packet: Invalid magic key.");
      }
      int idx = 240;

      /* Parse the options */
      Options = new Dictionary<OptionTypes, MemBlock>();
      /*  255 is end of options */
      while(Packet[idx] != 255) {
        /* 0 is padding */
        if(Packet[idx] != 0) {
          OptionTypes type = (OptionTypes) Packet[idx++];
          byte length = Packet[idx++];
          Options[type] = Packet.Slice(idx, length);
          idx += length;
        }
        else {
          idx++;
        }
      }
    }

Same methods

DhcpPacket::DhcpPacket ( byte op, MemBlock xid, MemBlock ciaddr, MemBlock yiaddr, MemBlock siaddr, MemBlock chaddr, MemBlock>.Dictionary Options ) : Brunet
DhcpPacket