Większość programów tylko dla użytkownikow uprzywilejowanych.
ethernet-local.c: Podglądanie lokalnych pakietów z warstwy łącza.
ethernet-all.c: Podglądanie wszystkich pakietów z warstwy łącza. Oczywiście tylko dla uprzywilejowanych
Z man 7 raw:
,,A protocol of IPPROTO_RAW implies enabled IP_HDRINCL and is able to send any IP protocol that is specified in the passed header. Receiving of all IP protocols via IPPROTO_RAW is not possible using raw sockets.''
Niestety nie można zmienić protokołu:
SO_PROTOCOL (since Linux 2.6.32)
Retrieves the socket protocol as an integer, returning a value such as IPPROTO_SCTP. See socket(2) for details. This socket option is read-only.
Za to (od p.Michała Bassy) można robić tak jak ping
sock = socket(AF_INET, SOCK_DGRAM, 1); /* 1 == ICMP */
Zgodnie z opisem w repozytorium jądra Linuxa domyślnie ta opcja jest wyłączona, ale większość dystrybucji ją włącza (2017: niestety już nie!).