No sé por qué recibo el código de error 10022 (argumento no válido) al configurar las opciones de socket en mi sniffer C #

Estoy escribiendo un sniffer de paquetes como un ejercicio para aprender el desarrollo de sockets .Net 4 en C #. Mi objetivo es rastrear paquetes IP que entran y salen de mi computadora.

Mi problema es que recibo el código de error 10022, argumento no válido, en mi llamada a SetSocketOption. No veo dónde tengo un argumento no válido. Tengo algunos privilegios de administrador en mi computadora, pero quizás no tengo suficientes. Es mi computadora de trabajo y el departamento de TI es bastante estricto. Dicho esto, si se tratara de un problema de permisos, esperaría una excepción diferente.

No estoy seguro de cuál debería ser mi próximo paso para depurar este problema. ¿Alguien tiene una idea

Aquí está el código siguiente:

public Sniffer()
{
    try
    {
        socket = new Socket(
            AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

        IPAddress[] ipAddresses = Dns.GetHostEntry(
            Dns.GetHostName()).AddressList;

        socket.Bind(new IPEndPoint(ipAddresses[0], 0));

        socket.SetSocketOption(
            SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);

        byte[] inputData = new byte[4] { 1, 0, 0, 0 };
        byte[] outValue = new byte[4];

        socket.IOControl(IOControlCode.ReceiveAll, inputData, outValue);
    }
    catch (SocketException ex)
    {
        string ErrorMessage = ex.Message;
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta