Zing, basic Elixir ICMP ('ping') server using Zig NIF

From different tests I made on macOS and Linux, it looks like macOS needs us to compute the checksum for the echo request and then give us back the full IP packet of the echo reply, hence your _::size(160) to skip 20 bytes of IP header. On Linux we do not need to compute the checksum or set an id because the OS will dot it for us and we also only get the ICMP echo reply, not the full IP packet.

This is confirmed by the ping source code on MacOS. I guess the behaviour of the library regarding a socket created with socket(PF_INET, SOCK_DGRAM, IPPROTO_ICMP) is quite OS dependent.