mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-08-25 22:12:58 +03:00
Fix Virtual DHCP Server: Correct HDCP Sequence
This commit is contained in:
parent
9a009d750a
commit
7f074d0c0b
@ -9710,36 +9710,40 @@ void VirtualDhcpServer(VH *v, PKT *p)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// There is no IP address that can be provided
|
// Reply of DHCP_REQUEST must be either DHCP_ACK or DHCP_NAK.
|
||||||
DHCP_OPTION_LIST ret;
|
if (opt->Opcode == DHCP_REQUEST)
|
||||||
LIST *o;
|
|
||||||
Zero(&ret, sizeof(ret));
|
|
||||||
|
|
||||||
ret.Opcode = DHCP_NACK;
|
|
||||||
ret.ServerAddress = v->HostIP;
|
|
||||||
StrCpy(ret.DomainName, sizeof(ret.DomainName), v->DhcpDomain);
|
|
||||||
ret.SubnetMask = v->DhcpMask;
|
|
||||||
|
|
||||||
// Build the DHCP option
|
|
||||||
o = BuildDhcpOption(&ret);
|
|
||||||
if (o != NULL)
|
|
||||||
{
|
{
|
||||||
BUF *b = BuildDhcpOptionsBuf(o);
|
// There is no IP address that can be provided
|
||||||
if (b != NULL)
|
DHCP_OPTION_LIST ret;
|
||||||
{
|
LIST *o;
|
||||||
UINT dest_ip = p->L3.IPv4Header->SrcIP;
|
Zero(&ret, sizeof(ret));
|
||||||
if (dest_ip == 0)
|
|
||||||
{
|
|
||||||
dest_ip = 0xffffffff;
|
|
||||||
}
|
|
||||||
// Transmission
|
|
||||||
VirtualDhcpSend(v, tran_id, dest_ip, Endian16(p->L4.UDPHeader->SrcPort),
|
|
||||||
ip, dhcp->ClientMacAddress, b, dhcp->HardwareType, dhcp->HardwareAddressSize);
|
|
||||||
|
|
||||||
// Release the memory
|
ret.Opcode = DHCP_NACK;
|
||||||
FreeBuf(b);
|
ret.ServerAddress = v->HostIP;
|
||||||
|
StrCpy(ret.DomainName, sizeof(ret.DomainName), v->DhcpDomain);
|
||||||
|
ret.SubnetMask = v->DhcpMask;
|
||||||
|
|
||||||
|
// Build the DHCP option
|
||||||
|
o = BuildDhcpOption(&ret);
|
||||||
|
if (o != NULL)
|
||||||
|
{
|
||||||
|
BUF *b = BuildDhcpOptionsBuf(o);
|
||||||
|
if (b != NULL)
|
||||||
|
{
|
||||||
|
UINT dest_ip = p->L3.IPv4Header->SrcIP;
|
||||||
|
if (dest_ip == 0)
|
||||||
|
{
|
||||||
|
dest_ip = 0xffffffff;
|
||||||
|
}
|
||||||
|
// Transmission
|
||||||
|
VirtualDhcpSend(v, tran_id, dest_ip, Endian16(p->L4.UDPHeader->SrcPort),
|
||||||
|
ip, dhcp->ClientMacAddress, b, dhcp->HardwareType, dhcp->HardwareAddressSize);
|
||||||
|
|
||||||
|
// Release the memory
|
||||||
|
FreeBuf(b);
|
||||||
|
}
|
||||||
|
FreeDhcpOptions(o);
|
||||||
}
|
}
|
||||||
FreeDhcpOptions(o);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user