icmp thru raw sockets

From
Gennady Porev (2:5020/69.36)
To
All ()
Date
2001-12-16T18:31Z
Area
SU.WINDOWS.NT.PROG
Hi, All!

DELPHI5/win2kpro:
Сделал я приём и отправку ICMP пакетов через raw sockets. А именно: сокет создаётся с (af_inet,sock_raw,ipproto_icmp). После чего можно принимать _IP_пакеты_ с сообщениями ICMP или отправлять _ICMP_сообщения_. Логика чисто мелкософтовская, ну да ладно... Беда в том, что не все типы ICMP приходят на такой сокет! А именно - приходят такие типы: 0, 1, 2, 6, 7, 9, 10, 14, 15, 16, 18 и далее все подряд. "Того самого", родного, 8-го типа, который ping и traceroute, WinSock подло фильтрует и отправляет echoreply самостоятельно, гад.

Ergo, вопросы:
1. Как сделать, что бы сокет (sock_raw,ipproto_icmp или другой) принимал ВСЕ типы ICMP-сообщений?

2. Как ПРАВИЛЬНО сделать так, что бы можно было самому отправлять IP пакеты? Я делал так - сокет (af_inet,sock_raw,ipproto_raw или ipproto_ip), потом setsockopt с ipproto_ip и ip_hdrincl в true. Всё как в линуксе. После чего сокет не желает bind'иться и читать\писать данные куда бы то ни было.

Если у кого есть ещё какие-либо идеи относительно того, как ловить и отправлять ICMP сообщения типов 0 и 8 с заданным содержанием, необязательно через WinSock, очень прошу намылить - в долгу не останусь.

* Разослано также в RU.DELPHI
* Разослано также в SU.WIN32.PROG
* Разослано также в SU.WINDOWS.PROG

        Relax, Gennady.                         [MCP #2124946]
        ICQ UIN: 13031700
--- GoldED/W32 3.0.1
 * Origin: EXPAN headquarter (2:5020/69.36)