gnu: python-deepmerge: Use pyproject-build-system.
[jackhill/guix/guix.git] / gnu / packages / networking.scm
index 5029eeb..e5ab7a4 100644 (file)
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; 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–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
@@ -14,7 +14,7 @@
 ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2020, 2021 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017-2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017, 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -24,7 +24,7 @@
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2018, 2020-2022 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2018, 2020, 2021 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com>
@@ -39,7 +39,8 @@
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Jesse Dowell <jessedowell@gmail.com>
 ;;; Copyright © 2020 Hamzeh Nasajpour <h.nasajpour@pantherx.org>
-;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2021 Fakhri Sajadi <f.sajadi@pantherx.org>
 ;;; Copyright © 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li>
 ;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2022 Simon South <simon@simonsouth.net>
+;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
+;;; Copyright © 2022 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2022 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2022 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -77,6 +83,7 @@
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system trivial)
   #:use-module (guix utils)
   #:use-module (gnu packages)
@@ -86,6 +93,7 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autogen)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages assembly)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages kerberos)
+  #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -179,6 +192,33 @@ 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 arp-scan
+  (package
+    (name "arp-scan")
+    (version "1.9.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/royhills/arp-scan/")
+         (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1mf7a4f9vzvnkiavc87aqyciswggsb4fpy7j05jxnvjyyxv3l7gp"))))
+    (build-system gnu-build-system)
+    (inputs
+     (list libpcap))
+    (native-inputs
+     (list autoconf automake libtool pkg-config))
+    (propagated-inputs
+     (list perl-libwww))
+    (home-page "https://github.com/royhills/arp-scan")
+    (synopsis "Discover and fingerprint IP hosts on the local network using ARP")
+    (description "Arp-scan is a tool that uses ARP to discover and fingerprint
+IP hosts on the local network.")
+    (license license:gpl3+)))
+
 (define-public axel
   (package
     (name "axel")
@@ -206,38 +246,134 @@ on byte-critical systems.  It supports HTTP, HTTPS, FTP and FTPS
 protocols.")
     (license license:gpl2+)))
 
+(define-public lcrq
+  (package
+    (name "lcrq")
+    (version "0.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://codeberg.org/librecast/lcrq")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0jf7x3zcdbz5b99qz7liw4i90hn9s457zr82n0r8g9qsi81a1d8c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-tests? #f
+       #:make-flags (let ((target ,(%current-target-system)))
+                      (list ,(string-append "CC="
+                                            (cc-for-target))
+                            (string-append "PREFIX="
+                                           (assoc-ref %outputs "out"))))
+       #:test-target "test"))
+    (home-page "https://librecast.net/lcrq.html")
+    (synopsis "librecast RaptorQ library")
+    (description
+     "C library implementation of RaptorQ Forward Error Correction for
+Librecast.  RFC6330 (IETF) describes the RaptorQ proposed standard, which LCRQ
+more-or-less follows. The primary focus has been on building a fast, simple
+and dependency-free FEC implementation for use with Librecast, and not on
+strict standards compliance.  The code does, however, fairly closely follow
+the RFC.")
+    (license (list license:gpl2 license:gpl3))))
+
+(define-public lcsync
+  (package
+    (name "lcsync")
+    (version "0.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://codeberg.org/librecast/lcsync")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0s038b4xg9nlzhrganzjyfvc6n6cgd6kilnpik4axp62j2n5q11q"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-tests? #f
+       #:make-flags (let ((target ,(%current-target-system)))
+                      (list ,(string-append "CC="
+                                            (cc-for-target))
+                            ;; avoid running setcap in the install process
+                            "SETCAP_PROGRAM=true"
+                            (string-append "prefix="
+                                           (assoc-ref %outputs "out"))))
+       #:test-target "test"
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure) ;no configure script
+                  (add-before 'check 'remove-network-tests
+                    (lambda _
+                      ;; these tests require networking
+                      (delete-file "./test/0000-0027.c")
+                      (delete-file "./test/0000-0049.c")
+                      (delete-file "./test/0000-0074.c")))
+                  (add-after 'unpack 'remove-immintrin.h
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (substitute* "Makefile"
+                        (("CFLAGS :=")
+                         (string-append "CFLAGS := -I" (search-input-directory
+                                                         inputs "include/simde"))))
+                      (substitute* (find-files "src")
+                        ((".*immintrin\\.h.*")
+                         (string-append "#include <simde-features.h>\n"
+                                        "#include <x86/ssse3.h>\n"))
+                        (("__m128i") "simde__m128i"))))
+                  (add-before 'build 'add-library-paths
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let* ((librecast (assoc-ref inputs "librecast")))
+                        (substitute* (list "./src/Makefile" "./test/Makefile")
+                          (("-llibrecast")
+                           (string-append "-L" librecast "/lib -llibrecast")))))))))
+    (inputs (list librecast libsodium))
+    (native-inputs (list simde))
+    (home-page "https://librecast.net/lcsync.html")
+    (synopsis "librecast file and data syncing tool")
+    (description
+     "lcsync is a tool to sync files over IPv6 multicast or the
+local filesystem.  It splits the file into blocks, hashes them, and compares
+them in order to efficiently transfer a minimal amount of data.")
+    (license (list license:gpl2 license:gpl3))))
+
 ;; This package does not have a release yet.
 ;; But this is required to provide a feature in PipeWire.
 (define-public libcamera
   (package
     (name "libcamera")
-    (version "0.0.0")
+    (version "0.0.0-1")
     (source
      (origin
        (method git-fetch)
        (uri
         (git-reference
          (url "git://linuxtv.org/libcamera.git")
-         (commit "74c8b508338ccdd0780aa1e067a1e8fcb9ee326b")))
+         (commit "10be87fa7c3bfb097b21ca3d469c67e40c333f7e")))
        (file-name
         (git-file-name name version))
        (sha256
-        (base32 "0d9lp8b9gyxh4jwfh55kp8zl1xyyg32z684v3y29378zpksncss1"))))
+        (base32 "0qgirhlalmk9f9v6piwz50dr2asb64rvbb9zb1vix7y9zh7m11by"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
      `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
        #:configure-flags
        (list
-        "-Dv4l2=true")
+        "-Dv4l2=true"
+        ;; XXX: Requires bundled pybind11.
+        "-Dpycamera=disabled")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'disable-failing-tests
            (lambda _
              (substitute* "test/meson.build"
                (("\\['list-cameras',                    'list-cameras.cpp'\\],")
-                ""))
-             #t))
+                "")
+               ;; TODO: Why do the gstreamer tests fail.
+               (("^subdir\\('gstreamer'\\)")
+                ""))))
          (add-after 'install 'move-doc
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -245,24 +381,26 @@ protocols.")
                (mkdir-p (string-append doc "/share"))
                (rename-file
                 (string-append out "/share/doc")
-                (string-append doc "/share/doc"))
-               #t))))))
+                (string-append doc "/share/doc"))))))))
     (native-inputs
-     `(("dot" ,graphviz)
-       ("doxygen" ,doxygen)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ("sphinx" ,python-sphinx)
-       ("yaml" ,python-pyyaml)))
+     (list graphviz                     ;for 'dot'
+           doxygen
+           pkg-config
+           python-wrapper
+           python-sphinx
+           python-pyyaml))
     (inputs
-     `(("boost" ,boost)
-       ("glib" ,glib)
-       ("gstreamer" ,gst-plugins-base)
-       ("gnutls" ,gnutls)
-       ("libtiff" ,libtiff)
-       ("openssl" ,openssl)
-       ("qt5" ,qtbase-5)
-       ("udev" ,eudev)))
+     (list boost
+           eudev
+           glib
+           gst-plugins-base
+           gnutls
+           libtiff
+           libyaml
+           openssl
+           python-jinja2
+           python-ply
+           qtbase-5))
     (synopsis "Camera stack and framework")
     (description "LibCamera is a complex camera support library for GNU+Linux,
 Android, and ChromeOS.")
@@ -344,6 +482,54 @@ GLib-based library, libnice, as well as GStreamer elements to use it.")
         license:lgpl2.1+
         license:mpl1.1)))))
 
+(define-public librecast
+  (package
+    (name "librecast")
+    (version "0.5.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://codeberg.org/librecast/librecast")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1zzdxawzsj0lxyxm8c2wdqx3b633f8ybvlg6szs4v0y42xg4a829"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-tests? #f
+       #:make-flags (let ((target ,(%current-target-system)))
+                      (list ,(string-append "CC="
+                                            (cc-for-target))
+                            (string-append "PREFIX="
+                                           (assoc-ref %outputs "out"))))
+       #:test-target "test"
+       #:phases (modify-phases %standard-phases
+                  (add-before 'check 'remove-network-tests
+                    (lambda _
+                      ;; these tests require networking
+                      (delete-file "./test/0000-0010.c")
+                      (delete-file "./test/0000-0012.c")
+                      (delete-file "./test/0000-0013.c")
+                      (delete-file "./test/0000-0014.c")
+                      (delete-file "./test/0000-0015.c")
+                      (delete-file "./test/0000-0016.c")
+                      (delete-file "./test/0000-0018.c")
+                      (delete-file "./test/0000-0019.c")
+                      (delete-file "./test/0000-0021.c")
+                      (delete-file "./test/0000-0028.c")
+                      (delete-file "./test/0000-0036.c")
+                      (delete-file "./test/0000-0037.c")
+                      (delete-file "./test/0000-0038.c")
+                      (delete-file "./test/0000-0039.c")
+                      (delete-file "./test/0000-0040.c"))))))
+    (inputs (list libsodium lcrq))
+    (synopsis "librecast IPv6 multicast library")
+    (description "Librecast is a C library which supports IPv6 multicast
+networking.")
+    (home-page "https://librecast.net/librecast.html")
+    (license (list license:gpl2 license:gpl3))))
+
 (define-public rtmpdump
   ;; There are no tags in the repository, and the project is unlikely to
   ;; make new releases.  Take a recent commit for multiple security fixes
@@ -430,7 +616,7 @@ from any network device in any of three ASCII graph formats.")
 (define-public srt
   (package
     (name "srt")
-    (version "1.4.3")
+    (version "1.4.4")
     (source
      (origin
        (method git-fetch)
@@ -440,7 +626,7 @@ from any network device in any of three ASCII graph formats.")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1f60vlfxhh9bhafws82c3301whjlz5gy92jz9a9ymwfg5h53bv1j"))))
+        (base32 "1zr1l9zkai7rpw9cn5j9h4zrv08hgpfmwscwyscf2j4cgwf0rxrr"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -451,9 +637,7 @@ from any network device in any of three ASCII graph formats.")
         "-DENABLE_STATIC=OFF"
         "-DENABLE_UNITTESTS=ON")))
     (native-inputs
-     `(("gtest" ,googletest)
-       ("pkg-config" ,pkg-config)
-       ("tclsh" ,tcl)))
+     (list googletest pkg-config tcl))
     (propagated-inputs
      (list openssl))
     (synopsis "Secure Reliable Transport")
@@ -462,24 +646,6 @@ performance across unpredictable networks, such as the Internet.")
     (home-page "https://www.srtalliance.org/")
     (license license:mpl2.0)))
 
-;; FFmpeg, GStreamer, and VLC don't support SRT 1.4.2 yet.
-(define-public srt-1.4.1
-  (package
-    (inherit srt)
-    (name "srt")
-    (version "1.4.1")
-    (source
-     (origin
-       (method git-fetch)
-       (uri
-        (git-reference
-         (url "https://github.com/Haivision/srt")
-         (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "01xaq44j95kbgqfl41pnybvqy0yq6wd4wdw88ckylzf0nzp977xz"))))))
-
 (define-public lksctp-tools
   (package
     (name "lksctp-tools")
@@ -545,6 +711,54 @@ It also includes some SCTP-related helper utilities.")
 SCTP-aware kernel (most are).")
     (license license:lgpl2.1+)))
 
+(define-public kismet
+  (package
+    (name "kismet")
+    (version "2022-02")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://www.kismetwireless.net/git/kismet.git")
+                    (commit (string-append "kismet-" version "-R1"))))
+              (file-name (git-file-name name version))
+              (patches (search-patches "kismet-unbundle-boost.patch"))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          ;; Drop bundled libraries.
+                          (delete-file-recursively "boost")))
+              (sha256
+               (base32
+                "01q86hrgpai433sc65dlnqy91qd26w5dwyp37adszqxfb6d2an1r"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:tests? #f ;no test suite
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-install
+                 (lambda* _
+                   (substitute* "Makefile.in"
+                     (("-o \\$\\(INSTUSR\\) -g \\$\\(SUIDGROUP\\)") "")
+                     (("-o \\$\\(INSTUSR\\) -g \\$\\(INSTGRP\\)") "")))))))
+    (home-page "https://www.kismetwireless.net/")
+    (native-inputs (list perl pkg-config python python-2))
+    (inputs (list boost
+                  libusb
+                  libpcap
+                  libwebsockets
+                  openssl
+                  protobuf
+                  protobuf-c
+                  sqlite
+                  zlib))
+    (synopsis "Wireless network and device detector")
+    (description
+     "This package provides a wireless network and device detector, sniffer,
+wardriving tool, and WIDS (wireless intrusion detection) framework.  Kismet
+works with Wi-Fi interfaces, Bluetooth interfaces, some SDR
+(software defined radio) hardware like the RTLSDR, and other specialized
+capture hardware")
+    (license license:gpl2+)))
+
 (define-public knockd
   (package
     (name "knockd")
@@ -658,14 +872,14 @@ systems with no further dependencies.")
 (define-public blueman
   (package
     (name "blueman")
-    (version "2.2.3")
+    (version "2.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/blueman-project/blueman/releases"
                            "/download/" version "/blueman-" version ".tar.xz"))
        (sha256
-        (base32 "1s86w4mklzr8hvbgl3nkg8jycl6grww533dhzw8gdn5glqfpkpbf"))))
+        (base32 "0lh1aqpdq6vi4agrgmm7fifjbxz2s5qcs3hr7nfjrwrp2j1361n2"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags (list "--enable-polkit"
@@ -733,30 +947,30 @@ systems with no further dependencies.")
                  (map (lambda (prog) (string-append libexec prog))
                       '("mechanism" "rfcomm-watcher"))))))))))
     (native-inputs
-     `(("cython" ,python-cython)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk+:bin" ,gtk+ "bin")
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
+     (list python-cython
+           `(,glib "bin")
+           gobject-introspection
+           `(,gtk+ "bin")
+           intltool
+           pkg-config))
     (inputs
-     `(("bluez" ,bluez)
-       ("dbus" ,dbus)
-       ("librsvg" ,librsvg)
-       ("glib" ,glib)
-       ("gtk+" ,gtk+)
-       ("iproute2" ,iproute)
-       ("iptables" ,iptables)
-       ("net-tools" ,net-tools)
-       ("pango" ,pango)
-       ("polkit" ,polkit)
-       ("ppp" ,ppp)
-       ("pulseaudio" ,pulseaudio)
-       ("pycairo" ,python-pycairo)
-       ("pygobject" ,python-pygobject)
-       ("python" ,python-wrapper)
-       ("libappindicator" ,libappindicator)
-       ("libnm" ,network-manager)))
+     (list bluez
+           dbus
+           librsvg
+           glib
+           gtk+
+           iproute
+           iptables
+           net-tools
+           pango
+           polkit
+           ppp
+           pulseaudio
+           python-pycairo
+           python-pygobject
+           python-wrapper
+           libappindicator
+           network-manager))
     (synopsis "GTK+ Bluetooth manager")
     (description "Blueman is a Bluetooth management utility using the Bluez
 D-Bus backend.  It is designed to be easy to use for most common Bluetooth
@@ -764,6 +978,33 @@ tasks.")
     (home-page "https://github.com/blueman-project/blueman")
     (license license:gpl3+)))
 
+(define-public nm-tray
+  (package
+    (name "nm-tray")
+    (version "0.5.0")
+    (home-page "https://github.com/palinek/nm-tray")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (sha256
+               (base32
+                "14i8sl0hrnyidlvqnxza0v4018f7p685ksn8419i2w7f9yqpvpiw"))
+              (file-name (git-file-name name version))))
+    (build-system qt-build-system)
+    (arguments
+     (list #:tests? #f)) ;There are no tests upstream
+    (inputs (list qtbase-5 networkmanager-qt))
+    (native-inputs (list qttools-5 pkg-config))
+    (synopsis
+     "NetworkManager front-end with information icon residing in system tray")
+    (description
+     "nm-tray is a network connection management tool (NetworkManager
+front-end) with an information icon residing in the system tray.  Unlike
+nm-applet, which is part of GNOME, this application is desktop-unaware.")
+    (license license:gpl2+)))
+
 ;; The gnu.org ‘home’ for this GNU project is a directory listing with 1.6.0 as
 ;; the latest version.  The author's git repository, mentioned in the 1.6.0
 ;; README and otherwise legit-looking, contains a proper 1.7.0 release tarball
@@ -839,14 +1080,14 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
 (define-public ndisc6
   (package
     (name "ndisc6")
-    (version "1.0.5")
+    (version "1.0.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.remlab.net/files/ndisc6/ndisc6-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0lgkbnnll8nrr7h63ywd42sg8fiv6jhhymd7rnml8a3yqjgjz4rn"))))
+                "1yrw8maj1646d498ax8xi0jmzk80idrc5x0913x5rwg1kc7224x7"))))
     (build-system gnu-build-system)
     (home-page "https://www.remlab.net/ndisc6/")
     (synopsis "IPv6 diagnostic tools")
@@ -981,7 +1222,7 @@ or server shell scripts with network connections.")
 (define-public mbuffer
   (package
     (name "mbuffer")
-    (version "20211018")
+    (version "20220418")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -989,7 +1230,7 @@ or server shell scripts with network connections.")
                     version ".tgz"))
               (sha256
                (base32
-                "1qxnbpyly00kml3sjan9iqg6pqacsi3yqq66x25w455cwkjc2h72"))))
+                "1iq0lcl350r7qja7yyv911aay26d0dd8n0h33mfl84gzypwh2n3f"))))
     (build-system gnu-build-system)
     (native-inputs
      (list which))
@@ -1169,7 +1410,7 @@ between different versions of ØMQ.")
     (native-inputs
      (list pkg-config))
     (inputs
-     (list catch-framework2 zeromq))
+     (list catch2 zeromq))
     (home-page "https://zeromq.org")
     (synopsis "C++ bindings for the ØMQ messaging library")
     (description
@@ -1461,7 +1702,7 @@ test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
                           (string-append "prefix=" (assoc-ref %outputs "out")))
        #:test-target "test"))
     (inputs (list net-tools zlib))
-    (native-inputs (list check-0.14 pkg-config))
+    (native-inputs (list check pkg-config))
     (home-page "https://code.kryo.se/iodine/")
     (synopsis "Tunnel IPv4 data through a DNS server")
     (description "Iodine tunnels IPv4 data through a DNS server.  This
@@ -1519,27 +1760,29 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "3.6.2")
+    (version "4.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
                            version ".tar.xz"))
        (sha256
-        (base32 "03n34jh4318y3q14jclxfxi4r7b9l393w9fw9bq57ydff9aim42x"))))
+        (base32 "1vddvizywy6kfxg0i3m0627f675i7sdp7k3ld9sjlp78hppjbh9x"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'remove-failing-test
-           ;; Skip test suite failing with "Program reassemble_test is not
-           ;; available" and alike errors.  Also skip test suite failing with
-           ;; "AssertionError: Program extcap/sdjournal is not available"
-           ;; error.'
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("suite_unittests" all) (string-append "# " all))
-               (("suite_extcaps" all) (string-append "# " all))))))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             ;; Skip test suite failing with "Program reassemble_test is not
+             ;; available" and alike errors.  Also skip test suite failing
+             ;; with "AssertionError: Program extcap/sdjournal is not
+             ;; available" error.'
+             (when tests?
+               (invoke "ctest"
+                       "-E"
+                       (string-join (list "suite_unittests" "suite_extcaps")
+                                    "|"))))))
        ;; Build process chokes during `validate-runpath' phase.
        ;;
        ;; Errors are like the following:
@@ -1568,9 +1811,10 @@ of the same name.")
            mit-krb5
            `(,nghttp2 "lib")
            minizip
+           pcre2
            qtbase-5
-           qtmultimedia
-           qtsvg
+           qtmultimedia-5
+           qtsvg-5
            sbc
            snappy
            zlib
@@ -1583,7 +1827,7 @@ of the same name.")
            perl
            pkg-config
            python-wrapper
-           qttools))
+           qttools-5))
     (synopsis "Network traffic analyzer")
     (description "Wireshark is a network protocol analyzer, or @dfn{packet
 sniffer}, that lets you capture and interactively browse the contents of
@@ -1594,14 +1838,14 @@ network frames.")
 (define-public fping
   (package
     (name "fping")
-    (version "5.0")
+    (version "5.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://fping.org/dist/fping-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1f2prmii4fyl44cfykp40hp4jjhicrhddh9v3dfs11j6nsww0f7d"))))
+        (base32 "1zh9fkyn0bixgn77v9z6ayv446nqwx960hmly9m68xix0s62dr8y"))))
     (build-system gnu-build-system)
     (arguments '(#:configure-flags '("--enable-ipv6")))
     (home-page "https://fping.org/")
@@ -1654,7 +1898,7 @@ round-robin fashion.")
     (propagated-inputs
      (list openssh))           ; used by gandi/cli/modules/iass.py
     (inputs
-     (list openssl python-click python-ipy python-pyyaml python-requests))
+     (list openssl python-click-7 python-ipy python-pyyaml python-requests))
     (home-page "https://cli.gandi.net")
     (synopsis "Command-line interface to the Gandi.net Web API")
     (description
@@ -1691,8 +1935,8 @@ handling network namespaces in Go.")
 (define-public go-sctp
   ;; docker-libnetwork-cmd-proxy requires this exact commit.
   ;; This commit is mentioned in docker-libnetwork-cmd-proxy's vendor.conf.
-  (let ((commit "6e2cb1366111dcf547c13531e3a263a067715847")
-        (revision "2"))
+  (let ((commit "f2269e66cdee387bd321445d5d300893449805be")
+        (revision "3"))
     (package
       (name "go-sctp")
       (version (git-version "0.0.0" revision commit))
@@ -1704,7 +1948,7 @@ handling network namespaces in Go.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1ba90fmpdwxa1ba4hrsjhi3gfy3pwmz7x8amw1p5dc9p5a7nnqrb"))))
+                  "04463rnn9y9psp11ac5di6wrwxlhymw5h9hfhhhnxqwla90ikp0g"))))
       (build-system go-build-system)
       (arguments
        `(#:tests? #f    ; Test suite is flakey.
@@ -1801,7 +2045,7 @@ TCP connection, TLS handshake and so on) in the terminal.")
      '(#:configure-flags
        ;; disable -march=native in build for reproducibility; see
        ;; https://wiki.squid-cache.org/KnowledgeBase/IllegalInstructionError
-       (list "--disable-arch-native")
+       (list "--disable-arch-native" "--with-openssl")
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'fix-true-path
@@ -1863,19 +2107,22 @@ live network and disk I/O bandwidth monitor.")
 (define-public aircrack-ng
   (package
     (name "aircrack-ng")
-    (version "1.6")
+    (version "1.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.aircrack-ng.org/aircrack-ng-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0ix2k64qg7x3w0bzdsbk1m50kcpq1ws59g3zkwiafvpwdr4gs2sg"))))
+        (base32 "1hsq1gwmafka4bahs6rc8p98yi542h9a502h64bjlygpr3ih99q5"))))
     (build-system gnu-build-system)
     (native-inputs
-     (list autoconf automake libtool pkg-config which))
+     (list autoconf automake libtool pkg-config which
+           ;; For tests.
+           expect))
     (inputs
-     (list libgcrypt
+     (list `(,hwloc "lib")              ; speed boost on SMP machines
+           libgcrypt
            libnl
            libpcap
            ethtool
@@ -1894,16 +2141,14 @@ live network and disk I/O bandwidth monitor.")
                       ;; ‘patch-shebangs’ phase has had a chance to run.
                       (substitute* "evalrev"
                         (("/bin/sh")
-                         (which "sh")))
-                      #t))
+                         (which "sh")))))
                   (add-after 'build 'absolutize-tools
                     (lambda* (#:key inputs #:allow-other-keys)
                       (let ((ethtool (search-input-file inputs
                                                         "/sbin/ethtool")))
                         (substitute* "scripts/airmon-ng"
                           (("ethtool ")
-                           (string-append ethtool " ")))
-                        #t))))))
+                           (string-append ethtool " ")))))))))
     (home-page "https://www.aircrack-ng.org")
     (synopsis "Assess WiFi network security")
     (description
@@ -2296,14 +2541,14 @@ libproxy only have to specify which proxy to use.")
 (define-public proxychains-ng
   (package
     (name "proxychains-ng")
-    (version "4.15")
+    (version "4.16")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://ftp.barfooze.de/pub/sabotage/tarballs/"
                            "proxychains-ng-" version ".tar.xz"))
        (sha256
-        (base32 "10ch6rmbw2lwrq1bc9w4glxkws7hvsy5ihasvzf3yg053xzsn1rj"))))
+        (base32 "04k80jbv1wcr7ccsa0qyly33syw275kvkvzyihwwqmsqk4yria9p"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -2421,7 +2666,7 @@ that block port 22.")
 (define-public iperf
   (package
     (name "iperf")
-    (version "3.10.1")
+    (version "3.12")
     (source
      (origin
        (method git-fetch)
@@ -2430,7 +2675,7 @@ that block port 22.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0svkrmxki6ckn2a8xysh5x0bw68mqnvl3w64j6d45fxs97dca2vq"))))
+        (base32 "0bkmlah8lsm9vciaa9k84x3g1fd0k6nwnsrzp8y04piyiplrvpsi"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -2450,7 +2695,7 @@ the bandwidth, loss, and other parameters.")
 (define-public nethogs
   (package
     (name "nethogs")
-    (version "0.8.6")
+    (version "0.8.7")
     (source
      (origin
        (method git-fetch)
@@ -2459,7 +2704,7 @@ the bandwidth, loss, and other parameters.")
              (commit (string-append "v" version))))
        (hash
         (content-hash
-         (base32 "0sn1sdp86akwlm4r1vmkxjjl50c0xaisk91bbz57z7kcsaphxna9")
+         (base32 "10shdwvfj90lp2fxz9260342a1c2n1jbw058qy5pyq5kh3xwr9b8")
          sha256))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
@@ -2521,7 +2766,7 @@ procedure calls (RPCs).")
 (define-public openvswitch
   (package
     (name "openvswitch")
-    (version "2.16.1")
+    (version "3.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2529,7 +2774,7 @@ procedure calls (RPCs).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1x0k0pw6jykrfgb8rq56bp2ghxd433d55pmr8mxy9gbzw1nc1vbi"))))
+                "17hr7x9iahhmskp70pv59v4bsn86r2jmbaw37vs03jsz3k1a57gs"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -2537,22 +2782,30 @@ procedure calls (RPCs).")
          "--disable-static"        ; XXX still installs libopenvswitchavx512.a
          "--localstatedir=/var"
          "--with-dbdir=/var/lib/openvswitch")
+       ;; Tests fail in different ways, on different x86_64-linux hardware:
+       ;; 25. bfd.at:268: 25. bfd - bfd decay (bfd.at:268): FAILED (bfd.at:397)
+       ;; 1040. dpif-netdev - meters (dpif-netdev.at:269): FAILED (dpif-netdev.at:376)
+       #:tests? #f
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'use-absolute-/bin/sh
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((bash (assoc-ref inputs "bash-minimal")))
+             (let ((/bin/sh (search-input-file inputs "bin/sh")))
                (substitute* "ovsdb/ovsdb-server.c"
-                 (("/bin/sh") (string-append bash "/bin/sh"))))))
+                 (("/bin/sh") /bin/sh)))))
          (add-before 'check 'adjust-tests
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((bash (assoc-ref inputs "bash-minimal"))
-                    (/bin/sh (string-append bash "/bin/sh")))
+             (let ((/bin/sh (search-input-file inputs "bin/sh")))
                (with-fluids ((%default-port-encoding "ISO-8859-1"))
                  (substitute* (find-files "tests" ".*(run|testsuite)$")
                    (("#! /bin/sh")
                     (string-append "#! " /bin/sh))
 
+                   ;; grep 3.8 emits a warning for 'egrep' which breaks
+                   ;; expected output; adjust accordingly.
+                   (("egrep")
+                    "grep -E")
+
                    ;; The tests use 'kill -0' to check whether a test has
                    ;; completed, but it does not work in the build container
                    ;; because zombies are not reaped automatically (PID 1 is
@@ -2579,13 +2832,14 @@ ps --no-header -p $1 -o state= | grep -qv '^Z$'"
                      "DBDIR=/tmp"
                      "install"))))))
     (native-inputs
-     `(("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ;; for testing
-       ("bash" ,bash)                   ;for 'compgen'
-       ("procps" ,procps)
-       ("util-linux" ,util-linux)))
+     (list perl
+           pkg-config
+           python-wrapper
+
+           ;; For testing.
+           bash                         ;for 'compgen'
+           procps
+           util-linux))
     (inputs
      (list bash-minimal libcap-ng openssl))
     (synopsis "Virtual network switch")
@@ -2595,6 +2849,8 @@ ps --no-header -p $1 -o state= | grep -qv '^Z$'"
 massive network automation through programmatic extension, while still
 supporting standard management interfaces and protocols (e.g. NetFlow, sFlow,
 IPFIX, RSPAN, CLI, LACP, 802.1ag).")
+    (properties
+     '((release-monitoring-url . "https://www.openvswitch.org/download/")))
     (license                            ; see debian/copyright for detail
      (list license:lgpl2.1              ; xenserver and utilities/bugtool
            license:gpl2                 ; datapath
@@ -2619,9 +2875,6 @@ handling for most notations in use for IPv4 and IPv6 addresses and
 networks.")
     (license license:bsd-3)))
 
-(define-public python2-ipy
-  (package-with-python2 python-ipy))
-
 (define-public speedtest-cli
   (package
     (name "speedtest-cli")
@@ -2772,6 +3025,12 @@ updates to the zebra daemon.")
          #:tests? #f ; No test suite.
          #:phases
          (modify-phases %standard-phases
+           (add-after 'unpack 'use-source-date-epoch-in-manpages
+             ;; For reproducible builds
+             (lambda _
+               (substitute* "Makefile"
+                 (("date --iso-8601")
+                  "date --iso-8601 --utc --date=@$(SOURCE_DATE_EPOCH)"))))
            (delete 'configure) ; No ./configure script.
            (add-before 'build 'patch-paths
              (lambda _
@@ -2843,6 +3102,11 @@ interface and a programmable text output for scripting.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-manpage-date
+           (lambda _
+             ;; Replace current date with specific date to build reproducibly
+             (substitute* "doc/fixmanpages.in"
+               (("pod2man -d .* -n") "pod2man -d \"1970-01-01\" -n"))))
          (add-before 'build 'build-doc
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "-C" "doc" "doc"
@@ -2872,8 +3136,9 @@ can be whipped up with little effort.")
        (sha256
         (base32 "0haanralbvd12pvkyihgkmx9ld74dnzm1s7mzparfandl416ibff"))))
     (build-system gnu-build-system)
+    (native-inputs (list pkg-config))
     (inputs
-     (list libcap ncurses))
+     (list jansson libcap ncurses))
     (arguments
      `(#:tests? #f))                    ; tests require network access
     (home-page "https://www.bitwizard.nl/mtr/")
@@ -2973,7 +3238,7 @@ networks using zeromq.  It has these key characteristics:
 (define-public libsocketcan
   (package
     (name "libsocketcan")
-    (version "0.0.11")
+    (version "0.0.12")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2982,8 +3247,13 @@ networks using zeromq.  It has these key characteristics:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "17z2y2r9xkixhr9bxr50m77fh710afl30s7jdhbxrvf56vmal2jr"))))
+                "0nrav2yqxgb7jwnhrwirnxs9ycqqh90sqgv5a8lns837jf385jvq"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               ;; Upstream already puts (more) files in share/doc/libsocketcan.
+               (delete 'install-license-files))))
     (native-inputs
      (list autoconf automake libtool))
     (home-page "https://git.pengutronix.de/cgit/tools/libsocketcan")
@@ -3035,14 +3305,14 @@ eight bytes) tools
 (define-public asio
   (package
     (name "asio")
-    (version "1.20.0")
+    (version "1.22.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/asio/asio/"
                            version " (Stable)/asio-" version ".tar.bz2"))
        (sha256
-        (base32 "0335kyxdnwnp96sh9p3jq1s87qnfmp5l7hzlcdxbbwfzrb9p8hr0"))))
+        (base32 "0v5w9j4a02j2rkc7mrdj3ms0kfpqbgq2ipkixlz2l0p8xs0vfsvp"))))
     (build-system gnu-build-system)
     (inputs
      (list boost openssl))
@@ -3103,20 +3373,19 @@ Features:
 (define-public net-snmp
   (package
     (name "net-snmp")
-    (version "5.9.1")
+    (version "5.9.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/net-snmp/net-snmp/"
                                   version "/net-snmp-" version ".tar.gz"))
               (sha256
                (base32
-                "0gwcyi9qk707jgfsgmdr9w2w3r892fnqaam9v7zxpkg69njd8zzb"))
+                "02pgl89s8qll5zhdp61rbn6vpl084gx55bjb1cqg3wqvgsdz55r0"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   ;; Drop bundled libraries.
-                  (delete-file-recursively "snmplib/openssl")
-                  #t))))
+                  (delete-file-recursively "snmplib/openssl")))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -3146,8 +3415,7 @@ Features:
              ;; These tests require network access.
              (for-each delete-file
                        '("testing/fulltests/default/T070com2sec_simple"
-                         "testing/fulltests/default/T071com2sec6_simple"))
-             #t))
+                         "testing/fulltests/default/T071com2sec6_simple"))))
          (add-after 'unpack 'patch-Makefile.PL
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "Makefile.in"
@@ -3155,8 +3423,7 @@ Features:
                 (string-append "Makefile.PL PREFIX="
                                (assoc-ref outputs "out")
                                " INSTALLDIRS=site" " NO_PERLLOCAL=1"
-                               " -NET")))
-             #t)))))
+                               " -NET"))))))))
     (inputs
      (list libnl ncurses ; for the ‘apps’
            openssl perl))
@@ -3221,7 +3488,7 @@ Ethernet and TAP interfaces is supported.  Packet capture is also supported.")
 (define-public hcxtools
   (package
     (name "hcxtools")
-    (version "5.2.0")
+    (version "6.2.7")
     (source
      (origin
        (method git-fetch)
@@ -3229,19 +3496,22 @@ Ethernet and TAP interfaces is supported.  Packet capture is also supported.")
              (url "https://github.com/ZerBea/hcxtools")
              (commit version)))
        (sha256
-        (base32 "0k2qlq9hz5zc21nyc6yrnfqzga7hydn5mm0x3rpl2fhkwl81lxcn"))
+        (base32 "0460dxbc04w60l3g06rk007yyb6qprgyii59y2zdki0vy7q63m8b"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
-    (inputs
-     (list curl libpcap openssl zlib))
+    (native-inputs (list pkg-config))
+    (inputs (list curl libpcap openssl zlib))
     (arguments
-     `(#:make-flags
-       (list ,(string-append "CC=" (cc-for-target))
-             (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
-       #:tests? #f                      ; no test suite
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+     (list #:make-flags
+           #~(list (string-append "CC="
+                                  #$(cc-for-target)) "LDFLAGS+=-lcrypto"
+                   "LDFLAGS+=-lcurl" "LDFLAGS+=-lz"
+                   (string-append "PREFIX="
+                                  #$output))
+           #:tests? #f                            ;no test suite
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure))))
     (home-page "https://github.com/ZerBea/hcxtools")
     (synopsis "Capture wlan traffic to hashcat and John the Ripper")
     (description
@@ -3359,7 +3629,7 @@ communication over HTTP.")
 (define-public restinio
   (package
     (name "restinio")
-    (version "0.6.14")
+    (version "0.6.15")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3368,11 +3638,11 @@ communication over HTTP.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0j44mglsljwkw49583hcsrl5ck2g56n9srnm10kpbsz2dx5apx98"))))
+                "1f8d5nfm8jqhspzsslwb1b7j4glipz31i9vszrcnkx3clc39nj2n"))))
     (build-system cmake-build-system)
     (inputs                             ; TODO: Need to force-keep references on some inputs, e.g. boost.
      (list zlib
-           catch-framework2
+           catch2
            openssl
            boost
            pcre
@@ -3396,92 +3666,99 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
     (license license:bsd-3)))
 
 (define-public opendht
-  ;; The version/commit is kept in sync with what Jami uses in its daemon
-  ;; contrib build system (see:
-  ;; https://review.jami.net/plugins/gitiles/jami-daemon/+/refs/heads/master/contrib/src/opendht/rules.mak).
-  (let ((commit "dbbfdaab0f4119abf79646313e0dbc52881dcd56")
-        (revision "0"))
-    (package
-      (name "opendht")
-      (version (git-version "2.3.1" 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
-                  "07x8vw999qpfl6qwj5k5l2mcjy1vp32sd567f6imbsnh9vlx2bdv"))))
-      (outputs '("out" "tools" "debug"))
-      (build-system gnu-build-system)
-      (arguments
-       (list
-        #:imported-modules `((guix build python-build-system) ;for site-packages
-                             ,@%gnu-build-system-modules)
-        #:modules '(((guix build python-build-system) #:prefix python:)
-                    (guix build gnu-build-system)
-                    (guix build utils))
-        #:tests? #f                     ;tests require networking
-        #:configure-flags
-        #~(list "--enable-tests"
-                "--enable-proxy-server"
-                "--enable-push-notifications"
-                "--enable-proxy-server-identity"
-                "--enable-proxy-client")
-        #: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 _
-                (substitute* "python/Makefile.am"
-                  (("--root=\\$\\(DESTDIR)/")
-                   (string-append "--root=/ --single-version-externally-managed "
-                                  "--prefix=" #$output)))))
-            (add-after 'unpack 'specify-runpath-for-python-module
-              (lambda _
-                (substitute* "python/setup.py.in"
-                  (("extra_link_args=\\[(.*)\\]" _ args)
-                   (string-append "extra_link_args=[" args
-                                  ", '-Wl,-rpath=" #$output "/lib']")))))
-            (add-after 'install 'move-and-wrap-tools
-              (lambda* (#:key inputs outputs #:allow-other-keys)
-                (let* ((tools (assoc-ref outputs "tools"))
-                       (dhtcluster (string-append tools "/bin/dhtcluster"))
-                       (site-packages (python:site-packages inputs outputs)))
-                  (mkdir tools)
-                  (rename-file (string-append #$output "/bin")
-                               (string-append tools "/bin"))
-                  ;; TODO: Contribute a patch to python/Makefile.am to
-                  ;; automate this.
-                  (copy-file "python/tools/dhtcluster.py" dhtcluster)
-                  (chmod dhtcluster #o555)
-                  (wrap-program dhtcluster
-                    `("GUIX_PYTHONPATH" prefix (,site-packages)))))))))
-      (inputs (list bash-minimal fmt readline))
-      (propagated-inputs
-       (list msgpack                    ;included in several installed headers
-             restinio                   ;included in opendht/http.h
-             ;; The following are listed in the 'Requires.private' field of
-             ;; opendht.pc:
-             argon2
-             gnutls
-             jsoncpp
-             nettle
-             openssl))                  ;required for the DHT proxy
-      (native-inputs
-       (list autoconf
-             automake
-             pkg-config
-             python
-             python-cython
-             libtool
-             cppunit))
-      (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
+  (package
+    (name "opendht")
+    (version "2.4.10")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/savoirfairelinux/opendht")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1kcc9vmi4swvahq2gikflgba9xfmix80dr9wa3v6xcj1ba2fjd6s"))))
+    (outputs '("out" "tools" "debug"))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:imported-modules `((guix build python-build-system) ;for site-packages
+                           ,@%gnu-build-system-modules)
+      #:modules '(((guix build python-build-system) #:prefix python:)
+                  (guix build gnu-build-system)
+                  (guix build utils))
+      #:configure-flags
+      #~(list "--enable-tests"
+              "--enable-proxy-server"
+              "--enable-push-notifications"
+              "--enable-proxy-server-identity"
+              "--enable-proxy-client")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'disable-problematic-tests
+            (lambda _
+              ;; The dhtrunnertester test suite includes 'testListen', which
+              ;; is sensitive to the performance/load of the machine it runs
+              ;; on, introducing nondeterminism (see:
+              ;; https://github.com/savoirfairelinux/opendht/issues/626).
+              (substitute* "tests/Makefile.am"
+                (("\\bdhtrunnertester\\.(h|cpp)\\b")
+                 ""))))
+          (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 _
+              (substitute* "python/Makefile.am"
+                (("--root=\\$\\(DESTDIR)/")
+                 (string-append "--root=/ --single-version-externally-managed "
+                                "--prefix=" #$output)))))
+          (add-after 'unpack 'specify-runpath-for-python-module
+            (lambda _
+              (substitute* "python/setup.py.in"
+                (("extra_link_args=\\[(.*)\\]" _ args)
+                 (string-append "extra_link_args=[" args
+                                ", '-Wl,-rpath=" #$output "/lib']")))))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "tests/opendht_unit_tests"))))
+          (add-after 'install 'move-and-wrap-tools
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((tools (assoc-ref outputs "tools"))
+                     (dhtcluster (string-append tools "/bin/dhtcluster"))
+                     (site-packages (python:site-packages inputs outputs)))
+                (mkdir tools)
+                (rename-file (string-append #$output "/bin")
+                             (string-append tools "/bin"))
+                ;; TODO: Contribute a patch to python/Makefile.am to
+                ;; automate this.
+                (copy-file "python/tools/dhtcluster.py" dhtcluster)
+                (chmod dhtcluster #o555)
+                (wrap-program dhtcluster
+                  `("GUIX_PYTHONPATH" prefix (,site-packages)))))))))
+    (inputs (list bash-minimal fmt readline))
+    (propagated-inputs
+     (list msgpack                      ;included in several installed headers
+           restinio                     ;included in opendht/http.h
+           ;; The following are listed in the 'Requires.private' field of
+           ;; opendht.pc:
+           argon2
+           gnutls
+           jsoncpp
+           nettle
+           openssl))                    ;required for the DHT proxy
+    (native-inputs
+     (list autoconf
+           automake
+           pkg-config
+           python
+           python-cython
+           libtool
+           cppunit))
+    (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:
@@ -3504,7 +3781,7 @@ library (get, put, etc.) with text values.
 @item dhtchat
 A very simple IM client working over the DHT.
 @end table")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public frrouting
   (package
@@ -3532,14 +3809,14 @@ protocol daemons for BGP, IS-IS, LDP, OSPF, PIM, and RIP.")
 (define-public bird
   (package
     (name "bird")
-    (version "2.0.8")
+    (version "2.0.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://bird.network.cz/pub/bird/bird-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1xp7f0im1v8pqqx3xqyfkd1nsxk8vnbqgrdrwnwhg8r5xs1xxlhr"))))
+                "0npx3zgbjnhm4905zmj2qkz3d13s8hakassq6sbzm1ywv3fl3lvy"))))
     (inputs
      (list libssh readline))
     (native-inputs
@@ -3721,18 +3998,19 @@ service is available at @url{https://pagekite.net/}, or you can run your own.")
 (define-public ipcalc
   (package
     (name "ipcalc")
-    (version "0.41")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://jodies.de/ipcalc-archive/"
-                                  name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "12if9sm8h2ac0pgwkw835cgyqjxm6h27k4kfn2vfas9krrqwbafx"))))
-    (inputs `(("perl" ,perl)
-              ("tar" ,tar)
-              ("gzip" ,gzip)
-              ("tarball" ,source)))
+    (version "0.51")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             ;; This is the IPv6-capable continuation of the unmaintained
+             ;; <https://jodies.de/ipcalc-archive/>.
+             (url "https://github.com/kjokjo/ipcalc")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0cnygb69vjmp3by75jcd2z4y3ybp1s7x4nl3d32xa49h8lkhdbfv"))))
+    (inputs `(("perl" ,perl)))
     (build-system trivial-build-system) ;no Makefile.PL
     (arguments
      `(#:modules ((guix build utils))
@@ -3743,25 +4021,21 @@ service is available at @url{https://pagekite.net/}, or you can run your own.")
          (let* ((source (assoc-ref %build-inputs "source"))
                 (perl (string-append (assoc-ref %build-inputs "perl")
                                      "/bin"))
-                (tar (assoc-ref %build-inputs "tar"))
-                (gz  (assoc-ref %build-inputs "gzip"))
                 (out (assoc-ref %outputs "out"))
                 (bin (string-append out "/bin"))
                 (doc (string-append out "/share/doc/ipcalc")))
-           (setenv "PATH" (string-append gz "/bin"))
-           (invoke (string-append tar "/bin/tar") "xvf" source)
-           (chdir (string-append ,name "-" ,version))
+           (copy-recursively source "source")
+           (chdir "source")
 
            (install-file "ipcalc" bin)
-           (patch-shebang (string-append bin "/ipcalc") (list perl))
-           #t))))
+           (patch-shebang (string-append bin "/ipcalc") (list perl))))))
     (synopsis "Simple IP network calculator")
     (description "ipcalc takes an IP address and netmask and calculates the
 resulting broadcast, network, Cisco wildcard mask, and host range.  By giving
 a second netmask, you can design subnets and supernets.  It is also intended
 to be a teaching tool and presents the subnetting results as
 easy-to-understand binary values.")
-    (home-page "http://jodies.de/ipcalc")
+    (home-page "https://github.com/kjokjo/ipcalc")
     (license license:gpl2+)))
 
 (define-public tunctl
@@ -3928,11 +4202,11 @@ cables.")
      (list lua openssl pcre2 zlib))
     (home-page "https://www.haproxy.org/")
     (synopsis "Reliable, high performance TCP/HTTP load balancer")
-    (description "HAProxy is a free, very fast and reliable solution offering
-high availability, load balancing, and proxying for TCP and HTTP-based
-applications.  It is particularly suited for web sites crawling under very
-high loads while needing persistence or Layer7 processing.  Supporting tens of
-thousands of connections is clearly realistic with today's hardware.")
+    (description "HAProxy offers @acronym{HA, high availability}, load
+balancing, and proxying for TCP and HTTP-based applications.  It is particularly
+suited to Web sites crawling under very high loads while needing persistence or
+Layer 7 processing.  Supporting tens of thousands of connections is clearly
+realistic with today's hardware.")
     (license (list license:gpl2+
                    license:lgpl2.1
                    license:lgpl2.1+))))
@@ -3940,32 +4214,30 @@ thousands of connections is clearly realistic with today's hardware.")
 (define-public lldpd
   (package
     (name "lldpd")
-    (version "1.0.13")
+    (version "1.0.15")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://media.luffy.cx/files/lldpd/lldpd-"
                            version ".tar.gz"))
        (sha256
-        (base32 "00a7v24qhxw80yk2v79wrkfn7br4r8pcajyrpz8j0xx2v1zq4ffn"))
+        (base32 "09iidaan6gq384n7ykdwwsll3vmq6q7zd7j7j721k2p91c9kmzpp"))
        (modules '((guix build utils)))
        (snippet
         '(begin
            ;; Drop bundled library.
-           (delete-file-recursively "libevent")
-           #t))))
+           (delete-file-recursively "libevent")))))
     (arguments
-     `(#:configure-flags
-       (list
-        "--with-privsep-user=nobody"
-        "--with-privsep-group=nogroup"
-        "--localstatedir=/var"
-        "--enable-pie"
-        "--disable-static"
-        "--without-embedded-libevent"
-        (string-append "--with-systemdsystemunitdir="
-                       (assoc-ref %outputs "out")
-                       "/lib/systemd/system"))))
+     (list #:configure-flags
+           #~(list
+              "--with-privsep-user=nobody"
+              "--with-privsep-group=nogroup"
+              "--localstatedir=/var"
+              "--enable-pie"
+              "--disable-static"
+              "--without-embedded-libevent"
+              (string-append "--with-systemdsystemunitdir="
+                             #$output "/lib/systemd/system"))))
     (build-system gnu-build-system)
     (inputs
      (list libevent libxml2 openssl readline))
@@ -4030,14 +4302,14 @@ stamps.")
 (define-public nbd
   (package
     (name "nbd")
-    (version "3.23")
+    (version "3.24")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://sourceforge/nbd/nbd/" version
                             "/nbd-" version ".tar.xz"))
         (sha256
-         (base32 "1d2phi0m9x32p9zddv9fpkhj1rbhlvq93wsn9niy7i3aavn71x6y"))))
+         (base32 "036ib2d5722sx9nn7jydqfpl5ici5if2z7g8xrskzcx74dniaxv8"))))
     (build-system gnu-build-system)
     (inputs
      (list glib))
@@ -4053,7 +4325,7 @@ network.")
 (define-public yggdrasil
   (package
     (name "yggdrasil")
-    (version "0.4.1")
+    (version "0.4.3")
     (source
      (origin
        (method git-fetch)
@@ -4064,7 +4336,7 @@ network.")
          (recursive? #t)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ajhn0z58ap9jldip7mqj78drmgg4645zfsxsy004cfkm60fasnx"))
+        (base32 "0jp6998a45xi8pbi8p84chvpm1mhhcvcxm1avi1c1gjjp4jqm3vl"))
        (patches (search-patches "yggdrasil-extra-config.patch"))))
     (build-system go-build-system)
     (arguments
@@ -4166,7 +4438,7 @@ on hub/switched networks.  It is based on @acronym{ARP} packets, it will send
 (define-public putty
   (package
     (name "putty")
-    (version "0.76")
+    (version "0.77")
     (source
      (origin
        (method url-fetch)
@@ -4175,18 +4447,26 @@ on hub/switched networks.  It is based on @acronym{ARP} packets, it will send
                   (string-append "http://www.putty.be/" version
                                  "/putty-" version ".tar.gz")))
        (sha256
-        (base32 "0gvi8phabszqksj2by5jrjmshm7bpirhgavz0dqyz1xaimxdjz2l"))))
-    (build-system gnu-build-system)
+        (base32 "1rgabc447a5aa9h16krpg3x78vh5jf4l6hkbqzr4bz9qabs7d6j1"))))
+    (build-system cmake-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'chdir
-           (lambda _
-             (chdir "unix"))))))
+         (replace 'check
+           ;; As ‘documented’ in ./Buildscr and the 0.76 Makefile.in.
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "PUTTY_TESTCRYPT" "./testcrypt")
+               (invoke (string-append "../putty-" ,version
+                                      "/test/cryptsuite.py"))))))))
     (inputs
      (list gtk+))
     (native-inputs
-     (list pkg-config python)) ; for tests
+     (list perl
+           pkg-config
+
+           ;; For tests.
+           python))
     (synopsis "Graphical @acronym{SSH, Secure SHell} and telnet client")
     (description "PuTTY is a graphical text terminal client.  It supports
 @acronym{SSH, Secure SHell}, telnet, and raw socket connections with good