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.master
parent
bf7321cc91
commit
065cb27abb
|
@ -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 \
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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));
|
Reference in New Issue