Exemplo n.º 1
0
        private async Task SendNak(DhcpMessage message, IPAddress requestedAddress)
        {
            Log.Debug("[NAK] Creating the negative acknowledgement");

            message.OperationCode   = DhcpOperation.BootReply;
            message.YourIPAddress   = requestedAddress;
            message.ServerIPAddress = DhcpInterfaceAddress;

            var optionBuilder = new DhcpOptionBuilder();

            optionBuilder.AddOption(DhcpOptionCode.DhcpMessageType, DhcpMessageType.Nak);

            var packet = MessageSerializer.ToPacket(message, optionBuilder.GetBytes());

            await this.SendReply(packet).ConfigureAwait(false);

            Log.Debug($"[NAK] IP Address '{requestedAddress}' was sent over '{IPAddress.Broadcast}'");
        }
Exemplo n.º 2
0
        private async Task SendAck(DhcpMessage message, IPAddress clientAddress)
        {
            Log.Debug($"[ACK] Creating the acknowledgement");

            message.OperationCode   = DhcpOperation.BootReply;
            message.YourIPAddress   = clientAddress;
            message.ServerIPAddress = DhcpInterfaceAddress;

            var optionBuilder = new DhcpOptionBuilder();

            optionBuilder.AddOption(DhcpOptionCode.DhcpMessageType, DhcpMessageType.Ack);
            optionBuilder.AddOption(DhcpOptionCode.DhcpAddress, DhcpInterfaceAddress);
            optionBuilder.AddOption(DhcpOptionCode.SubnetMask, Configuration.SubnetMask);
            optionBuilder.AddOption(DhcpOptionCode.Router, Configuration.Gateway);
            optionBuilder.AddOption(DhcpOptionCode.AddressTime, Configuration.LeaseTimeSeconds, true);

            var packet = MessageSerializer.ToPacket(message, optionBuilder.GetBytes());

            await this.SendReply(packet).ConfigureAwait(false);

            Log.Debug($"[ACK] IP Address '{clientAddress}' was sent over '{IPAddress.Broadcast}'");
        }