es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recibiendo mensajes DHCPv6 en Rust.

Estoy tratando de recibir mensajes dhcp6 en Rust. Este es el código que tengo actualmente:

use std::net::UdpSocket;
use std::net::Ipv6Addr;

fn main() -> std::io::Result<()> {
    {
        let socket = UdpSocket::bind("[::]:547")?;
        let mult: Ipv6Addr = "ff02::1:2".parse().unwrap();
        socket.join_multicast_v6(&mult, 0)?;
        let mut buf = [0; 65535];
        let (amt, src) = socket.recv_from(&mut buf)?;
        let res = parser::header(&buf).unwrap();
        println!("{:?}", res);
    }
    Ok(())
}

Logra recibir mensajes unicast enviados con, por ejemplo, echo "Hello"| socat -t 10 - udp6:[::1]:547, que se muestran en tcpdump como IP6 localhost.57028 > localhost.dhcpv6-server: dhcp6 msgtype-72, pero para los mensajes de dhcp6 (que se muestran como, por ejemplo, IP6 fe80::20e:7bff:febb:a38a.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit en tcpdump), no se recibe ningún dato.

¿Me estoy perdiendo algo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basándonos en el fragmento de código y la descripción proporcionada, parece que el socket UDP está configurado correctamente para recibir mensajes DHCPv6. Sin embargo, es posible que el problema resida en el parser utilizado para analizar la cabecera del mensaje DHCPv6 (parser::header(&buf).unwrap();).

    Se recomienda verificar nuevamente la implementación del parser para asegurarse de que sea capaz de analizar correctamente los mensajes DHCPv6. Además, puede ser útil utilizar una herramienta de captura de paquetes (como Wireshark o tcpdump) para verificar que los mensajes DHCPv6 realmente se están recibiendo en el socket UDP.

    Si el problema persiste, puede ser necesario realizar una depuración adicional para encontrar la causa raíz del problema.

Comments are closed.