private void CheckSetOptionPermissions(SocketOptionLevel optionLevel, SocketOptionName optionName)
{
// Freely allow only the options listed below.
if (!(optionLevel == SocketOptionLevel.Tcp &&
(optionName == SocketOptionName.NoDelay ||
optionName == SocketOptionName.BsdUrgent ||
optionName == SocketOptionName.Expedited))
&&
!(optionLevel == SocketOptionLevel.Udp &&
(optionName == SocketOptionName.NoChecksum ||
optionName == SocketOptionName.ChecksumCoverage))
&&
!(optionLevel == SocketOptionLevel.Socket &&
(optionName == SocketOptionName.KeepAlive ||
optionName == SocketOptionName.Linger ||
optionName == SocketOptionName.DontLinger ||
optionName == SocketOptionName.SendBuffer ||
optionName == SocketOptionName.ReceiveBuffer ||
optionName == SocketOptionName.SendTimeout ||
optionName == SocketOptionName.ExclusiveAddressUse ||
optionName == SocketOptionName.ReceiveTimeout))
&&
!(optionLevel == SocketOptionLevel.IPv6 &&
optionName == (SocketOptionName)23)) // IPv6 protection level.
{
}
}