gnu: Add iputils.

* gnu/packages/patches/iputils-libcap-compat.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/networking.scm (iputils): New public variable.
This commit is contained in:
Marius Bakke 2020-06-14 15:21:02 +02:00
parent bf7321cc91
commit 065cb27abb
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
3 changed files with 110 additions and 0 deletions

View File

@ -1103,6 +1103,7 @@ dist_patch_DATA = \
%D%/packages/patches/inetutils-hurd.patch \
%D%/packages/patches/inkscape-poppler-0.76.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/iputils-libcap-compat.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
%D%/packages/patches/jacal-fix-texinfo.patch \

View File

@ -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")

View File

@ -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));