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}'"); }
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}'"); }