Чтение полезной нагрузки ICMP из recvmsg с флагом MSG_ERRQUEUE
Я использую сокеты BSD для создания усовершенствованной программы traceroute, которая не нуждается в привилегиях root (например, tracepath). Используя UDP и связанный сокет, я звоню:
recvmsg(socket, header, MSG_ERRQUEUE)
Я получаю информацию о предполагаемом уведомлении ICMP о том, что сработал ранее отправленный пакет. Вы знаете, возможно ли получить доступ к полезной нагрузке ICMP (которая должна быть ранее отправленным пакетом)?
Я прочитал с man-страницы recvmsg:
[..] The payload of the original packet that caused the error
is passed as normal data via msg_iovec. [..]
Но я не могу найти там ничего полезного, это просто случайные данные (я использовал wireshark для перекрестной проверки данных).