Ler a carga útil ICMP de um sinalizador recvmsg with MSG_ERRQUEUE
Estou usando sockets BSD para construir um programa traceroute avançado que não precisa de privilégios de root (como tracepath). Usando o UDP e um soquete vinculado, eu chamo:
recvmsg(socket, header, MSG_ERRQUEUE)
Eu recebo informações sobre a suposta notificação ICMP que um pacote enviado anteriormente foi acionado. Você sabe se é possível acessar a carga útil do ICMP (qual deve ser o pacote enviado anteriormente)?
Eu li na página man recvmsg:
[..] The payload of the original packet that caused the error
is passed as normal data via msg_iovec. [..]
Mas eu não consigo encontrar nada de útil lá, parece apenas dados aleatórios (eu usei wireshark para cruzar os dados).