Marius,
Marius Bakke wrote on 24/10/17 at 08:06:
Toggle quote (2 lines)
> * gnu/packages/networking.scm (hping): New public variable.
Nice. I like stuff that sends random packets and breaks things.
Toggle quote (54 lines)
> diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm> index a6c104297..4c1771459 100644> --- a/gnu/packages/networking.scm> +++ b/gnu/packages/networking.scm> @@ -563,6 +566,70 @@ send out a ping packet and move on to the next target in a round-robin> fashion.")> (license license:expat)))> > +(define-public hping> + (let ((commit "3547c7691742c6eaa31f8402e0ccbb81387c1b99")> + (revision "0"))> + (package> + (name "hping")> + (version (string-append "3.0.0-" revision "-" (string-take commit 7)))> + (source (origin> + (method git-fetch)> + (uri (git-reference> + (url "https://github.com/antirez/hping")> + (commit commit)))> + (file-name (string-append name "-" version "-checkout"))> + (sha256> + (base32> + "0y0n1ybij3yg9lfgzcwfmjz1sjg913zcqrv391xx83dm0j80sdpb"))))> + (build-system gnu-build-system)> + (arguments> + `(#:phases> + (modify-phases %standard-phases> + (add-before 'configure 'prepare-build> + (lambda* (#:key inputs #:allow-other-keys)> + (let ((tcl (assoc-ref inputs "tcl")))> + ;; Search for bpf.h in the right place.> + (substitute* '("libpcap_stuff.c" "script.c")> + (("<net/bpf\\.h>") "<pcap/bpf.h>"))> + ;; Likewise for TCL.> + (substitute* "configure"> + (("/usr/include/tcl.h")> + (string-append tcl "/include/tcl.h"))> + (("ls -1 /usr/local/lib")> + (string-append "ls -1 " tcl "/lib")))> + ;; Required environment variables.> + (setenv "CC" "gcc")> + (setenv "TCLSH" (which "tclsh"))> + #t)))> + (add-before 'install 'pre-install> + (lambda* (#:key outputs #:allow-other-keys)> + (let* ((out (assoc-ref outputs "out"))> + (sbin (string-append out "/sbin"))> + (man (string-append out "/share/man")))> + (mkdir-p sbin)> + (mkdir-p (string-append man "/man8"))> + (substitute* "Makefile"> + (("/usr/sbin") sbin)> + (("\\$\\{INSTALL_MANPATH\\}") man))
Adding (setenv "MANPATH" man) to 'prepare-build also works, and iscleaner. There's no $SBINPATH, unfortunately.
Toggle quote (5 lines)
> + ;; Fix references to wrong executable name.> + (substitute* "docs/hping3.8"> + (("hping2") "hping3")> + (("HPING2") "HPING3"))
Erk. I'm sending a quick PR upstream just for that. Simple substitutionisn't ideal: there are references to things like ‘HPING2-HOWTO’ and‘editing hping2.h’ which — though dubious — shouldn't be changed.
- A question: that HPING2-HOWTO (sic: ‘this HOWTO is not completed andin some points very silly’) is mentioned several times in the man pagebut not installed. Any strong opinions?
- A side note: this package installs ‘hping3’ (the tool), with both‘hping’ and ‘hping2’ as symlinks. There are no such symlinks to the manpage: users must type ‘man hping3’. I've added it to that PR[0].
Toggle quote (8 lines)
> + #t))))> + #:tests? #f)) ;no tests> + (inputs> + `(("libpcap" ,libpcap)> + ("tcl" ,tcl)))> + (home-page "http://www.hping.org/")> + (synopsis "Network testing tool")
is a tad (too) short. We should at least mention its purpose "to send(almost) arbitrary packets".
Toggle quote (3 lines)
> + (description> + "hping is a command-line oriented TCP/IP packet assembler/analyzer.
I don't see the nuance of ‘oriented’, and suggest dropping it. And hpingsends more than TCP/IP.
Toggle quote (3 lines)
> +The interface is inspired by the @command{ping(8)} command, but hping isn't> +only able to send ICMP echo requests. It supports TCP, UDP, ICMP and RAW-IP
‘raw IP’.
Toggle quote (3 lines)
> +protocols, has a traceroute mode, the ability to send files between a covered> +channel, and many other features.")
A misspelling of ‘covert channel’?
WDYTO:
"hping is a command-line IP packet assembler and analyzer. While its interface is inspired by the @command{ping(8)} command,hping does more than just send ICMP echo requests. It supports the TCP, UDP,ICMP, and raw IP protocols, has a traceroute mode, the ability to send filesover a covert channel, and many other features."
Toggle quote (2 lines)
> + (license license:gpl2)))) ;strlcpy.c is BSD-3
There's also display_ipopt.c, which looks like BSD-4.Kind regards,T G-R[0]: https://github.com/antirez/hping/pull/32