Ping function implemented in rust.
Sending an ICMP package should create a socket of type raw
on most platforms. And most of these platforms require special privileges. Basically, it needs to run with sudo on Linux to create a raw
socket.
These requirements introduce security risks, so on modern platforms, unprivileged ping
has been introduced, with socket type dgram
. So there are two mods in this crate, rawsock and dgramsock, which have the same function ping
. And the global ping function is just an alias for the rawsock::ping
. You can pick the one which is suitable for your use case.
For Linux users, although modern kernels support ping with dgram
, in some distributions (like Arch), it's disabled by default. More details: https://wiki.archlinux.org/title/sysctl#Allow_unprivileged_users_to_create_IPPROTO_ICMP_sockets
This library contains codes from https://github.com/knsd/tokio-ping, which is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
And other codes is licensed under
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)