DhcpServer: sending correct siaddr for nak responses.

This commit is contained in:
Shreyas Zare
2020-09-26 20:06:01 +05:30
parent cbcca55b36
commit 2b5dffb4b4

View File

@@ -338,14 +338,14 @@ namespace DnsServerCore.Dhcp
{ {
//no existing lease or offer available for client //no existing lease or offer available for client
//send nak //send nak
return new DhcpMessage(request, IPAddress.Any, serverIdentifierAddress, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() }); return new DhcpMessage(request, IPAddress.Any, IPAddress.Any, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() });
} }
if (!request.ClientIpAddress.Equals(leaseOffer.Address)) if (!request.ClientIpAddress.Equals(leaseOffer.Address))
{ {
//client ip is incorrect //client ip is incorrect
//send nak //send nak
return new DhcpMessage(request, IPAddress.Any, serverIdentifierAddress, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() }); return new DhcpMessage(request, IPAddress.Any, IPAddress.Any, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() });
} }
} }
else else
@@ -357,14 +357,14 @@ namespace DnsServerCore.Dhcp
{ {
//no existing lease or offer available for client //no existing lease or offer available for client
//send nak //send nak
return new DhcpMessage(request, IPAddress.Any, serverIdentifierAddress, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() }); return new DhcpMessage(request, IPAddress.Any, IPAddress.Any, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() });
} }
if (!request.RequestedIpAddress.Address.Equals(leaseOffer.Address)) if (!request.RequestedIpAddress.Address.Equals(leaseOffer.Address))
{ {
//the client's notion of its IP address is not correct - RFC 2131 //the client's notion of its IP address is not correct - RFC 2131
//send nak //send nak
return new DhcpMessage(request, IPAddress.Any, serverIdentifierAddress, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() }); return new DhcpMessage(request, IPAddress.Any, IPAddress.Any, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() });
} }
} }
} }
@@ -383,14 +383,14 @@ namespace DnsServerCore.Dhcp
{ {
//no existing lease or offer available for client //no existing lease or offer available for client
//send nak //send nak
return new DhcpMessage(request, IPAddress.Any, serverIdentifierAddress, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() }); return new DhcpMessage(request, IPAddress.Any, IPAddress.Any, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() });
} }
if (!request.RequestedIpAddress.Address.Equals(leaseOffer.Address)) if (!request.RequestedIpAddress.Address.Equals(leaseOffer.Address))
{ {
//requested ip is incorrect //requested ip is incorrect
//send nak //send nak
return new DhcpMessage(request, IPAddress.Any, serverIdentifierAddress, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() }); return new DhcpMessage(request, IPAddress.Any, IPAddress.Any, new DhcpOption[] { new DhcpMessageTypeOption(DhcpMessageType.Nak), new ServerIdentifierOption(scope.InterfaceAddress), DhcpOption.CreateEndOption() });
} }
} }