| CARVIEW |
ping: icmp echo requests
This library provides functions that have similar behavior as the unix command-line utility ping. In particular, both emit ICMP echo requests and wait for responses. This library uses a haskell implementation of ICMP rather than invoking `binping`. This avoids the costly process of starting a child process. Additionally, there are greater opportunities for reusing sockets. The cost of this is that the user must ensure that one of these is true:
The kernel parameter
net.ipv4.ping_group_rangehas been configured to allow pings to all IP addresses. (preferred solution)The process is running with the the
CAP_NET_RAWcapability.The process is running as root. (worst solution)
[Skip to Readme]
Flags
Manual Flags
| Name | Description | Default |
|---|---|---|
| debug | Print debug output | Disabled |
| application | Build CLI application that exposes ping-like functions as subcommands | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- ping-0.1.0.5.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5 (info) |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4.11.1 && <5), cpu (>=0.1.2), ip (>=1.5), optparse-applicative (>=0.14.3), ping, posix-api (>=0.4 && <0.8), primitive (>=0.7 && <0.10), primitive-addr (>=0.1 && <0.2), primitive-containers (>=0.5), stm (>=2.5), text (>=1.2.3.1), transformers (>=0.5.5) [details] |
| License | BSD-3-Clause |
| Copyright | 2019 Andrew Martin |
| Author | Andrew Martin |
| Maintainer | andrew.thaddeus@gmail.com |
| Uploaded | by andrewthad at 2023-06-21T17:48:05Z |
| Revised | Revision 3 made by andrewthad at 2023-08-30T19:48:23Z |
| Category | Network |
| Home page | https://github.com/andrewthad/ping |
| Distributions | |
| Executables | multiping |
| Downloads | 1931 total (20 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs not available [build log] All reported builds failed as of 2023-06-21 [all 2 reports] |
Readme for ping-0.1.0.5
[back to package description]ping
Objective
This library provides high-performance functions that issue ICMP echo
requests and wait for responses, measuring the elapsed time. It is intended
to be cross-platform as possible, and it may use any system APIs available.
However, it will not resort to running /bin/ping as a subprocess. Pull
requests that improve compatibility will accepted so long as they do not
start a subprocess.
Build Instructions
This library relies on posix-api, which needs a currently-unreleased
version of hsc2hs in order to build. In order to try out this library, try:
~/dev $ git clone https://github.com/haskell/hsc2hs
~/dev $ cd hsc2hs
~/dev/hsc2hs $ cabal install
~/dev/hsc2hs $ cd ..
~/dev $ git clone https://github.com/andrewthad/ping
~/dev $ cd ping
~/dev/ping $ cabal new-build --with-hsc2hs=~/.cabal/bin/hsc2hs
This will build all dependencies, including posix-api, with the
upstream hsc2hs tool.
Infelicities
This project's objective is to be cross-platform. However, it does not accomplish this. The author primarily runs a Debian Linux distribution and consequently lacks the resources and the motivation to make this work on other platforms. Contributions to improve compatibility are welcomed. Current known problems include:
- On Linux, the library should fallback to using raw sockets if
IPPROTO_ICMPdoes not work. - Support for Windows is missing.
- Support for BSD is missing. However, adding raw socket support to improve the situation on Linux may fix this as well.
- Support for Darwin is missing. This should not be difficult since
Darwin supports
IPPROTO_ICMPsockets.