示例#1
0
        private DHCPv4Packet(DHCPv4MessagesTypes responseType, DHCPv4Packet request) : this()
        {
            MessageType           = responseType;
            ClientHardwareAddress = ByteHelper.CopyData(request.ClientHardwareAddress);
            HardwareAddressLength = request.HardwareAddressLength;
            HardwareType          = request.HardwareType;
            TransactionId         = request.TransactionId;
            OpCode = DHCPv4PacketOperationCodes.BootReply;
            Hops   = 0;
            Flags  = request.Flags;

            if (request.GatewayIPAdress != IPv4Address.Empty)
            {
                GatewayIPAdress = IPv4Address.FromAddress(request.GatewayIPAdress);
            }

            AddOption(new DHCPv4PacketMessageTypeOption(responseType));

            var clientIdentifierOption = request.GetOptionByIdentifier(DHCPv4OptionTypes.ClientIdentifier);

            if (clientIdentifierOption != null)
            {
                AddOption(new DHCPv4PacketClientIdentifierOption(DHCPv4ClientIdentifier.FromOptionData(clientIdentifierOption.OptionData)));
            }
        }
示例#2
0
        public async Task GetErrorCodesPerDHCPv4RequestType()
        {
            Random          random    = new Random();
            DHCPv4RootScope rootScope = GetRootScope();

            var                 response   = new Dictionary <Int32, Int32>();
            DateTime            start      = DateTime.UtcNow.AddHours(-random.Next(5, 10));
            DateTime            end        = DateTime.UtcNow.AddHours(-random.Next(1, 2));
            DHCPv4MessagesTypes packetType = random.GetEnumValue <DHCPv4MessagesTypes>();

            Mock <IDHCPv4ReadStore> readStoreMock = new Mock <IDHCPv4ReadStore>(MockBehavior.Strict);

            readStoreMock.Setup(x => x.GetErrorCodesPerDHCPv4DHCPv4MessagesTypes(start, end, packetType)).ReturnsAsync(response).Verifiable();

            var controller   = new DHCPv4StatisticsController(rootScope, readStoreMock.Object);
            var actionResult = await controller.GetErrorCodesPerDHCPv4MessageTypes(new DHCPv4PacketTypeBasedTimeSeriesFilterRequest
            {
                Start       = start,
                End         = end,
                MessageType = packetType,
            });

            var result = actionResult.EnsureOkObjectResult <IDictionary <Int32, Int32> >(true);

            Assert.NotNull(result);
            Assert.Equal(response, result);

            readStoreMock.Verify();
        }
示例#3
0
 private void CheckPacket(DHCPv4Packet packet, DHCPv4MessagesTypes expectedType)
 {
     if (packet == null || packet.IsValid == false || packet.MessageType != expectedType)
     {
         throw new ScopeException(DHCPv4ScopeExceptionReasons.InvalidPacket);
     }
 }
示例#4
0
        private void AddOption(DHCPv4PacketOption option)
        {
            _options.Add(option);

            if (option is DHCPv4PacketMessageTypeOption option1)
            {
                MessageType = option1.Value;
            }
        }
示例#5
0
                private DHCPv4PacketHandledEntry(DHCPv4PacketHandledEvent handledEvent, DHCPv4MessagesTypes type) : this()
                {
                    Timestamp   = handledEvent.Timestamp;
                    RequestType = type;
                    Request     = new DHCPv4PacketInformation(handledEvent.Request);
                    ResultCode  = handledEvent.ErrorCode;
                    ScopeId     = handledEvent.ScopeId;

                    if (handledEvent.Response != null)
                    {
                        ResponseType = handledEvent.Response.MessageType;
                        Response     = new DHCPv4PacketInformation(handledEvent.Response);
                    }
                }
示例#6
0
 public DHCPv4PacketMessageTypeOption(DHCPv4MessagesTypes value) : base(
         (Byte)DHCPv4OptionTypes.MessageType,
         new byte[] { (Byte)value })
 {
     Value = value;
 }
示例#7
0
 public async Task <IDictionary <Int32, Int32> > GetErrorCodesPerDHCPv4RequestType(DateTime?start, DateTime?end, DHCPv4MessagesTypes packetType) =>
 await GetSimpleStatisticsData <Int32, Int32>(AppendTimeRangeToUrl($"/api/Statistics/ErrorCodesPerDHCPv4MessageType?MessageType={packetType}", start, end));