summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/networking.scm72
-rw-r--r--gnu/packages/patches/iputils-libcap-compat.patch37
2 files changed, 109 insertions, 0 deletions
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 88ee3976fa..e8f398e521 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -63,6 +63,7 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
@@ -85,6 +86,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages dejagnu)
+  #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages freedesktop)
@@ -681,6 +683,76 @@ interfaces, with a simple and efficient view on the command line.  It is
 intended as a substitute for the PPPStatus and EthStatus projects.")
     (license license:gpl2+)))
 
+(define-public iputils
+  (package
+    (name "iputils")
+    (version "20190709")
+    (home-page "https://github.com/iputils/iputils")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "s" version))))
+              (file-name (git-file-name name version))
+              (patches (search-patches "iputils-libcap-compat.patch"))
+              (sha256
+               (base32
+                "04bp4af15adp79ipxmiakfp0ij6hx5qam266flzbr94pr8z8l693"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags '("-DBUILD_RARPD=true")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-docbook-url
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((docbook-xsl (assoc-ref inputs "docbook-xsl"))
+                    (uri (string-append docbook-xsl "/xml/xsl/docbook-xsl-"
+                                        ,(package-version docbook-xsl))))
+               (for-each
+                (lambda (file)
+                  (substitute* file
+                    (("http://docbook\\.sourceforge\\.net/release/xsl-ns/current")
+                     uri)))
+                (cons "doc/meson.build"
+                      (find-files "doc" "\\.xsl$")))
+               #t))))))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)
+       ("docbook-xsl" ,docbook-xsl)
+       ("docbook-xml" ,docbook-xml-5)
+       ("libxml2" ,libxml2)          ;for XML_CATALOG_FILES
+       ("xsltproc" ,libxslt)))
+    (inputs
+     `(("libcap" ,libcap)
+       ("libidn2" ,libidn2)
+       ("openssl" ,openssl)))
+    (synopsis "Collection of network utilities")
+    (description
+     "This package contains a variety of tools for dealing with network
+configuration, troubleshooting, or servers.  Utilities included are:
+
+@itemize @bullet
+@item @command{arping}: Ping hosts using the @dfn{Adress Resolution Protocol}.
+@item @command{clockdiff}: Compute time difference between network hosts
+using ICMP TSTAMP messages.
+@item @command{ninfod}: Daemon that responds to IPv6 Node Information Queries.
+@item @command{ping}: Use ICMP ECHO messages to measure round-trip delays
+and packet loss across network paths.
+@item @command{rarpd}: Answer RARP requests from clients.
+@item @command{rdisc}: Populate network routing tables with information from
+the ICMP router discovery protocol.
+@item @command{tftpd}: Trivial file transfer protocol server.
+@item @command{tracepath}: Trace network path to an IPv4 or IPv6 address and
+discover MTU along the way.
+@end itemize")
+    ;; The various utilities are covered by different licenses, see LICENSE
+    ;; for details.
+    (license (list license:gpl2+  ;arping, rarpd, tracepath
+                   license:bsd-3  ;clockdiff, ninfod, ping, tftpd
+                   (license:non-copyleft
+                    "https://spdx.org/licenses/Rdisc.html"
+                    "Sun Microsystems license, see rdisc.c for details")))))
+
 (define-public nload
   (package
     (name "nload")
diff --git a/gnu/packages/patches/iputils-libcap-compat.patch b/gnu/packages/patches/iputils-libcap-compat.patch
new file mode 100644
index 0000000000..dc6da310ce
--- /dev/null
+++ b/gnu/packages/patches/iputils-libcap-compat.patch
@@ -0,0 +1,37 @@
+Fix name clash with libcap 2.29.
+
+Taken from upstream:
+https://github.com/iputils/iputils/commit/18f9a84e0e702841d6cc4d5f593de4fbd1348e83
+
+diff --git a/ninfod/ninfod.c b/ninfod/ninfod.c
+--- a/ninfod/ninfod.c
++++ b/ninfod/ninfod.c
+@@ -455,7 +455,7 @@ static void do_daemonize(void)
+ /* --------- */
+ #ifdef HAVE_LIBCAP
+ static const cap_value_t cap_net_raw = CAP_NET_RAW;
+-static const cap_value_t cap_setuid =  CAP_SETUID; 
++static const cap_value_t cap_setuserid = CAP_SETUID;
+ static cap_flag_value_t cap_ok;
+ #else
+ static uid_t euid;
+@@ -487,7 +487,7 @@ static void limit_capabilities(void)
+ 
+ 	cap_get_flag(cap_cur_p, CAP_SETUID, CAP_PERMITTED, &cap_ok);
+ 	if (cap_ok != CAP_CLEAR)
+-		cap_set_flag(cap_p, CAP_PERMITTED, 1, &cap_setuid, CAP_SET);
++		cap_set_flag(cap_p, CAP_PERMITTED, 1, &cap_setuserid, CAP_SET);
+ 
+ 	if (cap_set_proc(cap_p) < 0) {
+ 		DEBUG(LOG_ERR, "cap_set_proc: %s\n", strerror(errno));
+@@ -520,8 +520,8 @@ static void drop_capabilities(void)
+ 
+ 	/* setuid / setuid */
+ 	if (cap_ok != CAP_CLEAR) {
+-		cap_set_flag(cap_p, CAP_PERMITTED, 1, &cap_setuid, CAP_SET);
+-		cap_set_flag(cap_p, CAP_EFFECTIVE, 1, &cap_setuid, CAP_SET);
++		cap_set_flag(cap_p, CAP_PERMITTED, 1, &cap_setuserid, CAP_SET);
++		cap_set_flag(cap_p, CAP_EFFECTIVE, 1, &cap_setuserid, CAP_SET);
+ 
+ 		if (cap_set_proc(cap_p) < 0) {
+ 			DEBUG(LOG_ERR, "cap_set_proc: %s\n", strerror(errno));