Liest ICMP-Nutzdaten aus einem Recvmsg mit dem MSG_ERRQUEUE-Flag
Ich verwende BSD-Sockets, um ein erweitertes Traceroute-Programm zu erstellen, das keine Root-Rechte (wie tracepath) benötigt. Mit UDP und einem gebundenen Socket rufe ich auf:
recvmsg(socket, header, MSG_ERRQUEUE)
Ich erhalte Informationen über die angebliche ICMP-Benachrichtigung, die ein zuvor gesendetes Paket ausgelöst hat. Wissen Sie, ob es möglich ist, auf die ICMP-Nutzdaten zuzugreifen (dies sollte das zuvor gesendete Paket sein)?
Ich habe aus der recvmsg-Manpage gelesen:
[..] The payload of the original packet that caused the error
is passed as normal data via msg_iovec. [..]
Aber ich kann dort nichts Nützliches finden, es scheinen nur zufällige Daten zu sein (ich habe Wireshark verwendet, um Daten zu überprüfen).