gnu: Add python-pyshp.
[jackhill/guix/guix.git] / gnu / packages / networking.scm
index ca8e5fa..34369e8 100644 (file)
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2015, 2016, 2017, 2021 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
 ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2018 Tonton <tonton@riseup.net>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
@@ -42,6 +42,7 @@
 ;;; Copyright © 2020 Jesse Dowell <jessedowell@gmail.com>
 ;;; Copyright © 2020 Hamzeh Nasajpour <h.nasajpour@pantherx.org>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
-  #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages xml)
   #:use-module (ice-9 match))
 
+(define-public usrsctp
+  (package
+    (name "usrsctp")
+    (version "0.9.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/sctplab/usrsctp")
+         (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "10ndzkip8blgkw572n3dicl6mgjaa7kygwn3vls80liq92vf1sa9"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("which" ,which)))
+    (home-page "https://github.com/sctplab/usrsctp/")
+    (synopsis "SCTP user-land implementation")
+    (description "UsrSCTP is a portable SCTP userland stack.  SCTP is a message
+oriented, reliable transport protocol with direct support for multihoming that
+runs on top of IP or UDP, and supports both v4 and v6 versions.")
+    (license license:bsd-3)))
+
 (define-public axel
   (package
     (name "axel")
@@ -225,7 +254,7 @@ protocols.")
        ("gnutls" ,gnutls)
        ("libtiff" ,libtiff)
        ("openssl" ,openssl)
-       ("qt5" ,qtbase)
+       ("qt5" ,qtbase-5)
        ("udev" ,eudev)))
     (synopsis "Camera stack and framework")
     (description "LibCamera is a complex camera support library for GNU+Linux,
@@ -273,7 +302,7 @@ Android, and ChromeOS.")
     (native-inputs
      `(("glib:bin" ,glib "bin")
        ("gobject-introspection" ,gobject-introspection)
-       ("gtk-doc" ,gtk-doc)
+       ("gtk-doc" ,gtk-doc/stable)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("gstreamer" ,gstreamer)
@@ -357,7 +386,7 @@ supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.")
 (define-public srt
   (package
     (name "srt")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method git-fetch)
@@ -367,7 +396,7 @@ supported, including rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01nx3a35hzq2x0dvp2n2b86phpdy1z83kdraag7aq3hmc7f8iagg"))))
+        (base32 "1f60vlfxhh9bhafws82c3301whjlz5gy92jz9a9ymwfg5h53bv1j"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -410,7 +439,7 @@ performance across unpredictable networks, such as the Internet.")
 (define-public lksctp-tools
   (package
     (name "lksctp-tools")
-    (version "1.0.18")
+    (version "1.0.19")
     (source
      (origin
        (method git-fetch)
@@ -420,7 +449,7 @@ performance across unpredictable networks, such as the Internet.")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1x4fwzrlzvfa3vcpja97m8w5g9ir2zrh4zs7zksminrnmdrs0dsr"))))
+        (base32 "1jfq58j365mlgssavyw5wcal42n0xjkr40vmj9b8w265wgs28j20"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -429,11 +458,14 @@ performance across unpredictable networks, such as the Internet.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("linux-headers" ,linux-libre-headers)))
-    (synopsis "Linux SCTP helper library")
-    (description "Lksctp-tools project provides a user space library for SCTP
-(libsctp) including C language header files (netinet/sctp.h) for accessing SCTP
-specific application programming interfaces not provided by the standard
-sockets, and also some helper utilities around SCTP.")
+    (synopsis
+     "@acronym{SCTP, Stream Control Transmission Protocol} helpers for Linux")
+    (description
+     "The lksctp-tools project provides a user-space library for @acronym{SCTP,
+the Stream Control Transmission Protocol} (@file{libsctp}) and C language header
+files (@file{netinet/sctp.h}) for accessing SCTP-specific @acronym{APIs,
+application programming interfaces} not provided by the standard sockets.
+It also includes some SCTP-related helper utilities.")
     (home-page "http://lksctp.sourceforge.net/")
     (license
      (list
@@ -442,18 +474,54 @@ sockets, and also some helper utilities around SCTP.")
       ;; Others.
       license:gpl2+))))
 
+(define-public python-pysctp
+  (package
+    (name "python-pysctp")
+    (version "0.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pysctp" version))
+       (sha256
+        (base32 "14h2qlmfi24bizhvvqkfqfa78pzm3911ibrzy9k94i97xy1978dy"))))
+    (build-system python-build-system)
+    (inputs
+     `(("lksctp-tools" ,lksctp-tools)))
+    (arguments
+     `(#:tests? #f  ;; tests require network
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-setup.py
+           (lambda _
+             (substitute* "setup.py"
+               (("include_dirs\\s*=.*")
+                (string-append "include_dirs = ['.'] + '"
+                               (getenv "C_INCLUDE_PATH") "'.split(':'),"))
+               (("library_dirs\\s*=.*")
+                (string-append "library_dirs = '"
+                               (getenv "LIBRARY_PATH") "'.split(':'),"))))))))
+    (home-page "https://github.com/p1sec/pysctp")
+    (synopsis "Python module for the SCTP protocol stack and library")
+    (description "@code{pysctp} implements the SCTP socket API.  You need a
+SCTP-aware kernel (most are).")
+    (license license:lgpl2.1+)))
+
 (define-public knockd
   (package
     (name "knockd")
-    (version "0.7")
+    (version "0.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.zeroflux.org/proj/knock/files/knock-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "193qcpsy7v51c6awhg9652l5blyz8vp6n7y6fi7l4rhh6af4ff4r"))))
+                "1iv9h7a9l81ilbld3pi0dmzkizjss1755x1x3v5jxsi4asb8r3b9"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--docdir=" (assoc-ref %outputs "out")
+                            "/share/doc/" ,name "-" ,version))))
     (inputs
      `(("libpcap" ,libpcap)))
     (home-page "https://www.zeroflux.org/projects/knock")
@@ -813,7 +881,7 @@ useful for making transparent firewalls.")
 (define-public socat
   (package
     (name "socat")
-    (version "1.7.3.4")
+    (version "1.7.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -821,7 +889,7 @@ useful for making transparent firewalls.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "1z7xgnwiqpcv1j6aghhj9nqbx7cg3gpc4n9j7vi9hm7nhv5788wp"))))
+                "1sbmqqvni3ss9wyay6ik5v81kxffkra80mh4ypgj74g82iba5b1z"))))
     (build-system gnu-build-system)
     (arguments '(#:tests? #f))          ; no test suite
     (inputs `(("openssl" ,openssl)))
@@ -840,6 +908,38 @@ establish a relatively secure environment (su and chroot) for running client
 or server shell scripts with network connections.")
     (license license:gpl2)))
 
+(define-public mbuffer
+  (package
+    (name "mbuffer")
+    (version "20210328")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.maier-komor.de/software/mbuffer/mbuffer-"
+                    version ".tgz"))
+              (sha256
+               (base32
+                "0pfw9xw4ph18yss07fl6w8fbqiwy1w9r1knzw5gsb4c993cbidai"))))
+    (build-system gnu-build-system)
+    (inputs `(("openssl" ,openssl)))
+    (home-page "http://www.maier-komor.de/mbuffer.html")
+    (synopsis
+     "Swiss army knife for data stream buffering (network aware)")
+    (description
+     "mbuffer is a tool for buffering data streams with a large set of features:
+
+@itemize
+@item direct support for TCP based network targets (IPv4 and IPv6)
+@item ability to send to multiple targets in parallel (distribution mode)
+@item support for multiple volumes
+@item I/O rate limitation
+@item high/low watermark based restart criteria
+@item configurable buffer size
+@item on the fly MD5 hash calculation
+@item highly efficient, multi-threaded implementation
+@end itemize")
+    (license license:gpl3+)))
+
 (define-public tcp-wrappers
   (package
     (name "tcp-wrappers")
@@ -945,7 +1045,7 @@ more.")
 (define-public czmq
   (package
     (name "czmq")
-    (version "4.2.0")
+    (version "4.2.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -954,23 +1054,10 @@ more.")
                     "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1szciz62sk3fm4ga9qjpxz0n0lazvphm32km95bq92ncng12kayg"))))
+                "0fdclvd7fcwixp0k57ccv7d159v3slasyhvndxfn8n1a9hh0lwjx"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--enable-drafts")
-       #:phases (modify-phases %standard-phases
-                  (add-before 'check 'patch-tests
-                    (lambda _
-                      (substitute* "src/czmq_selftest.c"
-                        ;; Disable the zproc test, which fails on some hardware
-                        ;; (see: https://github.com/zeromq/czmq/issues/2007).
-                        (("\\{ \"zproc\", zproc_test.*")
-                         "")
-                        ;; Also disable the zarmour test, which fails as well
-                        ;; (see: https://github.com/zeromq/czmq/issues/2125).
-                        (("\\{ \"zarmour\", zarmour_test.*")
-                         ""))
-                      #t)))))
+     '(#:configure-flags '("--enable-drafts")))
     (inputs
      `(("zeromq" ,zeromq)))
     (home-page "https://zeromq.org")
@@ -1086,14 +1173,14 @@ containing both Producer and Consumer support.")
 (define-public libndp
   (package
     (name "libndp")
-    (version "1.7")
+    (version "1.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://libndp.org/files/"
                                   "libndp-" version ".tar.gz"))
               (sha256
                (base32
-                "1dlinhl39va00v55qygjc9ap77yqf7xvn4rwmvdr49xhzzxhlj1c"))))
+                "0ay0n0d85254zdmv8znmn399gfiqpk6ga0jwdwa7ylpbw9pbdzw8"))))
     (build-system gnu-build-system)
     (home-page "https://libndp.org/")
     (synopsis "Library for Neighbor Discovery Protocol")
@@ -1106,14 +1193,14 @@ receiving NDP messages.")
 (define-public ethtool
   (package
     (name "ethtool")
-    (version "5.10")
+    (version "5.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/software/network/"
                                   "ethtool/ethtool-" version ".tar.xz"))
               (sha256
                (base32
-                "1kygjg6g90017k53b8342i59cpwgidalqpa3gdilqyrhm6b56zc1"))))
+                "01vgyczgldrfss98cqrgjz8krj6kwb29xjf8p08q0g85fnfgmpgm"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1275,7 +1362,7 @@ and min/max network usage.")
                 "0gh17kcxxi37k65zm4gqsvbk3aw7yphcs3c02pn1c4s2y6n40axd"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
          (delete 'configure)
          (add-before 'build 'fix-ifconfig-path
@@ -1293,7 +1380,7 @@ and min/max network usage.")
 test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
                 ""))
              #t)))
-       #:make-flags (list "CC=gcc"
+       #:make-flags (list ,(string-append "CC=" (cc-for-target))
                           (string-append "prefix=" (assoc-ref %outputs "out")))
        #:test-target "test"))
     (inputs `(("net-tools" ,net-tools)
@@ -1312,7 +1399,7 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.5.7")
+    (version "5.5.10")
     (source
      (origin
        (method git-fetch)
@@ -1321,7 +1408,7 @@ and up to 1 Mbit/s downstream.")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1w3d0ffl0ng1m4i10k968kk4xicviq24w5vwl6d8dhja61d7yd2r"))))
+        (base32 "179hgmh9yqk8jq26ybik4cr3lgryd5p6kdwccc3r7mfssk3yp8lz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite
@@ -1357,14 +1444,14 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "3.4.3")
+    (version "3.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
                            version ".tar.xz"))
        (sha256
-        (base32 "0ar6pxzrcpxdriz437d6ziwlhb8k5wlvrkalp3hgqwzwy1vwqrzl"))))
+        (base32 "0a26kcj3n1a2kw1f3fc6s1x3rw3f3bj2cq6rp7k0kc4ciwh7i9hj"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -1395,6 +1482,7 @@ of the same name.")
      `(("c-ares" ,c-ares)
        ("glib" ,glib)
        ("gnutls" ,gnutls)
+       ("google-brotli" ,google-brotli)
        ("libcap" ,libcap)
        ("libgcrypt" ,libgcrypt)
        ("libnl" ,libnl)
@@ -1404,12 +1492,15 @@ of the same name.")
        ("lz4" ,lz4)
        ("lua" ,lua-5.2)                 ;Lua 5.3 unsupported
        ("krb5" ,mit-krb5)
-       ("qtbase" ,qtbase)
+       ("nghttp2:lib" ,nghttp2 "lib")
+       ("minizip" ,minizip)
+       ("qtbase" ,qtbase-5)
        ("qtmultimedia" ,qtmultimedia)
        ("qtsvg" ,qtsvg)
        ("sbc" ,sbc)
        ("snappy" ,snappy)
-       ("zlib" ,zlib)))
+       ("zlib" ,zlib)
+       ("zstd:lib" ,zstd "lib")))
     (native-inputs
      `(("bison" ,bison)
        ("doxygen" ,doxygen)
@@ -1575,7 +1666,7 @@ transmission protocol (SCTP) in a Go application.")
        ("ncurses" ,ncurses)
        ("openssl" ,openssl)))
     (arguments
-     `(#:make-flags (list "CC=gcc"
+     `(#:make-flags (list ,(string-append "CC=" (cc-for-target))
                           (string-append "DESTDIR=" (assoc-ref %outputs "out"))
                           "PREFIX=")
        #:tests? #f)) ; no tests
@@ -1630,14 +1721,14 @@ TCP connection, TLS handshake and so on) in the terminal.")
 (define-public squid
   (package
     (name "squid")
-    (version "4.13")
+    (version "4.15")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.squid-cache.org/Versions/v4/squid-"
                            version ".tar.xz"))
        (sha256
-        (base32 "1q1ywpic6s7dfjj3cwzcfgscc4zq0aih462gyas7j1z683ss14b8"))))
+        (base32 "09aaz0hi7q4s5jalgl5i5fakmgzv5akf03gnajlah498mgjs94xn"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -1776,8 +1867,8 @@ allows for heavy scripting.")
                 "07nym6bqml0k9v29vnj003nrgnwrywgjvnljb7cdpsvnwilhbp64"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags
-       (list "CC=gcc"
+     `(#:make-flags
+       (list ,(string-append "CC=" (cc-for-target))
              (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
@@ -1866,7 +1957,7 @@ loop.")
 (define-public perl-data-validate-ip
   (package
     (name "perl-data-validate-ip")
-    (version "0.27")
+    (version "0.30")
     (source
      (origin
        (method url-fetch)
@@ -1874,7 +1965,7 @@ loop.")
              "mirror://cpan/authors/id/D/DR/DROLSKY/Data-Validate-IP-"
              version ".tar.gz"))
        (sha256
-        (base32 "1mmppyzsh1w2z2h86kvzqxy56wxgs62a3kf8nvcnz76bblir5ap1"))))
+        (base32 "074adrlvkiahj1fdc9nvb95dpfyjzm2jzhi90m8xaw4bw5ipcbzy"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-requires" ,perl-test-requires)))
@@ -1893,7 +1984,7 @@ private (reserved).")
 (define-public perl-net-dns
  (package
   (name "perl-net-dns")
-  (version "1.28")
+  (version "1.31")
   (source
     (origin
       (method url-fetch)
@@ -1904,7 +1995,7 @@ private (reserved).")
         (string-append "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
                        version ".tar.gz")))
       (sha256
-       (base32 "0kh2qbhxv005pqb35mdk2bld7cg7xnxl12qvdwv30sgd91aqica7"))))
+       (base32 "05f6rzvvmm6xd0p100k5y9kczdzqgala09ra8bccc18n6y74l0h0"))))
   (build-system perl-build-system)
   (inputs
     `(("perl-digest-hmac" ,perl-digest-hmac)))
@@ -2069,22 +2160,19 @@ It is intended primarily for use in testing.")
 (define-public perl-net-cidr-lite
  (package
   (name "perl-net-cidr-lite")
-  (version "0.21")
+  (version "0.22")
   (source
     (origin
       (method url-fetch)
       (uri (string-append
-             "mirror://cpan/authors/id/D/DO/DOUGW/Net-CIDR-Lite-"
+             "mirror://cpan/authors/id/S/ST/STIGTSP/Net-CIDR-Lite-"
              version
              ".tar.gz"))
       (sha256
-        (base32
-          "14shj73zbqmfjbp0qz1fs9j4p2dpvz5hfkm4qfdjbydflbl2b8fg"))))
+        (base32 "05w57db2lx4djb4vixzdr6qgrzyzkk047nl812g7nq8s6k5xh5s3"))))
   (build-system perl-build-system)
-  (home-page
-    "https://metacpan.org/release/Net-CIDR-Lite")
-  (synopsis
-    "Perl extension for merging IPv4 or IPv6 CIDR addresses")
+  (home-page "https://metacpan.org/release/Net-CIDR-Lite")
+  (synopsis "Perl extension for merging IPv4 or IPv6 CIDR addresses")
   (description "Net::CIDR::Lite merges IPv4 or IPv6 CIDR addresses.")
   (license license:gpl1+)))
 
@@ -2238,7 +2326,7 @@ library remains flexible, portable, and easily embeddable.")
        ("pcre" ,pcre)
        ("tcp-wrappers" ,tcp-wrappers)))
     (arguments
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
          (delete 'configure)            ; no configure script
          (add-before 'check 'fix-tests
@@ -2260,7 +2348,7 @@ library remains flexible, portable, and easily embeddable.")
                 (append (find-files "." "\\.cfg")
                         (find-files "scripts"))))
              #t)))
-       #:make-flags (list "CC=gcc"
+       #:make-flags (list ,(string-append "CC=" (cc-for-target))
                           "USELIBCAP=1"
                           "USELIBWRAP=1"
                           (string-append "PREFIX=" (assoc-ref %outputs "out")))
@@ -2282,15 +2370,20 @@ that block port 22.")
 (define-public iperf
   (package
     (name "iperf")
-    (version "3.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://downloads.es.net/pub/iperf"
-                                  "/iperf-" version ".tar.gz"))
-              (sha256
-                (base32
-                 "0f601avdmzpwsa3lbi0ppjhkrdipm5wifhhxy5czf99370k3mdi4"))))
+    (version "3.10.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/esnet/iperf")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0svkrmxki6ckn2a8xysh5x0bw68mqnvl3w64j6d45fxs97dca2vq"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--disable-static")))
     (synopsis "TCP, UDP and SCTP bandwidth measurement tool")
     (description
      "iPerf is a tool to measure achievable bandwidth on IP networks.  It
@@ -2323,7 +2416,7 @@ the bandwidth, loss, and other parameters.")
      `(("libpcap" ,libpcap)
        ("ncurses" ,ncurses)))
     (arguments
-     `(#:make-flags `("CC=gcc"
+     `(#:make-flags `(,,(string-append "CC=" (cc-for-target))
                       ,(string-append "PREFIX=" %output)
                       ,(string-append "VERSION=" ,version))
        #:phases
@@ -2344,7 +2437,7 @@ gone wild and are suddenly taking up your bandwidth.")
 (define-public nzbget
   (package
     (name "nzbget")
-    (version "21.0")
+    (version "21.1")
     (source
      (origin
        (method url-fetch)
@@ -2352,16 +2445,7 @@ gone wild and are suddenly taking up your bandwidth.")
                            "/download/v" version
                            "/nzbget-" version "-src.tar.gz"))
        (sha256
-        (base32
-         "0lwd0pfrs4a5ms193hgz2qiyf7grrc925dw6y0nfc0gkp27db9b5"))
-       (modules '((guix build utils)))
-       (snippet
-        ;; Reported upstream as <https://github.com/nzbget/nzbget/pull/414>.
-        '(begin
-           (substitute* "daemon/connect/TlsSocket.cpp"
-             (("gnutls_certificate-verification_status_print")
-              "gnutls_certificate_verification_status_print"))
-           #t))))
+        (base32 "09900x1k0yf4yi2cc0k093advvadyhrkm8rnd8nszhhdp2zc33sf"))))
     (arguments
      `(#:configure-flags
        (list
@@ -2390,7 +2474,7 @@ procedure calls (RPCs).")
 (define-public openvswitch
   (package
     (name "openvswitch")
-    (version "2.13.0")
+    (version "2.13.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2398,7 +2482,7 @@ procedure calls (RPCs).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0cd5vmfr6zwgcnkwys6rag6cmz68v0librpaplianv734xs74pyx"))))
+                "1wc5zspy9aln7di7m9a1qy4lv3h05gmhgd1nffhb9nxdcxqgnpgp"))))
     (build-system gnu-build-system)
     (arguments
      '(;; FIXME: many tests fail with:
@@ -2468,7 +2552,7 @@ networks.")
 (define-public speedtest-cli
   (package
     (name "speedtest-cli")
-    (version "2.1.2")
+    (version "2.1.3")
     (source
      (origin
        (method git-fetch)
@@ -2477,7 +2561,7 @@ networks.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1456yly6iym2c9bl6pi4sz8xbw34bm2dxm1vzpydsd6jazwpmy26"))))
+        (base32 "10fazl4kwf41mk7pnwpfms16n0ii0kg9pf8r3mz9xwnl9y04mv9x"))))
     (build-system python-build-system)
     (home-page "https://github.com/sivel/speedtest-cli")
     (synopsis "Internet bandwidth tester")
@@ -2551,11 +2635,11 @@ returns the user name and other information about the connection.")
                 "04rpnc53whfky7pp2m9h35gwzwn6788pnl6c1qd576mpknbqjw4d"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:test-target "test"
+     `(#:test-target "test"
        #:make-flags (let* ((out (assoc-ref %outputs "out"))
                            (bindir (string-append out "/bin"))
                            (man1dir (string-append out "/share/man/man1")))
-                      (list "CC=gcc" ; It tries to invoke `c99`.
+                      (list ,(string-append "CC=" (cc-for-target)) ; It tries to invoke `c99`.
                             (string-append "BINDIR=" bindir)
                             (string-append "MAN1DIR=" man1dir)))
        #:phases
@@ -2595,8 +2679,9 @@ does not use SSH and requires a pre-shared symmetric key.")
     (version "1.2.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://savannah/quagga/quagga-"
-                                  version ".tar.gz"))
+              ;; Use archived sources; see <http://issues.guix.gnu.org/47123>.
+              (uri (string-append "https://fossies.org/linux/misc/"
+                                  "quagga-" version ".tar.gz"))
               (sha256
                (base32
                 "1lsksqxij5f1llqn86pkygrf5672kvrqn1kvxghi169hqf1c0r73"))
@@ -2762,88 +2847,10 @@ It then continually measures the response time and packet loss at each hop, and
 displays the results in real time.")
     (license license:gpl2+)))
 
-(define-public strongswan
-  (package
-    (name "strongswan")
-    (version "5.8.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://download.strongswan.org/strongswan-"
-                           version ".tar.bz2"))
-       (sha256
-        (base32 "0g2m08gmgdi3qvvqz6zy7n16np53sp232xd0rdc2vdhk73img6id"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'patch-command-file-names
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "src/libstrongswan/utils/process.c"
-               (("/bin/sh")
-                (string-append (assoc-ref inputs "bash") "/bin/sh")))
-
-             (substitute* "src/libstrongswan/tests/suites/test_process.c"
-               (("/bin/sh") (which "sh"))
-               (("/bin/echo") (which "echo"))
-               (("cat") (which "cat")))
-             #t))
-         (add-before 'check 'set-up-test-environment
-           (lambda* (#:key inputs #:allow-other-keys)
-             (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata")
-                                            "/share/zoneinfo"))
-             #t)))
-       #:configure-flags
-       (list
-        ;; Disable bsd-4 licensed plugins.
-        "--disable-des"
-        "--disable-blowfish")))
-    (inputs
-     `(("curl" ,curl)
-       ("gmp" ,gmp)
-       ("libgcrypt" ,libgcrypt)
-       ("openssl" ,openssl)))
-    (native-inputs
-     `(("coreutils" ,coreutils)
-       ("tzdata" ,tzdata-for-tests)))
-    (synopsis "IKEv1/v2 keying daemon")
-    (description "StrongSwan is an IPsec implementation originally based upon
-the FreeS/WAN project.  It contains support for IKEv1, IKEv2, MOBIKE, IPv6,
-NAT-T and more.")
-    (home-page "https://strongswan.org/")
-    (license
-     (list license:gpl2+
-           ;; src/aikgen/*
-           ;; src/libcharon/plugins/dnscert/*
-           ;; src/libcharon/plugins/ext_auth/*
-           ;; src/libcharon/plugins/vici/ruby/*
-           ;; src/libcharon/plugins/xauth_pam/xauth_pam_listener.[ch]
-           license:expat
-           ;; src/inclue/sys/*
-           license:bsd-3
-           ;; src/libstrongswan/plugins/sha3/sha3_keccak.c
-           license:public-domain
-           ;; src/libstrongswan/plugins/pkcs11/pkcs11.h
-           (license:non-copyleft
-            "file://src/libstrongswan/plugins/pkcs11/pkcs11.h"
-            "pkcs11 contains a unknown permissive license. View the specific
-file for more details.")
-           ;; These files are not included in the
-           ;; build, they are disabled through
-           ;; options to ./configure
-           ;;
-           ;; src/libstrongswan/plugins/blowfish/bf_enc.c
-           ;; src/libstrongswan/plugins/blowfish/bf_locl.h
-           ;; src/libstrongswan/plugins/blowfish/bf_pi.h
-           ;; src/libstrongswan/plugins/blowfish/bf_skey.c
-           ;; src/libstrongswan/plugins/blowfish/blowfish_crypter.c
-           ;; src/libstrongswan/plugins/des/des_crypter.c
-           license:bsd-4))))
-
 (define-public amule
   (package
     (name "amule")
-    (version "2.3.2")
+    (version "2.3.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2852,9 +2859,7 @@ file for more details.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "010wxm6g9f92x6fympj501zbnjka32rzbx0sk3a2y4zpih5d2nsn"))
-              ;; Patch for adopting crypto++ >= 6.0.
-              (patches (search-patches "amule-crypto-6.patch"))))
+                "1nm4vxgmisn1b6l3drmz0q04x067j2i8lw5rnf0acaapwlp8qwvi"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -2890,7 +2895,7 @@ file for more details.")
        ("crypto++" ,crypto++)
        ("libpng" ,libpng)
        ("wxwidgets-gtk2" ,wxwidgets-gtk2)))
-    (home-page "http://amule.org/")
+    (home-page "https://amule.org/")
     (synopsis "Peer-to-peer client for the eD2K and Kademlia networks")
     (description
      "aMule is an eMule-like client for the eD2k and Kademlia peer-to-peer
@@ -2903,7 +2908,7 @@ remotely.")
 (define-public zyre
   (package
     (name "zyre")
-    (version "2.0.0")
+    (version "2.0.1")
     (source (origin
               (method url-fetch)
               (uri
@@ -2911,7 +2916,7 @@ remotely.")
                               version "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0qz2730bng1gs9xbqxhkw88qbsmszgmmrl2g9k6xrg6r3bqvsdc7"))))
+                "13596507ma1474cjqzxym5jlvcshvw7sjhw80rdz788gyz6kz90b"))))
     (build-system gnu-build-system)
     (inputs `(("zeromq" ,zeromq)
               ("czmq" ,czmq)
@@ -2973,7 +2978,7 @@ from user-space.  It requires a kernel built with SocketCAN support.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; No tests exist.
-       #:make-flags (list "CC=gcc"
+       #:make-flags (list ,(string-append "CC=" (cc-for-target))
                           (string-append "PREFIX="
                                          (assoc-ref %outputs "out")))
        #:phases
@@ -2997,7 +3002,8 @@ eight bytes) tools
     ;; Either BSD-3 or GPL-2 can be used.
     (license (list license:bsd-3 license:gpl2))))
 
-(define-public asio
+;;; This is an old version required by rested.
+(define-public asio-1.12
   (package
     (name "asio")
     (version "1.12.2")
@@ -3024,6 +3030,18 @@ low-level I/O programming that provides developers with a consistent
 asynchronous model using a modern C++ approach.")
     (license license:boost1.0)))
 
+(define-public asio
+  (package
+    (inherit asio-1.12)
+    (version "1.18.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/asio/asio/"
+                           version " (Stable)/asio-" version ".tar.bz2"))
+       (sha256
+        (base32 "1wpr4ymv63a192fmymwyxd7v0bv575v022gz53y0mcflhr2mvh1s"))))))
+
 (define-public shadowsocks
   ;; There are some security fixes after the last release.
   (let* ((commit "e332ec93e9c90f1cbee676b022bf2c5d5b7b1239")
@@ -3073,14 +3091,14 @@ Features:
 (define-public net-snmp
   (package
     (name "net-snmp")
-    (version "5.9")
+    (version "5.9.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/net-snmp/net-snmp/"
                                   version "/net-snmp-" version ".tar.gz"))
               (sha256
                (base32
-                "0wb0vyafpspw3mcifkjjmf17r1r80kjvslycscb8nvaxz1k3lc04"))
+                "0gwcyi9qk707jgfsgmdr9w2w3r892fnqaam9v7zxpkg69njd8zzb"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -3097,6 +3115,7 @@ Features:
        (list (string-append "LDFLAGS=-Wl,-rpath="
                             (assoc-ref %outputs "out")
                             "/lib")
+             "--disable-static"
              "--with-logfile=/var/log/snmpd.log"
              (string-append "--with-openssl="
                             (assoc-ref %build-inputs "openssl")))
@@ -3213,7 +3232,7 @@ Ethernet and TAP interfaces is supported.  Packet capture is also supported.")
        ("zlib" ,zlib)))
     (arguments
      `(#:make-flags
-       (list "CC=gcc"
+       (list ,(string-append "CC=" (cc-for-target))
              (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
        #:tests? #f                      ; no test suite
        #:phases
@@ -3264,15 +3283,14 @@ and check if the WLAN key or the master key was transmitted unencrypted.")
 (define-public dante
   (package
     (name "dante")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.inet.no/dante/files/dante-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "19rqzj167q73ag20zxpvswhkk0bj56r5maf83v5016sw7vrcz5sc"))))
+        (base32 "0pbahkj43rx7rmv2x40mf5p3g3x9d6i2sz7pzglarf54w5ghd2j1"))))
     (build-system gnu-build-system)
     (arguments
      ;; XXX: The dynamic socks library doesn't work with 'libc.so' (GNU ld
@@ -3289,62 +3307,61 @@ never see any machines other than the one Dante is running on.")
     (license (license:non-copyleft "file://LICENSE"))))
 
 (define-public restbed
-  (let ((commit "6eb385fa9051203f28bf96cc1844bbb5a9a6481f"))
-    (package
-      (name "restbed")
-      (version (git-version "4.6" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/Corvusoft/restbed/")
-               (commit commit)))
-         (file-name (string-append name "-" version ".tar.gz"))
-         (sha256
-          (base32 "0k60i5drklqqrb4khb25fzkgz9y0sncxf1sp6lh2bm1m0gh0661n"))))
-      (build-system cmake-build-system)
-      (inputs
-       `(("asio" ,asio)
-         ("catch" ,catch-framework)
-         ("openssl" ,openssl)))
-      (arguments
-       `(#:tests? #f
-         #:configure-flags
-         '("-DBUILD_TESTS=NO"
-           "-DBUILD_EXAMPLES=NO"
-           "-DBUILD_SSL=NO"
-           "-DBUILD_SHARED=NO")
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'apply-patches-and-fix-paths
-             (lambda* (#:key inputs #:allow-other-keys)
-               (let ((asio (assoc-ref inputs "asio"))
-                     (catch (assoc-ref inputs "catch"))
-                     (openssl (assoc-ref inputs "openssl")))
-                 (substitute* "cmake/Findasio.cmake"
-                   (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
-                    (string-append begin " \"" asio "/include\" )")))
-                 (substitute* "cmake/Findcatch.cmake"
-                   (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
-                    (string-append begin " \"" catch "/include\" )")))
-                 (substitute* "cmake/Findopenssl.cmake"
-                   (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
-                    (string-append begin " \"" openssl "/lib\" )"))
-                   (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
-                    (string-append begin " \"" openssl "/lib\" )"))
-                   (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
-                    (string-append begin " \"" openssl "/include\" )")))))))))
-      (synopsis "Asynchronous RESTful functionality to C++11 applications")
-      (description "Restbed is a comprehensive and consistent programming
+  (package
+    (name "restbed")
+    (version "4.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Corvusoft/restbed/")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "055qicb773a599dsqbcz5xf0xj1wpk33mdrkyi0fsmyjmn8d2p9d"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("asio" ,asio-1.12)
+       ("catch" ,catch-framework)
+       ("openssl" ,openssl)))
+    (arguments
+     `(#:tests? #f
+       #:configure-flags
+       '("-DBUILD_TESTS=NO"
+         "-DBUILD_EXAMPLES=NO"
+         "-DBUILD_SSL=NO"
+         "-DBUILD_SHARED=NO")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'apply-patches-and-fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((asio (assoc-ref inputs "asio"))
+                   (catch (assoc-ref inputs "catch"))
+                   (openssl (assoc-ref inputs "openssl")))
+               (substitute* "cmake/Findasio.cmake"
+                 (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
+                  (string-append begin " \"" asio "/include\" )")))
+               (substitute* "cmake/Findcatch.cmake"
+                 (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
+                  (string-append begin " \"" catch "/include\" )")))
+               (substitute* "cmake/Findopenssl.cmake"
+                 (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
+                  (string-append begin " \"" openssl "/lib\" )"))
+                 (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
+                  (string-append begin " \"" openssl "/lib\" )"))
+                 (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
+                  (string-append begin " \"" openssl "/include\" )")))))))))
+    (synopsis "Asynchronous RESTful functionality to C++11 applications")
+    (description "Restbed is a comprehensive and consistent programming
 model for building applications that require seamless and secure
 communication over HTTP.")
-      (home-page "https://github.com/Corvusoft/restbed")
-      (license license:agpl3+))))
+    (home-page "https://github.com/Corvusoft/restbed")
+    (license license:agpl3+)))
 
 (define-public restinio
   (package
     (name "restinio")
-    (version "0.6.1.1")
+    (version "0.6.13")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3353,7 +3370,7 @@ communication over HTTP.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "141a96hx8zhcdv121g6cs91n46kb47y040v25pnvz5f54964z7f5"))))
+                "0gb0yc88hdzwm08zdiviay6s08q427za33kfbygib7bdzp2wr2dm"))))
     (build-system cmake-build-system)
     (inputs                             ; TODO: Need to force-keep references on some inputs, e.g. boost.
      `(("zlib" ,zlib)
@@ -3384,59 +3401,118 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
     (license license:bsd-3)))
 
 (define-public opendht
-  (package
-    (name "opendht")
-    (version "2.1.4")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/savoirfairelinux/opendht")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (patches (search-patches "opendht-fix-jami.patch"))
-              (sha256
-               (base32
-                "1ax26ri1ifb6s8ppd28jmanka9yf8mw3np65q2h4djhhik0phhal"))))
-    ;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
-    (build-system cmake-build-system)
-    (inputs
-     `(("argon2" ,argon2)
-       ("nettle" ,nettle)
-       ("readline" ,readline)
-       ("jsoncpp" ,jsoncpp)
-       ("openssl" ,openssl)             ;required for the DHT proxy
-       ("fmt" ,fmt)))
-    (propagated-inputs
-     `(("gnutls" ,gnutls)               ;included in opendht/crypto.h
-       ("msgpack" ,msgpack)))           ;included in several installed headers
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)
-       ("restinio" ,restinio)           ;headers only library
-       ("libtool" ,libtool)
-       ("cppunit" ,cppunit)))
-    (arguments
-     `(#:tests? #f                      ; Tests require network connection.
-       #:configure-flags
-       '(;; "-DOPENDHT_TESTS=on"
-         "-DOPENDHT_TOOLS=off"
-         "-DOPENDHT_PYTHON=off"
-         "-DOPENDHT_PROXY_SERVER=on"
-         "-DOPENDHT_PUSH_NOTIFICATIONS=on"
-         "-DOPENDHT_PROXY_SERVER_IDENTITY=on"
-         "-DOPENDHT_PROXY_CLIENT=on")))
-    (home-page "https://github.com/savoirfairelinux/opendht/")
-    (synopsis "Distributed Hash Table (DHT) library")
-    (description "OpenDHT is a Distributed Hash Table (DHT) library.  It may
-be used to manage peer-to-peer network connections as needed for real time
-communication.")
-    (license license:gpl3+)))
+  ;; Jami requires unreleased features of OpenDHT.
+  (let ((commit "c8a0b443f3117e2fa1343d2cb3c091f502b1a24e")
+        (revision "1"))
+    (package
+      (name "opendht")
+      (version (git-version "2.2.0rc7" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/savoirfairelinux/opendht")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "062irb9yii66n2fzbpsjf7v2v53zzvakr1wjmi4l1jaz33fwx5by"))))
+      ;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
+      (outputs '("out" "tools" "debug"))
+      (build-system cmake-build-system)
+      (inputs
+       `(("argon2" ,argon2)
+         ("nettle" ,nettle-3.7)
+         ("readline" ,readline)
+         ("jsoncpp" ,jsoncpp)
+         ("openssl" ,openssl)             ;required for the DHT proxy
+         ("fmt" ,fmt)))
+      (propagated-inputs
+       `(("gnutls" ,gnutls)               ;included in opendht/crypto.h
+         ("msgpack" ,msgpack)             ;included in several installed headers
+         ("restinio" ,restinio)))         ;included in opendht/http.h
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)
+         ("python" ,python)
+         ("python-cython" ,python-cython)
+         ("libtool" ,libtool)
+         ("cppunit" ,cppunit)))
+      (arguments
+       `(#:imported-modules ((guix build python-build-system) ;for site-packages
+                             ,@%cmake-build-system-modules)
+         #:modules (((guix build python-build-system) #:prefix python:)
+                    (guix build cmake-build-system)
+                    (guix build utils))
+         #:tests? #f                      ; Tests require network connection.
+         #:configure-flags
+         '( ;;"-DOPENDHT_TESTS=on"
+           "-DOPENDHT_STATIC=off"
+           "-DOPENDHT_TOOLS=on"
+           "-DOPENDHT_PYTHON=on"
+           "-DOPENDHT_PROXY_SERVER=on"
+           "-DOPENDHT_PUSH_NOTIFICATIONS=on"
+           "-DOPENDHT_PROXY_SERVER_IDENTITY=on"
+           "-DOPENDHT_PROXY_CLIENT=on")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-python-installation-prefix
+             ;; Specify the installation prefix for the compiled Python module
+             ;; that would otherwise attempt to installs itself to Python's own
+             ;; site-packages directory.
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (substitute* "python/CMakeLists.txt"
+                 (("--root=\\\\\\$ENV\\{DESTDIR\\}")
+                  (string-append "--root=/ --single-version-externally-managed "
+                                 "--prefix=${CMAKE_INSTALL_PREFIX}")))))
+           (add-after 'unpack 'specify-runpath-for-python-module
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (substitute* "python/setup.py.in"
+                   (("extra_link_args=\\[(.*)\\]" _ args)
+                    (string-append "extra_link_args=[" args
+                                   ", '-Wl,-rpath=" out "/lib']"))))))
+           (add-after 'install 'move-and-wrap-tools
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out"))
+                     (tools (assoc-ref outputs "tools"))
+                     (site-packages (python:site-packages inputs outputs)))
+                 (mkdir tools)
+                 (rename-file (string-append out "/bin")
+                              (string-append tools "/bin"))
+                 (wrap-program (string-append tools "/bin/dhtcluster")
+                   `("PYTHONPATH" prefix (,site-packages)))))))))
+      (home-page "https://github.com/savoirfairelinux/opendht/")
+      (synopsis "Lightweight Distributed Hash Table (DHT) library")
+      (description "OpenDHT provides an easy to use distributed in-memory data
+store.  Every node in the network can read and write values to the store.
+Values are distributed over the network, with redundancy.  It includes the
+following features:
+@itemize
+@item Lightweight and scalable, designed for large networks and small devices;
+@item High resilience to network disruption;
+@item Public key cryptography layer providing optional data signature and
+encryption (using GnuTLS);
+@item IPv4 and IPv6 support;
+@item Clean and powerful C++14 map API;
+@item Bindings for C, Rust & Python 3;
+@item REST API with an optional HTTP client and server with push notification
+support.
+@end itemize
+The following tools are also included:
+@table @command
+@item dhtnode
+A command line tool to run a DHT node and perform operations supported by the
+library (get, put, etc.) with text values.
+@item dhtchat
+A very simple IM client working over the DHT.
+@end table")
+      (license license:gpl3+))))
 
 (define-public frrouting
   (package
     (name "frrouting")
-    (version "6.0.2")
+    (version "7.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/FRRouting/frr/releases/"
@@ -3444,11 +3520,13 @@ communication.")
                                   ".tar.xz"))
               (sha256
                (base32
-                "0xfrvi62w8qlh46f504ka0skb7pm0g0p8vmdng4w90gsbirlzpdd"))))
+                "1r7gh5h27ii7d1d0z0x48wx7hs8vvympv3gqvy3cwzg05q5vk9xs"))))
     (build-system gnu-build-system)
     (inputs
      `(("c-ares" ,c-ares)
        ("json-c" ,json-c)
+       ("libcap" ,libcap)
+       ("libyang" ,libyang)
        ("readline" ,readline)))
     (native-inputs
      `(("perl" ,perl)
@@ -3464,28 +3542,26 @@ protocol daemons for BGP, IS-IS, LDP, OSPF, PIM, and RIP. ")
 (define-public iwd
   (package
     (name "iwd")
-    (version "0.21")
+    (version "1.14")
     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://git.kernel.org/pub/scm/network/wireless/iwd.git")
-                    (commit version)))
-              (file-name (git-file-name name version))
+              ;; FIXME: We're using the bootstrapped sources because
+              ;; otherwise using an external ell library is impossible.
+              ;; How to bootstrap with Guix?
+              (method url-fetch)
+              (uri (string-append "https://www.kernel.org/pub/linux/network"
+                                  "/wireless/iwd-" version ".tar.xz"))
               (sha256
                (base32
-                "001dikinsa6kshwscjbvwipavzwpqnpvx9fpshcn63gbvbhyd393"))))
+                "02vz4lyd6vq3vcii357ljqprnas78zb8j670a0gblrm6kganmgi1"))))
     (build-system gnu-build-system)
     (inputs
      `(("dbus" ,dbus)
        ("ell" ,ell)
        ("readline" ,readline)))
     (native-inputs
-     `(("asciidoc" ,asciidoc)
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
-       ("pkgconfig" ,pkg-config)
+     `(("pkgconfig" ,pkg-config)
        ("python" ,python)
+       ("rst2man" ,python-docutils)
        ("openssl" ,openssl)))
     (arguments
      `(#:configure-flags
@@ -3495,22 +3571,17 @@ protocol daemons for BGP, IS-IS, LDP, OSPF, PIM, and RIP. ")
                "--enable-hwsim"
                "--enable-tools"
                "--enable-wired"
-               "--enable-docs"
                "--localstatedir=/var"
                (string-append "--with-dbus-datadir=" dbus "/share/")
                (string-append "--with-dbus-busdir="
                               dbus "/share/dbus-1/system-services")))
        #:phases
        (modify-phases %standard-phases
-         (add-before 'bootstrap 'pre-bootstrap
+         (add-after 'configure 'patch-Makefile
            (lambda _
-             (substitute* "Makefile.am"
-               ;; Test disabled because it needs the kernel module
-               ;; 'pkcs8_key_parser' loaded.
-               (("unit\\/test-eapol.*? ") "")
+             (substitute* "Makefile"
                ;; Don't try to 'mkdir /var'.
-               (("\\$\\(MKDIR_P\\) -m 700") "true"))
-             #t)))))
+               (("\\$\\(MKDIR_P\\) -m 700") "true")))))))
     (home-page "https://git.kernel.org/pub/scm/network/wireless/iwd.git/")
     (synopsis "Internet Wireless Daemon")
     (description "iwd is a wireless daemon for Linux that aims to replace WPA
@@ -3571,7 +3642,7 @@ written (and providing API) in C.  Current implementation covers YANG 1.0 (RFC
       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
             (string-append "PKG_CONFIG=" (assoc-ref %build-inputs "pkg-config")
                            "/bin/pkg-config")
-            "CC=gcc")))
+            ,(string-append "CC=" (cc-for-target)))))
    (home-page "https://www.open-mesh.org/projects/batman-adv/wiki/Wiki")
    (synopsis "Management tool for the mesh networking BATMAN protocol")
    (description "This package provides a control tool for the
@@ -3794,14 +3865,14 @@ thousands of connections is clearly realistic with today's hardware.")
 (define-public lldpd
   (package
     (name "lldpd")
-    (version "1.0.8")
+    (version "1.0.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://media.luffy.cx/files/lldpd/lldpd-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1vrxr8lgkw7q6ixaaili6ac7i0j0326194s498n2dxihdvkh1llq"))
+        (base32 "1r265ns6fh04xwrzj06p2l7kl5rkkns0cdawp1zwpvxs1xq1a7dm"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -3911,7 +3982,7 @@ network.")
 (define-public yggdrasil
   (package
     (name "yggdrasil")
-    (version "0.3.15")
+    (version "0.3.16")
     (source
      (origin
        (method git-fetch)
@@ -3922,8 +3993,7 @@ network.")
          (recursive? #t)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0gk7gy8yq5nrnblv4imxzzm2hac4ri0hlw19ajfbc1zll5kj32gf"))
+        (base32 "0vyd7a333hwn6j1lv1g9sicw74a4qk982bsi3cfdhjlv6hsjwmil"))
        (patches (search-patches "yggdrasil-extra-config.patch"))))
     (build-system go-build-system)
     (arguments