gnu: fish: Update to 2.7.1.
[jackhill/guix/guix.git] / gnu / packages / networking.scm
CommitLineData
f6d9b3de 1;;; GNU Guix --- Functional package management for GNU
89e34644 2;;; Copyright © 2014, 2017 Ludovic Courtès <ludo@gnu.org>
42c939a8 3;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
a2b2aebe 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
61253c4f 5;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
95146623 6;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
6a2c510d 7;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
42ff54d5 8;;; Copyright © 2016 John Darrington <jmd@gnu.org>
d016b60f 9;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
d85b398b 10;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
f2e12718 11;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
cfd6a3b1 12;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
b747718e 13;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch>
38510546 14;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
3cd501c8 15;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
cc24bf98 16;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
af5faef9 17;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
b3623b6f 18;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
c2700e78 19;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
167a541f 20;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
f6d9b3de
LC
21;;;
22;;; This file is part of GNU Guix.
23;;;
24;;; GNU Guix is free software; you can redistribute it and/or modify it
25;;; under the terms of the GNU General Public License as published by
26;;; the Free Software Foundation; either version 3 of the License, or (at
27;;; your option) any later version.
28;;;
29;;; GNU Guix is distributed in the hope that it will be useful, but
30;;; WITHOUT ANY WARRANTY; without even the implied warranty of
31;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32;;; GNU General Public License for more details.
33;;;
34;;; You should have received a copy of the GNU General Public License
35;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
36
8a413bca 37(define-module (gnu packages networking)
f6d9b3de
LC
38 #:use-module ((guix licenses) #:prefix license:)
39 #:use-module (guix packages)
40 #:use-module (guix download)
167a541f 41 #:use-module (guix build-system cmake)
834a2fc1 42 #:use-module (guix build-system glib-or-gtk)
f6d9b3de 43 #:use-module (guix build-system gnu)
af5faef9 44 #:use-module (guix build-system perl)
9e6c7c42 45 #:use-module (guix build-system python)
8d60dd71 46 #:use-module (gnu packages)
834a2fc1
NG
47 #:use-module (gnu packages admin)
48 #:use-module (gnu packages adns)
82ee141b 49 #:use-module (gnu packages algebra)
834a2fc1 50 #:use-module (gnu packages audio)
de5308f5 51 #:use-module (gnu packages autotools)
834a2fc1 52 #:use-module (gnu packages bison)
998afc36 53 #:use-module (gnu packages check)
4fb5f830 54 #:use-module (gnu packages code)
834a2fc1 55 #:use-module (gnu packages compression)
9e6c7c42 56 #:use-module (gnu packages curl)
d85b398b 57 #:use-module (gnu packages databases)
c2700e78 58 #:use-module (gnu packages dejagnu)
de5308f5 59 #:use-module (gnu packages documentation)
834a2fc1 60 #:use-module (gnu packages flex)
82ee141b 61 #:use-module (gnu packages gettext)
961012a0 62 #:use-module (gnu packages glib)
167a541f 63 #:use-module (gnu packages gnome)
834a2fc1
NG
64 #:use-module (gnu packages gnupg)
65 #:use-module (gnu packages gtk)
9c798f90 66 #:use-module (gnu packages libidn)
834a2fc1
NG
67 #:use-module (gnu packages linux)
68 #:use-module (gnu packages lua)
89e34644 69 #:use-module (gnu packages kerberos)
834a2fc1 70 #:use-module (gnu packages ncurses)
d85b398b 71 #:use-module (gnu packages pcre)
834a2fc1 72 #:use-module (gnu packages perl)
5ccde207 73 #:use-module (gnu packages perl-check)
998afc36 74 #:use-module (gnu packages pkg-config)
834a2fc1 75 #:use-module (gnu packages python)
d016b60f 76 #:use-module (gnu packages qt)
c2700e78 77 #:use-module (gnu packages readline)
d016b60f 78 #:use-module (gnu packages ssh)
4fb5f830
TGR
79 #:use-module (gnu packages textutils)
80 #:use-module (gnu packages tls)
af5faef9 81 #:use-module (gnu packages valgrind)
cfd6a3b1 82 #:use-module (gnu packages wm)
b3623b6f 83 #:use-module (gnu packages xml)
af5faef9 84 #:use-module (ice-9 match))
f6d9b3de 85
c791efde
JD
86(define-public macchanger
87 (package
88 (name "macchanger")
89 (version "1.6.0")
90 (source (origin
91 (method url-fetch)
92 (uri (string-append "mirror://gnu/"
93 name "/" name "-" version ".tar.gz"))
94 (sha256
95 (base32
96 "1xsiivjjyhqcs6dyjcshrnxlgypvyfzacjz7gcjgl88xiw9lylri"))))
97 (build-system gnu-build-system)
6fd52309 98 (home-page "https://www.gnu.org/software/macchanger/")
a3947cb1 99 (synopsis "Viewing and manipulating MAC addresses of network interfaces")
c791efde
JD
100 (description "GNU MAC Changer is a utility for viewing and changing MAC
101addresses of networking devices. New addresses may be set explicitly or
102randomly. They can include MAC addresses of the same or other hardware vendors
38510546 103or, more generally, MAC addresses of the same category of hardware.")
c791efde
JD
104 (license license:gpl2+)))
105
1e61e22f
TUBK
106(define-public miredo
107 (package
108 (name "miredo")
109 (version "1.2.6")
110 (source (origin
111 (method url-fetch)
112 (uri (string-append "http://www.remlab.net/files/miredo/miredo-"
113 version ".tar.xz"))
114 (sha256
115 (base32
116 "0j9ilig570snbmj48230hf7ms8kvcwi2wblycqrmhh85lksd49ps"))))
117 (build-system gnu-build-system)
118 (arguments
119 '(#:phases
120 (modify-phases %standard-phases
121 ;; The checkconf test in src/ requires network access.
122 (add-before
123 'check 'disable-checkconf-test
124 (lambda _
125 (substitute* "src/Makefile"
126 (("^TESTS = .*") "TESTS = \n")))))))
127 (home-page "http://www.remlab.net/miredo/")
128 (synopsis "Teredo IPv6 tunneling software")
129 (description
130 "Miredo is an implementation (client, relay, server) of the Teredo
131specification, which provides IPv6 Internet connectivity to IPv6 enabled hosts
132residing in IPv4-only networks, even when they are behind a NAT device.")
133 (license license:gpl2+)))
134
f6d9b3de
LC
135(define-public socat
136 (package
137 (name "socat")
4efc8eb2 138 (version "1.7.3.1")
f6d9b3de
LC
139 (source (origin
140 (method url-fetch)
141 (uri (string-append
142 "http://www.dest-unreach.org/socat/download/socat-"
143 version ".tar.bz2"))
144 (sha256
145 (base32
4efc8eb2 146 "1apvi7sahcl44arnq1ad2y6lbfqnmvx7nhz9i3rkk0f382anbnnj"))))
f6d9b3de
LC
147 (build-system gnu-build-system)
148 (arguments '(#:tests? #f)) ;no 'check' phase
149 (inputs `(("openssl" ,openssl)))
150 (home-page "http://www.dest-unreach.org/socat/")
151 (synopsis
152 "Open bidirectional communication channels from the command line")
153 (description
154 "socat is a relay for bidirectional data transfer between two independent
155data channels---files, pipes, devices, sockets, etc. It can create
156\"listening\" sockets, named pipes, and pseudo terminals.
157
158socat can be used, for instance, as TCP port forwarder, as a shell interface
159to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial
160line, to logically connect serial lines on different computers, or to
161establish a relatively secure environment (su and chroot) for running client
e881752c 162or server shell scripts with network connections.")
f6d9b3de 163 (license license:gpl2)))
603090d8 164
c4947d0e
JD
165(define-public tcp-wrappers
166 (package
167 (name "tcp-wrappers")
168 (version "7.6")
169 (source (origin
170 (method url-fetch)
171 (uri (string-append
172 "ftp://ftp.porcupine.org/pub/security/tcp_wrappers_"
173 version ".tar.gz"))
174 (sha256
175 (base32
176 "0p9ilj4v96q32klavx0phw9va21fjp8vpk11nbh6v2ppxnnxfhwm"))))
177 (build-system gnu-build-system)
178 (arguments
179 `(#:phases
180 (modify-phases %standard-phases
181 (delete 'configure) ; there is no configure script
182 (delete 'check) ; there are no tests
183 (replace 'build
184 (lambda _
185 (chmod "." #o755)
186 ;; Upstream doesn't generate a shared library. So we have to do it.
187 (setenv "CC" "gcc -fno-builtin -fPIC")
188 (substitute* "Makefile"
189 (("^(all[^\n]*)" line) (string-append line " libwrap.so\n
190libwrap.so: $(LIB_OBJ)\n
191\tgcc -shared $^ -o $@\n")))
192 ;; Deal with some gcc breakage.
193 (substitute* "percent_m.c"
194 (("extern char .sys_errlist.*;") ""))
195 (substitute* "scaffold.c"
196 (("extern char .malloc.*;") ""))
197 ;; This, believe it or not, is the recommended way to build!
198 (zero? (system* "make" "REAL_DAEMON_DIR=/etc" "linux"))))
199 ;; There is no make install stage, so we have to do it ourselves.
200 (replace 'install
201 (lambda _
202 (let ((out (assoc-ref %outputs "out"))
203 (man-pages `("hosts_access.3"
204 "hosts_access.5"
205 "hosts_options.5"
206 "tcpd.8"
207 "tcpdchk.8"
208 "tcpdmatch.8"))
209 (libs `("libwrap.a"
210 "libwrap.so"))
211 (headers `("tcpd.h"))
212 (bins `("safe_finger"
213 "tcpd"
214 "tcpdchk"
215 "tcpdmatch"
216 "try-from")))
217 (for-each
218 (lambda (x)
219 (install-file x (string-append out "/include")))
220 headers)
221 (for-each
222 (lambda (x)
223 (install-file x (string-append out "/share/man/man"
224 (string-take-right x 1))))
225 man-pages)
226 (for-each
227 (lambda (x)
228 (install-file x (string-append out "/lib/")))
229 libs)
230 (for-each
231 (lambda (x)
232 (install-file x (string-append out "/bin/")))
233 bins)))))))
234 (home-page "http://www.porcupine.org")
235 (synopsis "Monitor and filter incoming requests for network services")
236 (description "With this package you can monitor and filter incoming requests for
237network services. It includes a library which may be used by daemons to
238transparently check connection attempts against an access control list.")
239 (license (license:non-copyleft "file://DISCLAIMER"
240 "See the file DISCLAIMER in the distribution."))))
241
242
603090d8
RW
243(define-public zeromq
244 (package
245 (name "zeromq")
d6c108a9 246 (version "4.0.7")
603090d8
RW
247 (source (origin
248 (method url-fetch)
249 (uri (string-append "http://download.zeromq.org/zeromq-"
250 version ".tar.gz"))
251 (sha256
252 (base32
d6c108a9 253 "00vvwhgcdr1lva2pavicvy92iad0hj8cf71n702hv6blw1kjj2z0"))))
603090d8
RW
254 (build-system gnu-build-system)
255 (home-page "http://zeromq.org")
256 (synopsis "Library for message-based applications")
257 (description
258 "The 0MQ lightweight messaging kernel is a library which extends the
259standard socket interfaces with features traditionally provided by specialized
260messaging middle-ware products. 0MQ sockets provide an abstraction of
261asynchronous message queues, multiple messaging patterns, message
262filtering (subscriptions), seamless access to multiple transport protocols and
263more.")
264 (license license:lgpl3+)))
a2b2aebe 265
2c1286f4
SB
266(define-public librdkafka
267 (package
268 (name "librdkafka")
269 (version "0.9.1")
270 (source (origin
271 (method url-fetch)
272 (uri (string-append
273 "https://github.com/edenhill/librdkafka/archive/"
274 version ".tar.gz"))
275 (file-name (string-append name "-" version ".tar.gz"))
276 (sha256
277 (base32
278 "10ldx7g7ymmg17snzx78vy4n8ma1rjx0agzi34g15j2fk867xmas"))))
279 (build-system gnu-build-system)
280 (arguments
281 '(#:phases
282 (modify-phases %standard-phases
283 (replace 'configure
284 ;; its custom configure script doesn't understand 'CONFIG_SHELL'.
285 (lambda* (#:key outputs #:allow-other-keys)
286 (let ((out (assoc-ref outputs "out")))
287 ;; librdkafka++.so lacks RUNPATH for librdkafka.so
288 (setenv "LDFLAGS"
289 (string-append "-Wl,-rpath=" out "/lib"))
290 (zero? (system* "./configure"
291 (string-append "--prefix=" out)))))))))
292 (native-inputs
293 `(("python" ,python-wrapper)))
294 (propagated-inputs
295 `(("zlib" ,zlib))) ; in the Libs.private field of rdkafka.pc
296 (home-page "https://github.com/edenhill/librdkafka")
297 (synopsis "Apache Kafka C/C++ client library")
298 (description
299 "librdkafka is a C library implementation of the Apache Kafka protocol,
300containing both Producer and Consumer support.")
301 (license license:bsd-2)))
302
a2b2aebe
MW
303(define-public libndp
304 (package
305 (name "libndp")
ad42be83 306 (version "1.6")
a2b2aebe
MW
307 (source (origin
308 (method url-fetch)
309 (uri (string-append "http://libndp.org/files/"
310 name "-" version ".tar.gz"))
311 (sha256
312 (base32
ad42be83 313 "03mczwrxqbp54msafxzzyhaazkvjdwm2kipjkrb5xg8kw22glz8c"))))
a2b2aebe
MW
314 (build-system gnu-build-system)
315 (home-page "http://libndp.org/")
316 (synopsis "Library for Neighbor Discovery Protocol")
317 (description
318 "libndp contains a library which provides a wrapper for IPv6 Neighbor
319Discovery Protocol. It also provides a tool named ndptool for sending and
320receiving NDP messages.")
321 (license license:lgpl2.1+)))
5df2316d
MW
322
323(define-public ethtool
324 (package
325 (name "ethtool")
59261ebe 326 (version "4.13")
5df2316d
MW
327 (source (origin
328 (method url-fetch)
329 (uri (string-append "mirror://kernel.org/software/network/"
330 name "/" name "-" version ".tar.xz"))
331 (sha256
332 (base32
59261ebe 333 "1flwz4x76ajxigadq9knxgwr778g03y3qfx6c7rflc3x020a7hdp"))))
5df2316d
MW
334 (build-system gnu-build-system)
335 (home-page "https://www.kernel.org/pub/software/network/ethtool/")
336 (synopsis "Display or change Ethernet device settings")
337 (description
338 "ethtool can be used to query and change settings such as speed,
339auto-negotiation and checksum offload on many network devices, especially
340Ethernet devices.")
341 (license license:gpl2)))
24a848c8
SR
342
343(define-public ifstatus
344 (package
345 (name "ifstatus")
346 (version "1.1.0")
347 (source (origin
348 (method url-fetch)
de67e922
LF
349 (uri (string-append "mirror://sourceforge/ifstatus/ifstatus/"
350 "ifstatus%20v" version "/ifstatus-v"
24a848c8
SR
351 version ".tar.gz"))
352 (sha256
353 (base32
354 "045cbsq9ps32j24v8y5hpyqxnqn9mpaf3mgvirlhgpqyb9jsia0c"))
355 (modules '((guix build utils)))
356 (snippet
357 '(substitute* "Main.h"
358 (("#include <stdio.h>")
359 "#include <stdio.h>\n#include <stdlib.h>")))))
360 (build-system gnu-build-system)
361 (arguments
362 '(#:tests? #f ; no "check" target
363 #:phases
364 (modify-phases %standard-phases
365 (delete 'configure) ; no configure script
366 (replace 'install
367 (lambda* (#:key outputs #:allow-other-keys)
368 (let* ((out (assoc-ref outputs "out"))
369 (bin (string-append out "/bin")))
370 (mkdir-p bin)
371 (copy-file "ifstatus"
372 (string-append bin "/ifstatus"))))))))
373 (inputs `(("ncurses" ,ncurses)))
374 (home-page "http://ifstatus.sourceforge.net/graphic/index.html")
375 (synopsis "Text based network interface status monitor")
376 (description
377 "IFStatus is a simple, easy-to-use program for displaying commonly
8874f766 378needed/wanted real-time traffic statistics of multiple network
24a848c8
SR
379interfaces, with a simple and efficient view on the command line. It is
380intended as a substitute for the PPPStatus and EthStatus projects.")
8874f766 381 (license license:gpl2+)))
95146623
RG
382
383(define-public nload
384 (package
385 (name "nload")
386 (version "0.7.4")
387 (source (origin
388 (method url-fetch)
de67e922
LF
389 (uri (string-append "mirror://sourceforge/nload/nload/" version
390 "/nload-" version ".tar.gz"))
95146623
RG
391 (sha256
392 (base32
393 "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61"))))
394 (build-system gnu-build-system)
395 (inputs `(("ncurses" ,ncurses)))
396 (home-page "http://www.roland-riegel.de/nload/")
397 (synopsis "Realtime console network usage monitor")
398 (description
399 "Nload is a console application which monitors network traffic and
400bandwidth usage in real time. It visualizes the in- and outgoing traffic using
d1e4ad1b 401two graphs, and provides additional info like total amount of transferred data
95146623
RG
402and min/max network usage.")
403 (license license:gpl2+)))
998afc36
TGR
404
405(define-public iodine
406 (package
407 (name "iodine")
408 (version "0.7.0")
409 (source (origin
410 (method url-fetch)
411 (uri (string-append "http://code.kryo.se/" name "/"
412 name "-" version ".tar.gz"))
413 (sha256
414 (base32
415 "0gh17kcxxi37k65zm4gqsvbk3aw7yphcs3c02pn1c4s2y6n40axd"))))
416 (build-system gnu-build-system)
417 (arguments
418 '(#:phases
419 (modify-phases %standard-phases
420 (delete 'configure)
60880ac5
TGR
421 (add-before 'build 'fix-ifconfig-path
422 ;; This package works only with the net-tools version of ifconfig.
423 (lambda* (#:key inputs #:allow-other-keys)
424 (substitute* "src/tun.c"
425 (("PATH=[^ ]* ")
c10d5024 426 (string-append (assoc-ref inputs "net-tools") "/bin/")))))
998afc36 427 (add-before 'check 'delete-failing-tests
60880ac5 428 ;; Avoid https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802105.
998afc36
TGR
429 (lambda _
430 (substitute* "tests/common.c"
431 (("tcase_add_test\\(tc, \
432test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
433 "")))))
434 #:make-flags (list "CC=gcc"
435 (string-append "prefix=" (assoc-ref %outputs "out")))
436 #:test-target "test"))
60880ac5
TGR
437 (inputs `(("net-tools" ,net-tools)
438 ("zlib" ,zlib)))
998afc36
TGR
439 (native-inputs `(("check" ,check)
440 ("pkg-config" ,pkg-config)))
441 (home-page "http://code.kryo.se/iodine/")
442 (synopsis "Tunnel IPv4 data through a DNS server")
443 (description "Iodine tunnels IPv4 data through a DNS server. This
444can be useful in different situations where internet access is firewalled, but
445DNS queries are allowed. The bandwidth is asymmetrical, with limited upstream
446and up to 1 Mbit/s downstream.")
447 ;; src/md5.[ch] is released under the zlib license
448 (license (list license:isc license:zlib))))
834a2fc1 449
9c798f90 450(define-public whois
451 (package
452 (name "whois")
eb6263f2 453 (version "5.2.19")
9c798f90 454 (source
455 (origin
456 (method url-fetch)
457 (uri (string-append "mirror://debian/pool/main/w/whois/"
458 name "_" version ".tar.xz"))
459 (sha256
460 (base32
eb6263f2 461 "0b16w48c17k35lhd95qcl2kjq2rahk8znkg3w467rf3kzmsa4fbc"))))
9c798f90 462 (build-system gnu-build-system)
463 ;; TODO: unbundle mkpasswd binary + its po files.
464 (arguments
465 `(#:tests? #f ; Does not exist
466 #:make-flags (list "CC=gcc"
467 (string-append "prefix=" (assoc-ref %outputs "out")))
468 #:phases
469 (modify-phases %standard-phases
470 (delete 'configure) ; No configure
471 (add-before 'build 'setenv
472 (lambda _
473 (setenv "HAVE_ICONV" "1")
268b3802 474 #t)))))
9c798f90 475 (inputs
eb6263f2 476 ;; TODO: Switch to libidn2 when >= 2.0.3 is ungrafted in master.
9c798f90 477 `(("libidn" ,libidn)))
478 (native-inputs
7c90d0f4 479 `(("gettext" ,gettext-minimal)
eb6263f2
MB
480 ("perl" ,perl)
481 ("pkg-config" ,pkg-config)))
9c798f90 482 (synopsis "Improved whois client")
483 (description "This whois client is intelligent and can
484automatically select the appropriate whois server for most queries.
485Because of historical reasons this also includes a tool called mkpasswd
486which can be used to encrypt a password with @code{crypt(3)}.")
487 (home-page "https://github.com/rfc1036/whois")
488 (license license:gpl2+)))
489
834a2fc1
NG
490(define-public wireshark
491 (package
492 (name "wireshark")
4016de5e 493 (version "2.4.3")
834a2fc1
NG
494 (source
495 (origin
496 (method url-fetch)
497 (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
d016b60f 498 version ".tar.xz"))
834a2fc1
NG
499 (sha256
500 (base32
4016de5e 501 "0bpiby916k3k8bm7q8b1dflva6zs0a4ircskrck0d538dfcrb50q"))))
d016b60f
NG
502 (build-system gnu-build-system)
503 (inputs `(("c-ares" ,c-ares)
504 ("glib" ,glib)
834a2fc1 505 ("gnutls" ,gnutls)
834a2fc1
NG
506 ("libcap" ,libcap)
507 ("libgcrypt" ,libgcrypt)
508 ("libnl" ,libnl)
509 ("libpcap" ,libpcap)
d016b60f
NG
510 ("libssh" ,libssh)
511 ("libxml2" ,libxml2)
512 ("lua" ,lua-5.2) ;Lua 5.3 unsupported
834a2fc1
NG
513 ("krb5" ,mit-krb5)
514 ("openssl" ,openssl)
515 ("portaudio" ,portaudio)
d016b60f 516 ("qtbase" ,qtbase)
834a2fc1
NG
517 ("sbc" ,sbc)
518 ("zlib" ,zlib)))
519 (native-inputs `(("perl" ,perl)
520 ("pkg-config" ,pkg-config)
db314bf4
MB
521 ("python" ,python-wrapper)
522 ("qttools" ,qttools)))
834a2fc1
NG
523 (arguments
524 `(#:configure-flags
525 (list (string-append "--with-c-ares=" (assoc-ref %build-inputs "c-ares"))
526 (string-append "--with-krb5=" (assoc-ref %build-inputs "krb5"))
527 (string-append "--with-libcap=" (assoc-ref %build-inputs "libcap"))
d016b60f 528 (string-append "--with-libssh=" (assoc-ref %build-inputs "libssh"))
834a2fc1
NG
529 (string-append "--with-lua=" (assoc-ref %build-inputs "lua"))
530 (string-append "--with-pcap=" (assoc-ref %build-inputs "libpcap"))
531 (string-append "--with-portaudio="
d016b60f 532 (assoc-ref %build-inputs "portaudio"))
834a2fc1
NG
533 (string-append "--with-sbc=" (assoc-ref %build-inputs "sbc"))
534 (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl"))
d016b60f 535 (string-append "--with-zlib=" (assoc-ref %build-inputs "zlib")))))
d016b60f 536 (synopsis "Network traffic analyzer")
834a2fc1
NG
537 (description "Wireshark is a network protocol analyzer, or @dfn{packet
538sniffer}, that lets you capture and interactively browse the contents of
539network frames.")
d016b60f
NG
540 (home-page "https://www.wireshark.org/")
541 (license license:gpl2+)))
82ee141b 542
61253c4f
SR
543(define-public fping
544 (package
545 (name "fping")
546 (version "4.0")
547 (source
548 (origin
549 (method url-fetch)
550 (uri (string-append "https://fping.org/dist/fping-"
551 version ".tar.gz"))
552 (sha256
553 (base32
554 "1kp81wchi79l8z8rrj602fpjrd8bi84y3i7fsaclzlwap5943sv7"))))
555 (build-system gnu-build-system)
556 (home-page "http://fping.org/")
557 (synopsis "Send ICMP ECHO_REQUEST packets to network hosts")
558 (description
559 "fping is a ping like program which uses the Internet Control Message
560Protocol (ICMP) echo request to determine if a target host is responding.
561fping differs from ping in that you can specify any number of targets on the
562command line, or specify a file containing the lists of targets to ping.
563Instead of sending to one target until it times out or replies, fping will
564send out a ping packet and move on to the next target in a round-robin
565fashion.")
566 (license license:expat)))
567
82ee141b
TGR
568(define-public httping
569 (package
570 (name "httping")
2f968727 571 (version "2.5")
82ee141b
TGR
572 (source
573 (origin
574 (method url-fetch)
575 (uri (string-append "https://www.vanheusden.com/httping/httping-"
576 version ".tgz"))
577 (sha256
578 (base32
2f968727 579 "1y7sbgkhgadmd93x1zafqc4yp26ssiv16ni5bbi9vmvvdl55m29y"))))
82ee141b
TGR
580 (build-system gnu-build-system)
581 (native-inputs
b94a6ca0 582 `(("gettext" ,gettext-minimal)))
82ee141b
TGR
583 (inputs
584 `(("fftw" ,fftw)
585 ("ncurses" ,ncurses)
586 ("openssl" ,openssl)))
587 (arguments
588 `(#:make-flags (list "CC=gcc"
589 (string-append "DESTDIR=" (assoc-ref %outputs "out"))
590 "PREFIX=")
591 #:tests? #f)) ; no tests
592 (home-page "https://www.vanheusden.com/httping/")
593 (synopsis "Web server latency and throughput monitor")
594 (description
595 "httping measures how long it takes to connect to a web server, send an
596HTTP(S) request, and receive the reply headers. It is somewhat similar to
597@command{ping}, but can be used even in cases where ICMP traffic is blocked
598by firewalls or when you want to monitor the response time of the actual web
599application stack itself.")
600 (license license:gpl2))) ; with permission to link with OpenSSL
68b14f2e 601
9e6c7c42
SR
602(define-public httpstat
603 (package
604 (name "httpstat")
605 (version "1.2.1")
606 (source
607 (origin
608 (method url-fetch)
609 (uri (pypi-uri "httpstat" version))
610 (sha256
611 (base32
612 "1chw2nk56vaq87aba012a270k9na06hfx1pfbsrc3jfvlc2kb9hb"))))
613 (build-system python-build-system)
614 (inputs `(("curl" ,curl)))
615 (arguments
616 '(#:phases
617 (modify-phases %standard-phases
618 (add-before 'build 'fix-curl-path
619 (lambda* (#:key inputs #:allow-other-keys)
620 (substitute* "httpstat.py"
621 (("ENV_CURL_BIN.get\\('curl'\\)")
622 (string-append "ENV_CURL_BIN.get('"
623 (assoc-ref inputs "curl")
624 "/bin/curl')"))))))))
625 (home-page "https://github.com/reorx/httpstat")
626 (synopsis "Visualize curl statistics")
627 (description
628 "@command{httpstat} is a tool to visualize statistics from the
629@command{curl} HTTP client. It acts as a wrapper for @command{curl} and
630prints timing information for each step of the HTTP request (DNS lookup,
631TCP connection, TLS handshake and so on) in the terminal.")
632 (license license:expat)))
633
be9f3a83
AI
634(define-public bwm-ng
635 (package
636 (name "bwm-ng")
637 (version "0.6.1")
638 (source
639 (origin
640 (method url-fetch)
641 (uri (string-append "https://www.gropp.org/bwm-ng/bwm-ng-"
642 version ".tar.gz"))
643 (sha256
644 (base32
645 "1w0dwpjjm9pqi613i8glxrgca3rdyqyp3xydzagzr5ndc34z6z02"))))
646 (build-system gnu-build-system)
647 (inputs `(("ncurses" ,ncurses)))
648 (synopsis "Console based live network and disk I/O bandwidth monitor")
649 (description "Bandwidth Monitor NG is a small and simple console based
650live network and disk I/O bandwidth monitor.")
651 (home-page "https://www.gropp.org/?id=projects&sub=bwm-ng")
652 (license license:gpl2)))
653
d85b398b
EB
654(define-public aircrack-ng
655 (package
656 (name "aircrack-ng")
657 (version "1.2-rc4")
658 (source
659 (origin
660 (method url-fetch)
661 (uri (string-append "http://download.aircrack-ng.org/aircrack-ng-"
662 version ".tar.gz"))
663 (sha256
664 (base32
665 "0dpzx9kddxpgzmgvdpl3rxn0jdaqhm5wxxndp1xd7d75mmmc2fnr"))))
666 (build-system gnu-build-system)
667 (native-inputs
668 `(("pkg-config" ,pkg-config)))
669 (inputs
670 `(("libgcrypt" ,libgcrypt)
671 ("libnl" ,libnl)
672 ("ethtool" ,ethtool)
673 ("pcre" ,pcre)
674 ("sqlite" ,sqlite)
675 ("zlib" ,zlib)))
676 (arguments
677 `(#:make-flags `("sqlite=true"
678 "gcrypt=true"
679 "libnl=true"
680 "pcre=true"
681 "experimental=true" ;build wesside-ng, etc.
af5faef9
EF
682 "AVX2FLAG=N" "AVX1FLAG=N"
683 ,,@(match (%current-system)
684 ((or "x86_64-linux" "i686-linux")
685 `("SSEFLAG=Y"))
686 (_
687 `("NEWSSE=false")))
d85b398b
EB
688 ,(string-append "prefix=" %output))
689 #:phases (modify-phases %standard-phases
690 (delete 'configure) ;no configure phase
691 (add-after 'build 'absolutize-tools
692 (lambda* (#:key inputs #:allow-other-keys)
693 (let ((ethtool (string-append (assoc-ref inputs "ethtool")
694 "/sbin/ethtool")))
695 (substitute* "scripts/airmon-ng"
696 (("\\[ ! -x \"\\$\\(command -v ethtool 2>&1)\" \\]")
697 (string-append "! " ethtool " --version "
698 ">/dev/null 2>&1"))
699 (("\\$\\(ethtool")
700 (string-append "$(" ethtool)))
701 #t))))))
702 (home-page "http://www.aircrack-ng.org")
703 (synopsis "Assess WiFi network security")
704 (description
705 "Aircrack-ng is a complete suite of tools to assess WiFi network
706security. It focuses on different areas of WiFi security: monitoring,
707attacking, testing, and cracking. All tools are command-line driven, which
708allows for heavy scripting.")
709 (license (list license:gpl2+ license:bsd-3))))
710
68b14f2e
DM
711(define-public perl-net-dns
712 (package
713 (name "perl-net-dns")
d6f5ad88 714 (version "1.14")
68b14f2e
DM
715 (source
716 (origin
717 (method url-fetch)
718 (uri (string-append
719 "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
720 version
721 ".tar.gz"))
722 (sha256
723 (base32
d6f5ad88 724 "1z4r092qv0ify033dld5jayk8gs0bc7pl130dvb8ab7b9rcqmhw3"))))
68b14f2e
DM
725 (build-system perl-build-system)
726 (inputs
727 `(("perl-digest-hmac" ,perl-digest-hmac)))
728 (home-page "http://search.cpan.org/dist/Net-DNS")
729 (synopsis
730 "Perl Interface to the Domain Name System")
731 (description "Net::DNS is the Perl Interface to the Domain Name System.")
732 (license license:x11)))
87b14091
DM
733
734(define-public perl-socket6
735 (package
736 (name "perl-socket6")
737 (version "0.28")
738 (source
739 (origin
740 (method url-fetch)
741 (uri (string-append
742 "mirror://cpan/authors/id/U/UM/UMEMOTO/Socket6-"
743 version
744 ".tar.gz"))
745 (sha256
746 (base32
747 "11j5jzqbzmwlws9zals43ry2f1nw9qy6im7yhn9ck5rikywrmm5z"))))
748 (build-system perl-build-system)
749 (arguments
750 `(#:phases
751 (modify-phases %standard-phases
752 (replace 'configure
753 (lambda* (#:key outputs #:allow-other-keys)
754 (let* ((out (assoc-ref outputs "out"))
755 (args `("Makefile.PL"
756 ,(string-append "PREFIX=" out)
757 "INSTALLDIRS=site")))
758 (setenv "CONFIG_SHELL" (which "sh"))
759 (zero? (apply system* "perl" args))))))))
760 (home-page "http://search.cpan.org/dist/Socket6")
761 (synopsis
762 "IPv6 related part of the C socket.h defines and structure manipulators for Perl")
763 (description "Socket6 binds the IPv6 related part of the C socket header
764definitions and structure manipulators for Perl.")
765 (license license:bsd-3)))
8d60dd71
DM
766
767(define-public perl-net-dns-resolver-programmable
768 (package
769 (name "perl-net-dns-resolver-programmable")
770 (version "v0.003")
771 (source
772 (origin
773 (method url-fetch)
774 (uri (string-append
775 "mirror://cpan/authors/id/J/JM/JMEHNLE/net-dns-resolver-programmable/"
776 "Net-DNS-Resolver-Programmable-" version ".tar.gz"))
777 (sha256
778 (base32
779 "1v3nl2kaj4fs55n1617n53q8sa3mir06898vpy1rq98zjih24h4d"))
780 (patches
1d248adb 781 (search-patches "perl-net-dns-resolver-programmable-fix.patch"))))
8d60dd71
DM
782 (build-system perl-build-system)
783 (native-inputs
784 `(("perl-module-build" ,perl-module-build)))
785 (inputs `(("perl-net-dns" ,perl-net-dns)))
786 (home-page
787 "http://search.cpan.org/dist/Net-DNS-Resolver-Programmable")
788 (synopsis
789 "Programmable DNS resolver class for offline emulation of DNS")
790 (description "Net::DNS::Resolver::Programmable is a programmable DNS resolver for
791offline emulation of DNS.")
2f3108ad 792 (license license:perl-license)))
1201eab9
DM
793
794(define-public perl-netaddr-ip
795 (package
796 (name "perl-netaddr-ip")
797 (version "4.079")
798 (source
799 (origin
800 (method url-fetch)
801 (uri (string-append
802 "mirror://cpan/authors/id/M/MI/MIKER/NetAddr-IP-"
803 version
804 ".tar.gz"))
805 (sha256
806 (base32
807 "1rx0dinrz9fk9qcg4rwqq5n1dm3xv2arymixpclcv2q2nzgq4npc"))))
808 (build-system perl-build-system)
809 (arguments
810 `(#:phases
811 (modify-phases %standard-phases
812 (replace 'configure
813 (lambda* (#:key outputs #:allow-other-keys)
814 (let* ((out (assoc-ref outputs "out"))
815 (args `("Makefile.PL"
816 ,(string-append "PREFIX=" out)
817 "INSTALLDIRS=site")))
818 (setenv "CONFIG_SHELL" (which "sh"))
819 (zero? (apply system* "perl" args))))))))
820 (home-page
821 "http://search.cpan.org/dist/NetAddr-IP")
822 (synopsis
823 "Manages IPv4 and IPv6 addresses and subnets")
824 (description "NetAddr::IP manages IPv4 and IPv6 addresses and subsets.")
2f3108ad 825 (license license:perl-license)))
3ed361ea
DM
826
827(define-public perl-net-patricia
828 (package
829 (name "perl-net-patricia")
830 (version "1.22")
831 (source
832 (origin
833 (method url-fetch)
834 (uri (string-append
835 "mirror://cpan/authors/id/G/GR/GRUBER/Net-Patricia-"
836 version
837 ".tar.gz"))
838 (sha256
839 (base32
840 "0ln5f57vc8388kyh9vhx2infrdzfhbpgyby74h1qsnhwds95m0vh"))))
841 (build-system perl-build-system)
842 (inputs
843 `(("perl-net-cidr-lite" ,perl-net-cidr-lite)
844 ("perl-socket6" ,perl-socket6)))
845 (home-page
846 "http://search.cpan.org/dist/Net-Patricia")
847 (synopsis
848 "Patricia Trie Perl module for fast IP address lookups")
849 (description
850 "Net::Patricia does IP address lookups quickly in Perl.")
851 ;; The bindings are licensed under GPL2 or later.
852 ;; libpatricia is licensed under 2-clause BSD.
853 (license (list license:gpl2+ license:bsd-2))))
b09a8b6f
DM
854
855(define-public perl-net-cidr-lite
856 (package
857 (name "perl-net-cidr-lite")
858 (version "0.21")
859 (source
860 (origin
861 (method url-fetch)
862 (uri (string-append
863 "mirror://cpan/authors/id/D/DO/DOUGW/Net-CIDR-Lite-"
864 version
865 ".tar.gz"))
866 (sha256
867 (base32
868 "14shj73zbqmfjbp0qz1fs9j4p2dpvz5hfkm4qfdjbydflbl2b8fg"))))
869 (build-system perl-build-system)
870 (home-page
871 "http://search.cpan.org/dist/Net-CIDR-Lite")
872 (synopsis
873 "Perl extension for merging IPv4 or IPv6 CIDR addresses")
874 (description "Net::CIDR::Lite merges IPv4 or IPv6 CIDR addresses.")
875 (license license:gpl1+)))
e741c4e4
DM
876
877;; TODO: Use the geolite-mirror-simple.pl script from the example
878;; directory to stay current with the databases. How?
879(define-public perl-geo-ip
880 (package
881 (name "perl-geo-ip")
b2799117 882 (version "1.51")
e741c4e4
DM
883 (source
884 (origin
885 (method url-fetch)
886 (uri (string-append
887 "mirror://cpan/authors/id/M/MA/MAXMIND/Geo-IP-"
888 version
889 ".tar.gz"))
890 (sha256
891 (base32
b2799117 892 "1fka8fr7fw6sh3xa9glhs1zjg3s2gfkhi7n7da1l2m2wblqj0c0n"))))
e741c4e4
DM
893 (build-system perl-build-system)
894 (home-page "http://search.cpan.org/dist/Geo-IP")
895 (synopsis
896 "Look up location and network information by IP Address in Perl")
897 (description "The Perl module 'Geo::IP'. It looks up location and network
898information by IP Address.")
2f3108ad 899 (license license:perl-license)))
e818f321
DM
900
901(define-public perl-io-socket-inet6
902 (package
903 (name "perl-io-socket-inet6")
904 (version "2.72")
905 (source
906 (origin
907 (method url-fetch)
908 (uri (string-append
909 "mirror://cpan/authors/id/S/SH/SHLOMIF/IO-Socket-INET6-"
910 version
911 ".tar.gz"))
912 (sha256
913 (base32
914 "1fqypz6qa5rw2d5y2zq7f49frwra0aln13nhq5gi514j2zx21q45"))))
915 (build-system perl-build-system)
916 (native-inputs
917 `(("perl-module-build" ,perl-module-build)
918 ("perl-test-pod" ,perl-test-pod)
919 ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
920 (inputs `(("perl-socket6" ,perl-socket6)))
921 (arguments `(;; Need network socket API
922 #:tests? #f))
923 (home-page
924 "http://search.cpan.org/dist/IO-Socket-INET6")
925 (synopsis
926 "Perl object interface for AF_INET/AF_INET6 domain sockets")
927 (description "IO::Socket::INET6 is an interface for AF_INET/AF_INET6 domain
928sockets in Perl.")
2f3108ad 929 (license license:perl-license)))
a1c83fef 930
167a541f
TD
931(define-public libproxy
932 (package
933 (name "libproxy")
934 (version "0.4.15")
935 (source (origin
936 (method url-fetch)
937 (uri (string-append "https://github.com/libproxy/libproxy/"
938 "releases/download/" version "/libproxy-"
939 version ".tar.xz"))
940 (sha256
941 (base32
942 "0kvdrazlzwia876w988cmlypp253gwy6idlh8mjk958c29jb8kb5"))))
943 (build-system cmake-build-system)
944 (native-inputs
945 `(("pkg-config" ,pkg-config)))
946 (inputs
947 `(("dbus" ,dbus)
948 ("zlib" ,zlib)
949 ("network-manager" ,network-manager)))
950 (arguments
951 `(#:phases
952 (modify-phases %standard-phases
953 (replace 'check
954 (lambda _
955 (zero? (system* "ctest" "-E" "url-test")))))))
956 (synopsis "Library providing automatic proxy configuration management")
957 (description "Libproxy handles the details of HTTP/HTTPS proxy
958configuration for applications across all scenarios. Applications using
959libproxy only have to specify which proxy to use.")
960 (home-page "https://libproxy.github.io/libproxy")
961 (license license:lgpl2.1+)))
962
a1c83fef 963(define-public proxychains-ng
964 (package
965 (name "proxychains-ng")
cdb93e50 966 (version "4.12")
a1c83fef 967 (source (origin
968 (method url-fetch)
969 (uri (string-append "https://github.com/rofl0r/" name "/releases/"
970 "download/v" version "/" name "-" version
cdb93e50 971 ".tar.xz"))
a1c83fef 972 (sha256
973 (base32
cdb93e50 974 "0kiss3ih6cwayzvqi5cx4kw4vh7r2kfxlbgk56v1f1066ncm8aj8"))))
a1c83fef 975 (build-system gnu-build-system)
976 (arguments
977 `(#:tests? #f ; there are no tests
978 #:make-flags '("CC=gcc")
979 #:phases
980 (modify-phases %standard-phases
981 (add-after 'unpack 'fix-configure-script
982 (lambda _
983 ;; The configure script is very intolerant to unknown arguments,
984 ;; such as "CONFIG_SHELL".
985 (substitute* "configure"
986 (("\\*\\) break ;;" line)
987 (string-append "[A-Z]*) shift ;;\n"
988 line)))
989 #t)))))
990 (synopsis "Redirect any TCP connection through a proxy or proxy chain")
991 (description "Proxychains-ng is a preloader which hooks calls to sockets
992in dynamically linked programs and redirects them through one or more SOCKS or
993HTTP proxies.")
994 (home-page "https://github.com/rofl0r/proxychains-ng")
995 (license license:gpl2+)))
93666cf7 996
997(define-public enet
998 (package
999 (name "enet")
1000 (version "1.3.13")
1001 (source (origin
1002 (method url-fetch)
1003 (uri (string-append "http://enet.bespin.org/download/"
1004 name "-" version ".tar.gz"))
1005 (sha256
1006 (base32
1007 "0p53mnmjbm56wizwraznynx13fcibcxiqny110dp6a5a3w174q73"))))
1008 (build-system gnu-build-system)
1009 (native-inputs
1010 `(("pkg-config" ,pkg-config)))
1011 (synopsis
1012 "Network communication layer on top of UDP")
1013 (description
1014 "ENet's purpose is to provide a relatively thin, simple and robust network
1015communication layer on top of UDP. The primary feature it provides is optional
1016reliable, in-order delivery of packets. ENet omits certain higher level
1017networking features such as authentication, server discovery, encryption, or
1018other similar tasks that are particularly application specific so that the
1019library remains flexible, portable, and easily embeddable.")
1020 (home-page "http://enet.bespin.org")
1021 (license license:expat)))
4fb5f830
TGR
1022
1023(define-public sslh
1024 (package
1025 (name "sslh")
1026 (version "1.18")
1027 (source (origin
1028 (method url-fetch)
1029 (uri (string-append "https://github.com/yrutschle/sslh/archive/v"
1030 version ".tar.gz"))
1031 (file-name (string-append name "-" version ".tar.gz"))
1032 (sha256
1033 (base32
1034 "1vzw7a7s9lhspbn5zn3hw8hir4pkjgbd68yys4hfsnjp1h7bzjpn"))))
1035 (build-system gnu-build-system)
1036 (native-inputs
1037 `(;; Tests dependencies.
1038 ("lcov" ,lcov)
1039 ("perl" ,perl)
1040 ("perl-io-socket-inet6" ,perl-io-socket-inet6)
1041 ("perl-socket6" ,perl-socket6)
1042 ("psmisc" ,psmisc)
1043 ("valgrind" ,valgrind)))
1044 (inputs
1045 `(("libcap" ,libcap)
1046 ("libconfig" ,libconfig)
1047 ("tcp-wrappers" ,tcp-wrappers)))
1048 (arguments
1049 '(#:phases
1050 (modify-phases %standard-phases
1051 (delete 'configure) ; no configure script
1052 (add-before 'check 'fix-tests
1053 (lambda _
1054 (substitute* "./t"
1055 (("\"/tmp") "$ENV{\"TMPDIR\"} . \"")
1056 ;; The Guix build environment lacks ‘ip6-localhost’.
1057 (("ip6-localhost") "localhost"))
1058 #t))
1059 ;; Many of these files are mentioned in the man page. Install them.
1060 (add-after 'install 'install-documentation
1061 (lambda* (#:key outputs #:allow-other-keys)
1062 (let* ((out (assoc-ref outputs "out"))
1063 (doc (string-append out "/share/doc/sslh")))
1064 (install-file "README.md" doc)
1065 (for-each
1066 (lambda (file)
1067 (install-file file (string-append doc "/examples")))
1068 (append (find-files "." "\\.cfg")
1069 (find-files "scripts"))))
1070 #t)))
1071 #:make-flags (list "CC=gcc"
1072 "USELIBCAP=1"
1073 "USELIBWRAP=1"
1074 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1075 #:test-target "test"))
1076 (home-page "http://www.rutschle.net/tech/sslh.shtml")
1077 (synopsis "Applicative network protocol demultiplexer")
1078 (description
1079 "sslh is a network protocol demultiplexer. It acts like a switchboard,
1080accepting connections from clients on one port and forwarding them to different
1081servers based on the contents of the first received data packet. Detection of
1082common protocols like HTTP(S), SSL, SSH, OpenVPN, tinc, and XMPP is already
1083implemented, but any other protocol that matches a regular expression can be
1084added. sslh's name comes from its original application of serving both SSH and
1085HTTPS on port 443, allowing SSH connections from inside corporate firewalls
1086that block port 22.")
1087 (license (list license:bsd-2 ; tls.[ch]
1088 license:gpl2+)))) ; everything else
b747718e
BS
1089
1090(define-public iperf
1091 (package
1092 (name "iperf")
9c974c93 1093 (version "3.1.7")
b747718e
BS
1094 (source (origin
1095 (method url-fetch)
1096 (uri (string-append "http://downloads.es.net/pub/iperf"
1097 "/iperf-" version ".tar.gz"))
1098 (sha256
1099 (base32
9c974c93 1100 "0kvk8d0a3dcxc8fisyprbn01y8akxj4sx8ld5dh508p9dx077vx4"))))
b747718e
BS
1101 (build-system gnu-build-system)
1102 (synopsis "TCP, UDP and SCTP bandwidth measurement tool")
1103 (description
1104 "iPerf is a tool to measure achievable bandwidth on IP networks. It
1105supports tuning of various parameters related to timing, buffers and
1106protocols (TCP, UDP, SCTP with IPv4 and IPv6). For each test it reports
1107the bandwidth, loss, and other parameters.")
1108 (home-page "http://software.es.net/iperf/")
1109 (license (list license:bsd-3 ; Main distribution.
1110 license:ncsa ; src/{units,iperf_locale,tcp_window_size}.c
1111 license:expat ; src/{cjson,net}.[ch]
1112 license:public-domain)))) ; src/portable_endian.h
b7f3cf2c
AI
1113
1114(define-public nethogs
1115 (package
1116 (name "nethogs")
1117 (version "0.8.5")
1118 (source (origin
1119 (method url-fetch)
1120 (uri (string-append "https://github.com/raboof/nethogs/archive/v"
1121 version ".tar.gz"))
1122 (sha256
1123 (base32
1124 "1k4x8r7s4dgcb6n2rjn28h2yyij92mwm69phncl3597cdxr954va"))
1125 (file-name (string-append name "-" version ".tar.gz"))))
1126 (build-system gnu-build-system)
1127 (inputs
1128 `(("libpcap" ,libpcap)
1129 ("ncurses" ,ncurses)))
1130 (arguments
1131 `(#:make-flags `("CC=gcc"
1132 ,(string-append "PREFIX=" %output))
1133 #:phases
1134 (modify-phases %standard-phases
1135 (delete 'configure)))) ; No ./configure script.
1136 (home-page "https://github.com/raboof/nethogs")
1137 (synopsis "Per-process bandwidth monitor")
1138 (description "NetHogs is a small 'net top' tool for Linux. Instead of
1139breaking the traffic down per protocol or per subnet, like most tools do, it
1140groups bandwidth by process.
1141
1142NetHogs does not rely on a special kernel module to be loaded. If there's
1143suddenly a lot of network traffic, you can fire up NetHogs and immediately see
1144which PID is causing this. This makes it easy to identify programs that have
1145gone wild and are suddenly taking up your bandwidth.")
1146 (license license:gpl2+)))
92ac2cff 1147
b3623b6f
RH
1148(define-public nzbget
1149 (package
1150 (name "nzbget")
657f1815 1151 (version "19.1")
b3623b6f
RH
1152 (source
1153 (origin
1154 (method url-fetch)
1155 (uri (string-append "https://github.com/nzbget/nzbget/archive/v"
1156 version ".tar.gz"))
1157 (file-name (string-append name "-" version ".tar.gz"))
1158 (sha256
1159 (base32
657f1815
TGR
1160 "0y713g7gd4n5chbhr8lv7k50rxkmzysrg13sscxam3s386mmlb1r"))
1161 (modules '((guix build utils)))
1162 (snippet
1163 ;; Reported upstream as <https://github.com/nzbget/nzbget/pull/414>.
1164 '(begin
1165 (substitute* "daemon/connect/TlsSocket.cpp"
1166 (("gnutls_certificate-verification_status_print")
1167 "gnutls_certificate_verification_status_print"))
1168 #t))))
b3623b6f
RH
1169 (arguments
1170 `(#:configure-flags
1171 (list
657f1815
TGR
1172 (string-append "--with-libcurses-includes="
1173 (assoc-ref %build-inputs "ncurses") "/include")
1174 (string-append "--with-libcurses-libraries="
1175 (assoc-ref %build-inputs "ncurses") "/lib")
b3623b6f
RH
1176 (string-append "--with-tlslib=GnuTLS"))))
1177 (build-system gnu-build-system)
1178 (inputs `(("gnutls", gnutls)
1179 ("libxml2", libxml2)
1180 ("ncurses", ncurses)
1181 ("zlib", zlib)))
1182 (native-inputs `(("pkg-config", pkg-config)))
1183 (home-page "https://github.com/nzbget/nzbget")
1184 (synopsis "Usenet binary file downloader")
1185 (description
1186 "NZBGet is a binary newsgrabber, which downloads files from Usenet based
1187on information given in @code{nzb} files. NZBGet can be used in standalone
1188and in server/client modes. In standalone mode, you pass NZBGet @command{nzb}
1189files as command-line parameters and it downloads them and exits. NZBGet also
1190contains a Web interface. Its server can be controlled through remote
1191procedure calls (RPCs).")
1192 (license license:gpl2+)))
1193
92ac2cff
SB
1194(define-public openvswitch
1195 (package
1196 (name "openvswitch")
1197 (version "2.6.1")
1198 (source (origin
1199 (method url-fetch)
1200 (uri (string-append
1201 "http://openvswitch.org/releases/openvswitch-"
1202 version ".tar.gz"))
1203 (sha256
1204 (base32
1205 "036gq741j9kqsjlp693nff838c9wjd1c56nswl9vyyd1lsmj0yrh"))))
1206 (build-system gnu-build-system)
1207 (arguments
1208 '(;; FIXME: many tests fail with:
1209 ;; […]
1210 ;; test -e $OVS_RUNDIR/ovs-vswitchd.pid
1211 ;; ovs-appctl -t ovs-vswitchd exit
1212 ;; hard failure
1213 #:tests? #f
1214 #:configure-flags
1215 '("--enable-shared"
1216 "--localstatedir=/var"
1217 "--with-dbdir=/var/lib/openvswitch")
1218 #:phases
1219 (modify-phases %standard-phases
1220 (replace 'install
1221 (lambda _
1222 (zero? (system* "make"
1223 ;; Don't try to create directories under /var.
1224 "RUNDIR=/tmp"
1225 "PKIDIR=/tmp"
1226 "LOGDIR=/tmp"
1227 "DBDIR=/tmp"
1228 "install")))))))
1229 (native-inputs
1230 `(("perl" ,perl)
1231 ("pkg-config" ,pkg-config)
1232 ("python" ,python-2)
1233 ;; for testing
1234 ("util-linux" ,util-linux)))
1235 (propagated-inputs
1236 `(("python-six" ,python2-six)))
1237 (inputs
1238 `(("libcap-ng" ,libcap-ng)
1239 ("openssl" ,openssl)))
1240 (synopsis "Virtual network switch")
1241 (home-page "http://www.openvswitch.org/")
1242 (description
1243 "Open vSwitch is a multilayer virtual switch. It is designed to enable
1244massive network automation through programmatic extension, while still
1245supporting standard management interfaces and protocols (e.g. NetFlow, sFlow,
1246IPFIX, RSPAN, CLI, LACP, 802.1ag).")
1247 (license ; see debian/copyright for detail
1248 (list license:lgpl2.1 ; xenserver and utilities/bugtool
1249 license:gpl2 ; datapath
1250 license:bsd-2 license:bsd-3
1251 license:asl2.0)))) ; all other
38510546 1252
42c939a8
RW
1253(define-public python-ipy
1254 (package
1255 (name "python-ipy")
1256 (version "0.83")
1257 (source (origin
1258 (method url-fetch)
1259 (uri (pypi-uri "IPy" version))
1260 (sha256
1261 (base32
1262 "1f6sdrxclifky4gvkf4gvyv5hx3fjh8vzspnfrqki6qm5d9mmnk1"))))
1263 (build-system python-build-system)
1264 (home-page "https://github.com/autocracy/python-ipy/")
1265 (synopsis "Python class and tools for handling IP addresses and networks")
1266 (description "The @code{IP} class allows a comfortable parsing and
1267handling for most notations in use for IPv4 and IPv6 addresses and
1268networks.")
1269 (license license:bsd-3)))
1270
38510546
PP
1271(define-public speedtest-cli
1272 (package
1273 (name "speedtest-cli")
57473bfc 1274 (version "1.0.7")
38510546
PP
1275 (source
1276 (origin
1277 (method url-fetch)
1278 (uri (string-append
1279 "https://github.com/sivel/speedtest-cli/archive/v" version ".tar.gz"))
1280 (file-name (string-append name "-" version ".tar.gz"))
1281 (sha256
1282 (base32
57473bfc 1283 "1fbq4kpx8sj50g74hwpixisfjjgxq6zyn40d3m28dxhn7mxbnlrq"))))
38510546
PP
1284 (build-system python-build-system)
1285 (home-page "https://github.com/sivel/speedtest-cli")
1286 (synopsis "Internet bandwidth tester")
1287 (description
1288 "Command line interface for testing internet bandwidth using
1289speedtest.net.")
1290 (license license:asl2.0)))
5b5cf3c7
GB
1291
1292(define-public tftp-hpa
1293 (package
1294 (name "tftp-hpa")
1295 (version "5.2")
1296 (source (origin
1297 (method url-fetch)
1298 (uri (string-append "mirror://kernel.org/software/"
1299 "network/tftp/tftp-hpa/tftp-hpa-" version
1300 ".tar.xz"))
1301 (sha256
1302 (base32
1303 "12vidchglhyc20znq5wdsbhi9mqg90jnl7qr9qs8hbvaz4fkdvmg"))))
1304 (build-system gnu-build-system)
1305 (arguments `(#:tests? #f)) ; no test target
1306 (synopsis "HPA's tftp client")
1307 (description
1308 "This is a tftp client derived from OpenBSD tftp with some extra options
1309added and bugs fixed. The source includes readline support but it is not
1310enabled due to license conflicts between the BSD advertising clause and the GPL.")
1311 (home-page "http://git.kernel.org/cgit/network/tftp/tftp-hpa.git/about/")
1312 ;; Some source files are distributed under a 3-clause BSD license, and
1313 ;; others under a 4-clause BSD license. Refer to the files in the source
1314 ;; distribution for clarification.
1315 (license (list license:bsd-3 license:bsd-4))))
cc24bf98 1316
f2e12718 1317(define-public pidentd
1318 (package
1319 (name "pidentd")
1320 (version "3.0.19")
1321 (source
1322 (origin
1323 (method url-fetch)
1324 (uri (string-append "https://github.com/ptrrkssn/pidentd/archive/"
1325 "v" version ".tar.gz"))
1326 (file-name (string-append name "-" version ".tar.gz"))
1327 (sha256
1328 (base32
1329 "0y3kd1bkydqkpc1qdff24yswysamsqivvadjy0468qri5730izgc"))))
1330 (build-system gnu-build-system)
1331 (arguments
1332 `(#:tests? #f)) ; No tests are included
1333 (inputs
1334 `(("openssl" ,openssl))) ; For the DES library
1335 (home-page "https://www.lysator.liu.se/~pen/pidentd/")
1336 (synopsis "Small Ident Daemon")
1337 (description
1338 "@dfn{Pidentd} (Peter's Ident Daemon) is a identd, which implements a
1339identification server. Pidentd looks up specific TCP/IP connections and
1340returns the user name and other information about the connection.")
1341 (license license:public-domain)))
1342
cc24bf98
LF
1343(define-public spiped
1344 (package
1345 (name "spiped")
1346 (version "1.6.0")
1347 (source (origin
1348 (method url-fetch)
1349 (uri (string-append "https://www.tarsnap.com/spiped/spiped-"
1350 version ".tgz"))
1351 (sha256
1352 (base32
1353 "1r51rdcl7nib1yv3yvgd5alwlkkwmr387brqavaklb0p2bwzixz6"))))
1354 (build-system gnu-build-system)
1355 (arguments
1356 '(#:test-target "test"
1357 #:make-flags (let* ((out (assoc-ref %outputs "out"))
1358 (bindir (string-append out "/bin"))
1359 (man1dir (string-append out "/share/man/man1")))
1360 (list "CC=gcc" ; It tries to invoke `c99`.
1361 (string-append "BINDIR=" bindir)
1362 (string-append "MAN1DIR=" man1dir)))
1363 #:phases
1364 (modify-phases %standard-phases
1365 (add-after 'unpack 'patch-command-invocations
1366 (lambda _
1367 (substitute* '("Makefile"
1368 "libcperciva/cpusupport/Build/cpusupport.sh"
1369 "libcperciva/POSIX/posix-cflags.sh"
1370 "libcperciva/POSIX/posix-l.sh")
1371 (("command -p") ""))
1372 #t))
1373 (delete 'configure) ; No ./configure script.
1374 (add-after 'install 'install-more-docs
1375 (lambda* (#:key outputs #:allow-other-keys)
1376 (let* ((out (assoc-ref %outputs "out"))
1377 (misc (string-append out "/share/doc/spiped")))
1378 (install-file "DESIGN.md" misc)
1379 #t))))))
1380 (native-inputs
1381 `(("procps" ,procps))) ; `ps` is used by the test suite.
1382 (inputs
1383 `(("openssl" ,openssl)))
1384 (home-page "https://www.tarsnap.com/spiped.html")
1385 (synopsis "Create secure pipes between sockets")
1386 (description "Spiped (pronounced \"ess-pipe-dee\") is a utility for creating
1387symmetrically encrypted and authenticated pipes between socket addresses, so
1388that one may connect to one address (e.g., a UNIX socket on localhost) and
1389transparently have a connection established to another address (e.g., a UNIX
1390socket on a different system). This is similar to 'ssh -L' functionality, but
1391does not use SSH and requires a pre-shared symmetric key.")
1392 (license license:bsd-2)))
c2700e78
GB
1393
1394(define-public quagga
1395 (package
1396 (name "quagga")
44b8823f 1397 (version "1.2.2")
c2700e78
GB
1398 (source (origin
1399 (method url-fetch)
1400 (uri (string-append "mirror://savannah/quagga/quagga-"
1401 version ".tar.gz"))
1402 (sha256
1403 (base32
44b8823f 1404 "0c99rjjc62xl5kwvx2pwyvs0709vbwax1qydqbqf6r7fpvr24bjj"))
c2700e78
GB
1405 (patches
1406 (search-patches "quagga-reproducible-build.patch"))))
1407 (build-system gnu-build-system)
1408 (native-inputs `(("pkg-config",pkg-config)
1409 ("perl",perl)
1410 ("dejagnu",dejagnu)))
1411 (inputs `(("readline",readline)
1412 ("c-ares",c-ares)))
1413 (synopsis "Routing Software Suite")
1414 (description "Quagga is a routing software suite, providing implementations
1415of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms.
1416
1417The Quagga architecture consists of a core daemon, @command{zebra}, which
1418acts as an abstraction layer to the underlying Unix kernel and presents the
1419Zserv API over a Unix or TCP stream to Quagga clients. It is these Zserv
1420clients which typically implement a routing protocol and communicate routing
1421updates to the zebra daemon.")
1422 (home-page "http://www.nongnu.org/quagga/")
1423 (license license:gpl2+)))
4d9d9e3f
LF
1424
1425(define-public thc-ipv6
1426 (package
1427 (name "thc-ipv6")
1428 (version "3.2")
1429 (source (origin
1430 (method url-fetch)
1431 (uri (string-append "https://github.com/vanhauser-thc/thc-ipv6/"
1432 "archive/" version ".tar.gz"))
1433 (file-name (string-append name "-" version ".tar.gz"))
1434 (sha256
1435 (base32
1436 "0yh2lpsazmm0pgbmh0dx023w6fss1kdfyr4cq7yw0fac8vkw32d3"))))
1437 (build-system gnu-build-system)
1438 (arguments
1439 `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1440 #:tests? #f ; No test suite.
1441 #:phases
1442 (modify-phases %standard-phases
1443 (delete 'configure) ; No ./configure script.
1444 (add-before 'build 'patch-paths
1445 (lambda _
1446 (substitute* "Makefile"
1447 (("/bin/echo") "echo"))
1448 #t))
1449 (add-after 'install 'install-more-docs
1450 (lambda* (#:key outputs #:allow-other-keys)
1451 (let* ((out (assoc-ref outputs "out"))
1452 (doc (string-append out "/share/thc-ipv6/doc")))
1453 (install-file "README" doc)
1454 (install-file "HOWTO-INJECT" doc)
1455 #t))))))
1456 ;; TODO Add libnetfilter-queue once packaged.
1457 (inputs
1458 `(("libpcap" ,libpcap)
1459 ("openssl" ,openssl)
1460 ("perl" ,perl)))
1461 (home-page "https://github.com/vanhauser-thc/thc-ipv6")
1462 (synopsis "IPv6 security research toolkit")
1463 (description "The THC IPv6 Toolkit provides command-line tools and a library
1464for researching IPv6 implementations and deployments. It requires Linux 2.6 or
1465newer and only works on Ethernet network interfaces.")
1466 ;; AGPL 3 with exception for linking with OpenSSL. See the 'LICENSE' file in
1467 ;; the source distribution for more information.
1468 (license license:agpl3)))
cfd6a3b1
AI
1469
1470(define-public bmon
1471 (package
1472 (name "bmon")
1473 (version "4.0")
1474 (source
1475 (origin
1476 (method url-fetch)
1477 (uri (string-append "https://github.com/tgraf/bmon/releases/download/v"
1478 version "/bmon-" version ".tar.gz"))
1479 (sha256
1480 (base32
1481 "0ylzriv4pwh76344abzl1w219x188gshbycbna35gsyfp09c7z82"))))
1482 (build-system gnu-build-system)
1483 (inputs
1484 `(("libconfuse" ,libconfuse)
1485 ("libnl" ,libnl)
1486 ("ncurses" ,ncurses)))
1487 (native-inputs
1488 `(("pkg-config" ,pkg-config)))
1489 (synopsis "Bandwidth monitor")
1490 (description "bmon is a monitoring and debugging tool to capture
1491networking-related statistics and prepare them visually in a human-friendly
1492way. It features various output methods including an interactive curses user
1493interface and a programmable text output for scripting.")
1494 (home-page "https://github.com/tgraf/bmon")
1495 ;; README.md mentions both the 2-clause BSD and expat licenses, but all
1496 ;; the source files only have expat license headers. Upstream has been
1497 ;; contacted for clarification: https://github.com/tgraf/bmon/issues/59
1498 ;; Update the license field when upstream responds.
1499 (license (list license:bsd-2
1500 license:expat))))
de5308f5
RW
1501
1502(define-public libnet
1503 (package
1504 (name "libnet")
1505 (version "1.1.6")
1506 (source (origin
1507 (method url-fetch)
1508 (uri (string-append "https://github.com/sam-github/libnet/"
1509 "archive/libnet-" version ".tar.gz"))
1510 (file-name (string-append name "-" version ".tar.gz"))
1511 (sha256
1512 (base32
1513 "0l4gbzzvr199fzczzricjz7b825i7dlk6sgl5p5alnkcagmq0xys"))))
1514 (build-system gnu-build-system)
1515 (arguments
1516 `(#:phases
1517 (modify-phases %standard-phases
1518 (add-after 'unpack 'chdir
1519 (lambda _ (chdir "libnet") #t))
1520 (add-after 'chdir 'bootstrap
1521 (lambda _ (zero? (system* "autoreconf" "-vif"))))
1522 (add-before 'build 'build-doc
1523 (lambda* (#:key make-flags #:allow-other-keys)
1524 (zero? (apply system* "make" "-C" "doc" "doc"
1525 make-flags)))))))
1526 (native-inputs
1527 `(("autoconf" ,autoconf)
1528 ("automake" ,automake)
1529 ("libtool" ,libtool)
1530 ("doxygen" ,doxygen)))
1531 (home-page "https://sourceforge.net/projects/libnet-dev/")
1532 (synopsis "Framework for low-level network packet construction")
1533 (description
1534 "Libnet provides a fairly portable framework for network packet
1535construction and injection. It features portable packet creation interfaces
1536at the IP layer and link layer, as well as a host of supplementary
1537functionality. Using libnet, quick and simple packet assembly applications
1538can be whipped up with little effort.")
1539 (license license:bsd-2)))
b59a8fd4
TGR
1540
1541(define-public mtr
1542 (package
1543 (name "mtr")
1544 (version "0.92")
1545 (source
1546 (origin
1547 (method url-fetch)
1548 (uri (string-append "ftp://ftp.bitwizard.nl/" name "/"
1549 name "-" version ".tar.gz"))
1550 (sha256
1551 (base32 "10j3ds3p27jygys4x08kj8fi3zlsgiv72xsfazkah6plwawrv5zj"))))
1552 (build-system gnu-build-system)
1553 (inputs
1554 `(("libcap" ,libcap)
1555 ("ncurses" ,ncurses)))
1556 (native-inputs
1557 ;; The 0.92 release tarball still requires the ‘autoheader’ tool.
1558 `(("autoconf" ,autoconf)))
1559 (arguments
1560 `(#:tests? #f)) ; tests require network access
1561 (home-page "https://www.bitwizard.nl/mtr/")
1562 (synopsis "Network diagnostic tool")
1563 (description
1564 "@dfn{mtr} (My TraceRoute) combines the functionality of the
1565@command{traceroute} and @command{ping} programs in a single network diagnostic
63f5656c
TGR
1566tool. @command{mtr} can use several network protocols to detect intermediate
1567routers (or @dfn{hops}) between the local host and a user-specified destination.
1568It then continually measures the response time and packet loss at each hop, and
b59a8fd4
TGR
1569displays the results in real time.")
1570 (license license:gpl2+)))