Odczytaj ładunek ICMP z recvmsg z flagą MSG_ERRQUEUE
Używam gniazd BSD do budowania zaawansowanego programu traceroute, który nie potrzebuje uprawnień roota (takich jak tracepath). Używając UDP i związanego gniazda, dzwonię:
recvmsg(socket, header, MSG_ERRQUEUE)
Otrzymuję informację o rzekomym powiadomieniu ICMP, że wywołany został wcześniej wysłany pakiet. Czy wiesz, czy możliwy jest dostęp do ładunku ICMP (który powinien być wcześniej wysłanym pakietem)?
Przeczytałem ze strony man recvmsg:
[..] The payload of the original packet that caused the error
is passed as normal data via msg_iovec. [..]
Ale nie mogę znaleźć niczego użytecznego, wydaje się, że dane są losowe (użyłem wireshark do krzyżowego sprawdzenia danych).