Accepting request 265037 from network
1 OBS-URL: https://build.opensuse.org/request/show/265037 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpcbind?expand=0&rev=45
This commit is contained in:
commit
73f22feb0a
@ -1,35 +0,0 @@
|
|||||||
From c4814d539434391df4dfa61551e5e2e96947326d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mike Frysinger <vapier@gentoo.org>
|
|
||||||
Date: Thu, 21 Feb 2013 10:39:33 -0500
|
|
||||||
Subject: [PATCH 01/24] Fix building one systems w/out nss.h
|
|
||||||
|
|
||||||
The nss.h header is glibc-specific, so use the existing HAVE_NSS_H define
|
|
||||||
to avoid including/using it when it is not available.
|
|
||||||
|
|
||||||
URL: http://bugs.gentoo.org/458024
|
|
||||||
Reported-by: Mark Reiche <porphyr@gmx.de>
|
|
||||||
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/rpcbind.c | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/rpcbind.c b/src/rpcbind.c
|
|
||||||
index 9a0504d..83dbe93 100644
|
|
||||||
--- a/src/rpcbind.c
|
|
||||||
+++ b/src/rpcbind.c
|
|
||||||
@@ -67,7 +67,11 @@
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
|
||||||
+#ifdef HAVE_NSS_H
|
|
||||||
#include <nss.h>
|
|
||||||
+#else
|
|
||||||
+static inline void __nss_configure_lookup(const char *db, const char *s) {}
|
|
||||||
+#endif
|
|
||||||
#include "rpcbind.h"
|
|
||||||
|
|
||||||
/*#define RPCBIND_DEBUG*/
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
65
0001-systemd-unit-files.patch
Normal file
65
0001-systemd-unit-files.patch
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
Add systemd unit files
|
||||||
|
|
||||||
|
Signed-off-by: Thorsten Kukuk <kukuk@suse.de>
|
||||||
|
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am 2014/12/10 13:27:31
|
||||||
|
@@ -45,6 +45,14 @@
|
||||||
|
AM_CPPFLAGS += $(SYSTEMD_CFLAGS) -DSYSTEMD
|
||||||
|
|
||||||
|
rpcbind_LDADD += $(SYSTEMD_LIBS)
|
||||||
|
+
|
||||||
|
+systemd/rpcbind.service: systemd/rpcbind.service.in Makefile
|
||||||
|
+ sed -e 's,@bindir\@,$(bindir),g' \
|
||||||
|
+ < $< > $@ || rm $@
|
||||||
|
+
|
||||||
|
+systemdsystemunit_DATA = \
|
||||||
|
+ systemd/rpcbind.service \
|
||||||
|
+ systemd/rpcbind.socket
|
||||||
|
endif
|
||||||
|
|
||||||
|
rpcinfo_SOURCES = src/rpcinfo.c
|
||||||
|
--- a/systemd/.gitignore
|
||||||
|
+++ b/systemd/.gitignore 2014/12/10 13:27:31
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+rpcbind.service
|
||||||
|
--- a/systemd/rpcbind.service.in
|
||||||
|
+++ b/systemd/rpcbind.service.in 2014/12/10 13:27:31
|
||||||
|
@@ -0,0 +1,16 @@
|
||||||
|
+[Unit]
|
||||||
|
+Description=RPC Bind
|
||||||
|
+Documentation=man:rpcbind(8)
|
||||||
|
+DefaultDependencies=no
|
||||||
|
+Requires=rpcbind.socket
|
||||||
|
+Wants=var-run.mount
|
||||||
|
+After=var-run.mount
|
||||||
|
+
|
||||||
|
+[Service]
|
||||||
|
+Type=notify
|
||||||
|
+EnvironmentFile=-/etc/sysconfig/rpcbind
|
||||||
|
+ExecStart=@bindir@/rpcbind $RPCBIND_OPTIONS -w -f
|
||||||
|
+
|
||||||
|
+[Install]
|
||||||
|
+WantedBy=multi-user.target
|
||||||
|
+Also=rpcbind.socket
|
||||||
|
--- a/systemd/rpcbind.socket
|
||||||
|
+++ b/systemd/rpcbind.socket 2014/12/10 13:27:58
|
||||||
|
@@ -0,0 +1,18 @@
|
||||||
|
+[Unit]
|
||||||
|
+Description=RPCbind Server Activation Socket
|
||||||
|
+DefaultDependencies=no
|
||||||
|
+Wants=rpcbind.target
|
||||||
|
+Before=rpcbind.target
|
||||||
|
+
|
||||||
|
+[Socket]
|
||||||
|
+ListenStream=/run/rpcbind.sock
|
||||||
|
+
|
||||||
|
+# RPC netconfig can't handle ipv6/ipv4 dual sockets
|
||||||
|
+BindIPv6Only=ipv6-only
|
||||||
|
+ListenStream=0.0.0.0:111
|
||||||
|
+ListenDatagram=0.0.0.0:111
|
||||||
|
+ListenStream=[::]:111
|
||||||
|
+ListenDatagram=[::]:111
|
||||||
|
+
|
||||||
|
+[Install]
|
||||||
|
+WantedBy=sockets.target
|
@ -1,109 +0,0 @@
|
|||||||
From 5618b2f89a752e8bacf9f7c847fd99484a9d3bbc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mike Frysinger <vapier@gentoo.org>
|
|
||||||
Date: Tue, 26 Mar 2013 10:59:42 -0400
|
|
||||||
Subject: [PATCH 02/24] Rename configure.in to configure.ac
|
|
||||||
|
|
||||||
Newer autotools wants this to end in .ac.
|
|
||||||
|
|
||||||
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
configure.ac | 39 +++++++++++++++++++++++++++++++++++++++
|
|
||||||
configure.in | 39 ---------------------------------------
|
|
||||||
2 files changed, 39 insertions(+), 39 deletions(-)
|
|
||||||
create mode 100644 configure.ac
|
|
||||||
delete mode 100644 configure.in
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..2b67720
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -0,0 +1,39 @@
|
|
||||||
+AC_INIT(rpcbind, 0.2.0)
|
|
||||||
+
|
|
||||||
+AM_INIT_AUTOMAKE
|
|
||||||
+AC_CONFIG_SRCDIR([src/rpcbind.c])
|
|
||||||
+AC_PREFIX_DEFAULT(/usr)
|
|
||||||
+AC_PROG_CC
|
|
||||||
+
|
|
||||||
+AC_ARG_ENABLE([libwrap],
|
|
||||||
+ AS_HELP_STRING([--enable-libwrap], [Enables host name checking through tcpd @<:@default=no@:>@]))
|
|
||||||
+AM_CONDITIONAL(LIBWRAP, test x$enable_libwrap = xyes)
|
|
||||||
+
|
|
||||||
+AC_ARG_ENABLE([debug],
|
|
||||||
+ AS_HELP_STRING([--enable-debug], [Turns on rpcbind debugging @<:@default=no@:>@]))
|
|
||||||
+AM_CONDITIONAL(DEBUG, test x$enable_debug = xyes)
|
|
||||||
+
|
|
||||||
+AC_ARG_ENABLE([warmstarts],
|
|
||||||
+ AS_HELP_STRING([--enable-warmstarts], [Enables Warm Starts @<:@default=no@:>@]))
|
|
||||||
+AM_CONDITIONAL(WARMSTART, test x$enable_warmstarts = xyes)
|
|
||||||
+
|
|
||||||
+AC_ARG_WITH([statedir],
|
|
||||||
+ AS_HELP_STRING([--with-statedir=ARG], [use ARG as state dir @<:@default=/tmp@:>@])
|
|
||||||
+ ,, [with_statedir=/tmp])
|
|
||||||
+AC_SUBST([statedir], [$with_statedir])
|
|
||||||
+
|
|
||||||
+AC_ARG_WITH([rpcuser],
|
|
||||||
+ AS_HELP_STRING([--with-rpcuser=ARG], [use ARG for RPC @<:@default=root@:>@]),
|
|
||||||
+ ,, [with_rpcuser=root])
|
|
||||||
+AC_SUBST([rpcuser], [$with_rpcuser])
|
|
||||||
+
|
|
||||||
+PKG_CHECK_MODULES([TIRPC], [libtirpc])
|
|
||||||
+
|
|
||||||
+AS_IF([test x$enable_libwrap = xyes], [
|
|
||||||
+ AC_CHECK_LIB([wrap], [hosts_access], ,
|
|
||||||
+ AC_MSG_ERROR([libwrap support requested but unable to find libwrap]))
|
|
||||||
+])
|
|
||||||
+
|
|
||||||
+AC_SEARCH_LIBS([pthread_create], [pthread])
|
|
||||||
+
|
|
||||||
+AC_OUTPUT([Makefile])
|
|
||||||
diff --git a/configure.in b/configure.in
|
|
||||||
deleted file mode 100644
|
|
||||||
index 2b67720..0000000
|
|
||||||
--- a/configure.in
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,39 +0,0 @@
|
|
||||||
-AC_INIT(rpcbind, 0.2.0)
|
|
||||||
-
|
|
||||||
-AM_INIT_AUTOMAKE
|
|
||||||
-AC_CONFIG_SRCDIR([src/rpcbind.c])
|
|
||||||
-AC_PREFIX_DEFAULT(/usr)
|
|
||||||
-AC_PROG_CC
|
|
||||||
-
|
|
||||||
-AC_ARG_ENABLE([libwrap],
|
|
||||||
- AS_HELP_STRING([--enable-libwrap], [Enables host name checking through tcpd @<:@default=no@:>@]))
|
|
||||||
-AM_CONDITIONAL(LIBWRAP, test x$enable_libwrap = xyes)
|
|
||||||
-
|
|
||||||
-AC_ARG_ENABLE([debug],
|
|
||||||
- AS_HELP_STRING([--enable-debug], [Turns on rpcbind debugging @<:@default=no@:>@]))
|
|
||||||
-AM_CONDITIONAL(DEBUG, test x$enable_debug = xyes)
|
|
||||||
-
|
|
||||||
-AC_ARG_ENABLE([warmstarts],
|
|
||||||
- AS_HELP_STRING([--enable-warmstarts], [Enables Warm Starts @<:@default=no@:>@]))
|
|
||||||
-AM_CONDITIONAL(WARMSTART, test x$enable_warmstarts = xyes)
|
|
||||||
-
|
|
||||||
-AC_ARG_WITH([statedir],
|
|
||||||
- AS_HELP_STRING([--with-statedir=ARG], [use ARG as state dir @<:@default=/tmp@:>@])
|
|
||||||
- ,, [with_statedir=/tmp])
|
|
||||||
-AC_SUBST([statedir], [$with_statedir])
|
|
||||||
-
|
|
||||||
-AC_ARG_WITH([rpcuser],
|
|
||||||
- AS_HELP_STRING([--with-rpcuser=ARG], [use ARG for RPC @<:@default=root@:>@]),
|
|
||||||
- ,, [with_rpcuser=root])
|
|
||||||
-AC_SUBST([rpcuser], [$with_rpcuser])
|
|
||||||
-
|
|
||||||
-PKG_CHECK_MODULES([TIRPC], [libtirpc])
|
|
||||||
-
|
|
||||||
-AS_IF([test x$enable_libwrap = xyes], [
|
|
||||||
- AC_CHECK_LIB([wrap], [hosts_access], ,
|
|
||||||
- AC_MSG_ERROR([libwrap support requested but unable to find libwrap]))
|
|
||||||
-])
|
|
||||||
-
|
|
||||||
-AC_SEARCH_LIBS([pthread_create], [pthread])
|
|
||||||
-
|
|
||||||
-AC_OUTPUT([Makefile])
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
26
0002-rpcinfo_warmstart-no_warning_about_missing_file.patch
Normal file
26
0002-rpcinfo_warmstart-no_warning_about_missing_file.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From: Thorsten Kukuk <kukuk@suse.com>
|
||||||
|
Subject: rpcinfo: warmstart - no warning about missing file
|
||||||
|
|
||||||
|
Don't print an error message on warmstart if the
|
||||||
|
startup files don't exist.
|
||||||
|
|
||||||
|
---
|
||||||
|
src/warmstart.c | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/src/warmstart.c
|
||||||
|
+++ b/src/warmstart.c
|
||||||
|
@@ -106,9 +106,10 @@ read_struct(char *filename, xdrproc_t st
|
||||||
|
fprintf(stderr, "rpcbind: using '%s' startup file\n", filename);
|
||||||
|
|
||||||
|
if ((fp = fopen(filename, "r")) == NULL) {
|
||||||
|
- syslog(LOG_ERR,
|
||||||
|
- "Cannot open '%s' file for reading, errno %d (%s)",
|
||||||
|
- filename, errno, strerror(errno));
|
||||||
|
+ if (errno != ENOENT)
|
||||||
|
+ syslog(LOG_ERR,
|
||||||
|
+ "Cannot open '%s' file for reading, errno %d (%s)",
|
||||||
|
+ filename, errno, strerror(errno));
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From b3b031b07cc5909aaf964f9d4cf46f6097769320 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Steve Dickson <steved@redhat.com>
|
|
||||||
Date: Wed, 21 Aug 2013 14:40:22 -0400
|
|
||||||
Subject: [PATCH 03/24] rpcbind: rpcuser not being set in Makefile.am
|
|
||||||
|
|
||||||
Commit 8d7a0708 cause a regression where the rpcuser id was not
|
|
||||||
being set, which in turn cause rpcbind to immediately exit.
|
|
||||||
This patch removes the extra ',' that was in the AC_ARG_WITH
|
|
||||||
statement in the configure.ac file.
|
|
||||||
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
configure.ac | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 2b67720..1cf42d3 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -23,7 +23,7 @@ AC_ARG_WITH([statedir],
|
|
||||||
AC_SUBST([statedir], [$with_statedir])
|
|
||||||
|
|
||||||
AC_ARG_WITH([rpcuser],
|
|
||||||
- AS_HELP_STRING([--with-rpcuser=ARG], [use ARG for RPC @<:@default=root@:>@]),
|
|
||||||
+ AS_HELP_STRING([--with-rpcuser=ARG], [use ARG for RPC @<:@default=root@:>@])
|
|
||||||
,, [with_rpcuser=root])
|
|
||||||
AC_SUBST([rpcuser], [$with_rpcuser])
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
58
0003-systemd-no-dualmode.patch
Normal file
58
0003-systemd-no-dualmode.patch
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
Systemd will, by default, pass a socket that provides both IPv4 and
|
||||||
|
IPv6 services. RPC netconfig requires that sockets be either IPv4
|
||||||
|
or IPv6. Add a warning to rpcbind should the user encounter an issue.
|
||||||
|
|
||||||
|
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
||||||
|
|
||||||
|
--- a/src/rpcbind.c
|
||||||
|
+++ b/src/rpcbind.c 2014/12/10 13:48:28
|
||||||
|
@@ -50,6 +50,7 @@
|
||||||
|
#include <sys/file.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/un.h>
|
||||||
|
+#include <netinet/in.h>
|
||||||
|
#include <rpc/rpc.h>
|
||||||
|
#include <rpc/rpc_com.h>
|
||||||
|
#ifdef PORTMAP
|
||||||
|
@@ -277,6 +285,31 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
+ * Normally systemd will open sockets in dual ipv4/ipv6 mode.
|
||||||
|
+ * That won't work with netconfig and we'll only match
|
||||||
|
+ * the ipv6 socket. Convert it to IPV6_V6ONLY and issue
|
||||||
|
+ * a warning for the user to fix their systemd config.
|
||||||
|
+ */
|
||||||
|
+static int
|
||||||
|
+handle_ipv6_socket(int fd)
|
||||||
|
+{
|
||||||
|
+ int opt;
|
||||||
|
+ socklen_t len = sizeof(opt);
|
||||||
|
+
|
||||||
|
+ if (getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &opt, &len)) {
|
||||||
|
+ syslog(LOG_ERR, "failed to get ipv6 socket opts: %m");
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (opt) /* socket is already in V6ONLY mode */
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ syslog(LOG_ERR, "systemd has passed an IPv4/IPv6 dual-mode socket.");
|
||||||
|
+ syslog(LOG_ERR, "Please fix your systemd config by specifying IPv4 and IPv6 sockets separately and using BindIPv6Only=ipv6-only.");
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
* Adds the entry into the rpcbind database.
|
||||||
|
* If PORTMAP, then for UDP and TCP, it adds the entries for version 2 also
|
||||||
|
* Returns 0 if succeeds, else fails
|
||||||
|
@@ -361,6 +394,9 @@
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (sa.sa.sa_family == AF_INET6 && handle_ipv6_socket(fd))
|
||||||
|
+ goto error;
|
||||||
|
+
|
||||||
|
/* Copy the address */
|
||||||
|
taddr.addr.maxlen = taddr.addr.len = addrlen;
|
||||||
|
taddr.addr.buf = malloc(addrlen);
|
@ -1,26 +0,0 @@
|
|||||||
From 2b08a74a9be128a46cefae87354e21e67f506bc0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 20 Aug 2013 11:43:13 +0200
|
|
||||||
Subject: [PATCH 04/24] Silence a warning about setgroups() being implicitly
|
|
||||||
defined
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
---
|
|
||||||
src/rpcbind.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/src/rpcbind.c b/src/rpcbind.c
|
|
||||||
index 83dbe93..7ed72bc 100644
|
|
||||||
--- a/src/rpcbind.c
|
|
||||||
+++ b/src/rpcbind.c
|
|
||||||
@@ -65,6 +65,7 @@
|
|
||||||
#include <syslog.h>
|
|
||||||
#include <err.h>
|
|
||||||
#include <pwd.h>
|
|
||||||
+#include <grp.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#ifdef HAVE_NSS_H
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
20
0004-systemd-sd_notify.patch
Normal file
20
0004-systemd-sd_notify.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Always notify systemd that rpcbind is ready and running.
|
||||||
|
|
||||||
|
Signed-off-by: Thorsten Kukuk <kukuk@suse.de>
|
||||||
|
|
||||||
|
--- a/src/rpcbind.c
|
||||||
|
+++ b/src/rpcbind.c 2014/12/10 13:48:28
|
||||||
|
@@ -268,6 +269,13 @@
|
||||||
|
|
||||||
|
network_init();
|
||||||
|
|
||||||
|
+#ifdef SYSTEMD
|
||||||
|
+ /* Try to notify system of successful startup, regardless of whether we
|
||||||
|
+ * used systemd socket activation or not. When started from the command
|
||||||
|
+ * line, this should not hurt either.
|
||||||
|
+ */
|
||||||
|
+ sd_notify(0, "READY=1");
|
||||||
|
+#endif
|
||||||
|
my_svc_run();
|
||||||
|
syslog(LOG_ERR, "svc_run returned unexpectedly");
|
||||||
|
rpcbind_abort();
|
@ -19,7 +19,7 @@ diff --git a/src/util.c b/src/util.c
|
|||||||
index 9a5fb69..a6c835b 100644
|
index 9a5fb69..a6c835b 100644
|
||||||
--- a/src/util.c
|
--- a/src/util.c
|
||||||
+++ b/src/util.c
|
+++ b/src/util.c
|
||||||
@@ -71,9 +71,6 @@ static struct sockaddr_in6 *local_in6;
|
@@ -71,9 +71,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int bitmaskcmp __P((void *, void *, void *, int));
|
static int bitmaskcmp __P((void *, void *, void *, int));
|
||||||
@ -29,7 +29,7 @@ index 9a5fb69..a6c835b 100644
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* For all bits set in "mask", compare the corresponding bits in
|
* For all bits set in "mask", compare the corresponding bits in
|
||||||
@@ -93,26 +90,6 @@ bitmaskcmp(void *dst, void *src, void *mask, int bytelen)
|
@@ -93,28 +90,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -41,12 +41,14 @@ index 9a5fb69..a6c835b 100644
|
|||||||
-in6_fillscopeid(struct sockaddr_in6 *sin6)
|
-in6_fillscopeid(struct sockaddr_in6 *sin6)
|
||||||
-{
|
-{
|
||||||
- u_int16_t ifindex;
|
- u_int16_t ifindex;
|
||||||
|
- u_int16_t *addr;
|
||||||
-
|
-
|
||||||
- if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
|
- if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) {
|
||||||
- ifindex = ntohs(*(u_int16_t *)&sin6->sin6_addr.s6_addr[2]);
|
- addr = (u_int16_t *)&sin6->sin6_addr.s6_addr[2];
|
||||||
|
- ifindex = ntohs(*addr);
|
||||||
- if (sin6->sin6_scope_id == 0 && ifindex != 0) {
|
- if (sin6->sin6_scope_id == 0 && ifindex != 0) {
|
||||||
- sin6->sin6_scope_id = ifindex;
|
- sin6->sin6_scope_id = ifindex;
|
||||||
- *(u_int16_t *)&sin6->sin6_addr.s6_addr[2] = 0;
|
- *addr = 0;
|
||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
-}
|
-}
|
||||||
@ -56,7 +58,7 @@ index 9a5fb69..a6c835b 100644
|
|||||||
* Find a server address that can be used by `caller' to contact
|
* Find a server address that can be used by `caller' to contact
|
||||||
* the local service specified by `serv_uaddr'. If `clnt_uaddr' is
|
* the local service specified by `serv_uaddr'. If `clnt_uaddr' is
|
||||||
* non-NULL, it is used instead of `caller' as a hint suggesting
|
* non-NULL, it is used instead of `caller' as a hint suggesting
|
||||||
@@ -209,7 +186,6 @@ addrmerge(struct netbuf *caller, char *serv_uaddr, char *clnt_uaddr,
|
@@ -211,7 +186,6 @@
|
||||||
* a link-local address then use the scope id to see
|
* a link-local address then use the scope id to see
|
||||||
* which one.
|
* which one.
|
||||||
*/
|
*/
|
||||||
@ -64,6 +66,4 @@ index 9a5fb69..a6c835b 100644
|
|||||||
if (IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(ifsa)) &&
|
if (IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(ifsa)) &&
|
||||||
IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(caller_sa)) &&
|
IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(caller_sa)) &&
|
||||||
IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(hint_sa))) {
|
IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(hint_sa))) {
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
||||||
|
@ -13,9 +13,9 @@ diff --git a/src/rpcbind.c b/src/rpcbind.c
|
|||||||
index 7ed72bc..f562f7a 100644
|
index 7ed72bc..f562f7a 100644
|
||||||
--- a/src/rpcbind.c
|
--- a/src/rpcbind.c
|
||||||
+++ b/src/rpcbind.c
|
+++ b/src/rpcbind.c
|
||||||
@@ -309,18 +309,6 @@ init_transport(struct netconfig *nconf)
|
@@ -389,18 +389,6 @@
|
||||||
}
|
if (my_xprt != NULL)
|
||||||
#endif
|
goto got_socket;
|
||||||
|
|
||||||
- /*
|
- /*
|
||||||
- * XXX - using RPC library internal functions. For NC_TPI_CLTS
|
- * XXX - using RPC library internal functions. For NC_TPI_CLTS
|
||||||
@ -29,10 +29,10 @@ index 7ed72bc..f562f7a 100644
|
|||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
-
|
-
|
||||||
if (!__rpc_nconf2sockinfo(nconf, &si)) {
|
if ((strcmp(nconf->nc_netid, "local") == 0) ||
|
||||||
syslog(LOG_ERR, "cannot get information for %s",
|
(strcmp(nconf->nc_netid, "unix") == 0)) {
|
||||||
nconf->nc_netid);
|
memset(&sun, 0, sizeof sun);
|
||||||
@@ -487,6 +475,12 @@ init_transport(struct netconfig *nconf)
|
@@ -561,6 +549,12 @@
|
||||||
if (!checkbind)
|
if (!checkbind)
|
||||||
return 1;
|
return 1;
|
||||||
} else { /* NC_TPI_COTS */
|
} else { /* NC_TPI_COTS */
|
||||||
@ -45,6 +45,3 @@ index 7ed72bc..f562f7a 100644
|
|||||||
if ((strcmp(nconf->nc_netid, "local") != 0) &&
|
if ((strcmp(nconf->nc_netid, "local") != 0) &&
|
||||||
(strcmp(nconf->nc_netid, "unix") != 0)) {
|
(strcmp(nconf->nc_netid, "unix") != 0)) {
|
||||||
if ((aicode = getaddrinfo(NULL, servname, &hints, &res))!= 0) {
|
if ((aicode = getaddrinfo(NULL, servname, &hints, &res))!= 0) {
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
||||||
|
@ -1,372 +0,0 @@
|
|||||||
From d92c22d7e8d476b7772ce4e3d8e23200d0048b45 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 20 Aug 2013 11:26:42 +0200
|
|
||||||
Subject: [PATCH 12/24] Support systemd activation.
|
|
||||||
|
|
||||||
This code is loosely based on previous work by Tom Gundersen <teg@jklm.no>.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
---
|
|
||||||
Makefile.am | 15 ++++
|
|
||||||
configure.ac | 11 +++
|
|
||||||
src/rpcbind.c | 172 ++++++++++++++++++++++++++++++++++++---------
|
|
||||||
systemd/.gitignore | 1 +
|
|
||||||
systemd/rpcbind.service.in | 9 +++
|
|
||||||
systemd/rpcbind.socket | 12 ++++
|
|
||||||
6 files changed, 188 insertions(+), 32 deletions(-)
|
|
||||||
create mode 100644 systemd/.gitignore
|
|
||||||
create mode 100644 systemd/rpcbind.service.in
|
|
||||||
create mode 100644 systemd/rpcbind.socket
|
|
||||||
|
|
||||||
diff --git a/Makefile.am b/Makefile.am
|
|
||||||
index d10c906..df755dd 100644
|
|
||||||
--- a/Makefile.am
|
|
||||||
+++ b/Makefile.am
|
|
||||||
@@ -38,6 +38,21 @@ rpcbind_SOURCES = \
|
|
||||||
src/warmstart.c
|
|
||||||
rpcbind_LDADD = $(TIRPC_LIBS)
|
|
||||||
|
|
||||||
+if SYSTEMD
|
|
||||||
+AM_CPPFLAGS += $(SYSTEMD_CFLAGS) -DSYSTEMD
|
|
||||||
+
|
|
||||||
+rpcbind_LDADD += $(SYSTEMD_LIBS)
|
|
||||||
+
|
|
||||||
+systemd/rpcbind.service: systemd/rpcbind.service.in Makefile
|
|
||||||
+ sed -e 's,@bindir\@,$(bindir),g' \
|
|
||||||
+ < $< > $@ || rm $@
|
|
||||||
+
|
|
||||||
+systemdsystemunit_DATA = \
|
|
||||||
+ systemd/rpcbind.service \
|
|
||||||
+ systemd/rpcbind.socket
|
|
||||||
+
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
rpcinfo_SOURCES = src/rpcinfo.c
|
|
||||||
rpcinfo_LDADD = $(TIRPC_LIBS)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 1cf42d3..a94933b 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -29,6 +29,17 @@ AC_SUBST([rpcuser], [$with_rpcuser])
|
|
||||||
|
|
||||||
PKG_CHECK_MODULES([TIRPC], [libtirpc])
|
|
||||||
|
|
||||||
+PKG_PROG_PKG_CONFIG
|
|
||||||
+AC_ARG_WITH([systemdsystemunitdir],
|
|
||||||
+ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
|
|
||||||
+ [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
|
|
||||||
+ if test "x$with_systemdsystemunitdir" != xno -a "x$with_systemdsystemunitdir" != "x"; then
|
|
||||||
+ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
|
|
||||||
+ PKG_CHECK_MODULES([SYSTEMD], [libsystemd-daemon])
|
|
||||||
+ fi
|
|
||||||
+AM_CONDITIONAL(SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
|
|
||||||
+
|
|
||||||
+
|
|
||||||
AS_IF([test x$enable_libwrap = xyes], [
|
|
||||||
AC_CHECK_LIB([wrap], [hosts_access], ,
|
|
||||||
AC_MSG_ERROR([libwrap support requested but unable to find libwrap]))
|
|
||||||
diff --git a/src/rpcbind.c b/src/rpcbind.c
|
|
||||||
index 3b753c6..baf1ac0 100644
|
|
||||||
--- a/src/rpcbind.c
|
|
||||||
+++ b/src/rpcbind.c
|
|
||||||
@@ -56,6 +56,9 @@
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#endif
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
+#ifdef SYSTEMD
|
|
||||||
+#include <systemd/sd-daemon.h>
|
|
||||||
+#endif
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
@@ -100,6 +103,9 @@ int runasdaemon = 0;
|
|
||||||
int insecure = 0;
|
|
||||||
int oldstyle_local = 0;
|
|
||||||
int verboselog = 0;
|
|
||||||
+#ifdef SYSTEMD
|
|
||||||
+int systemd_activation = 0;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
char **hosts = NULL;
|
|
||||||
int nhosts = 0;
|
|
||||||
@@ -123,6 +129,10 @@ static char superuser[] = "superuser";
|
|
||||||
|
|
||||||
int main __P((int, char *[]));
|
|
||||||
|
|
||||||
+static void init_transports_daemon __P((void));
|
|
||||||
+#ifdef SYSTEMD
|
|
||||||
+static void init_transports_systemd __P((void));
|
|
||||||
+#endif
|
|
||||||
static int init_transport __P((struct netconfig *));
|
|
||||||
static void rbllist_add __P((rpcprog_t, rpcvers_t, struct netconfig *,
|
|
||||||
struct netbuf *));
|
|
||||||
@@ -132,11 +142,15 @@ static void parseargs __P((int, char *[]));
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
- struct netconfig *nconf;
|
|
||||||
- void *nc_handle; /* Net config handle */
|
|
||||||
struct rlimit rl;
|
|
||||||
int maxrec = RPC_MAXDATASIZE;
|
|
||||||
|
|
||||||
+#ifdef SYSTEMD
|
|
||||||
+ /* See whether we've been activated by systemd */
|
|
||||||
+ if (sd_listen_fds(0) > 0)
|
|
||||||
+ systemd_activation = 1;
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
parseargs(argc, argv);
|
|
||||||
|
|
||||||
/* Check that another rpcbind isn't already running. */
|
|
||||||
@@ -167,29 +181,14 @@ main(int argc, char *argv[])
|
|
||||||
*/
|
|
||||||
__nss_configure_lookup("services", "files");
|
|
||||||
|
|
||||||
- nc_handle = setnetconfig(); /* open netconfig file */
|
|
||||||
- if (nc_handle == NULL) {
|
|
||||||
- syslog(LOG_ERR, "could not read /etc/netconfig");
|
|
||||||
- exit(1);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- nconf = getnetconfigent("local");
|
|
||||||
- if (nconf == NULL)
|
|
||||||
- nconf = getnetconfigent("unix");
|
|
||||||
- if (nconf == NULL) {
|
|
||||||
- syslog(LOG_ERR, "%s: can't find local transport\n", argv[0]);
|
|
||||||
- exit(1);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
rpc_control(RPC_SVC_CONNMAXREC_SET, &maxrec);
|
|
||||||
|
|
||||||
- init_transport(nconf);
|
|
||||||
-
|
|
||||||
- while ((nconf = getnetconfig(nc_handle))) {
|
|
||||||
- if (nconf->nc_flag & NC_VISIBLE)
|
|
||||||
- init_transport(nconf);
|
|
||||||
- }
|
|
||||||
- endnetconfig(nc_handle);
|
|
||||||
+#ifdef SYSTEMD
|
|
||||||
+ if (systemd_activation)
|
|
||||||
+ init_transports_systemd();
|
|
||||||
+ else
|
|
||||||
+#endif
|
|
||||||
+ init_transports_daemon();
|
|
||||||
|
|
||||||
#ifdef PORTMAP
|
|
||||||
if (!udptrans)
|
|
||||||
@@ -571,17 +570,29 @@ rpcbind_register_transport(struct netconfig *nconf, SVCXPRT *xprt, struct netbuf
|
|
||||||
* <0: error - ignore this netid
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
-rpcbind_init_endpoint(struct netconfig *nconf, const char *hostname)
|
|
||||||
+rpcbind_init_endpoint(struct netconfig *nconf, const char *hostname, int fd)
|
|
||||||
{
|
|
||||||
struct t_bind taddr;
|
|
||||||
SVCXPRT *my_xprt = NULL;
|
|
||||||
- int r, fd = -1;
|
|
||||||
+ int r;
|
|
||||||
|
|
||||||
memset(&taddr, 0, sizeof(taddr));
|
|
||||||
|
|
||||||
- r = create_transport_socket(nconf, hostname, &taddr.addr, &fd);
|
|
||||||
- if (r <= 0)
|
|
||||||
- return r;
|
|
||||||
+ if (fd < 0) {
|
|
||||||
+ r = create_transport_socket(nconf, hostname, &taddr.addr, &fd);
|
|
||||||
+ if (r <= 0)
|
|
||||||
+ return r;
|
|
||||||
+ } else {
|
|
||||||
+ struct sockaddr_storage addr;
|
|
||||||
+ socklen_t alen = sizeof(addr);
|
|
||||||
+
|
|
||||||
+ if (getsockname(fd, (struct sockaddr *) &addr, &alen) < 0) {
|
|
||||||
+ syslog(LOG_ERR, "cannot get address for socket fd %d", fd);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ sockaddr2netbuf((struct sockaddr *) &addr, alen, &taddr.addr);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
my_xprt = (SVCXPRT *)svc_tli_create(fd, nconf, &taddr, RPC_MAXDATASIZE, RPC_MAXDATASIZE);
|
|
||||||
if (my_xprt == (SVCXPRT *)NULL) {
|
|
||||||
@@ -645,12 +656,12 @@ init_transport(struct netconfig *nconf)
|
|
||||||
/* Ensure that we always bind to loopback */
|
|
||||||
switch (si.si_af) {
|
|
||||||
case AF_INET:
|
|
||||||
- if (rpcbind_init_endpoint(nconf, "127.0.0.1") > 0)
|
|
||||||
+ if (rpcbind_init_endpoint(nconf, "127.0.0.1", -1) > 0)
|
|
||||||
numbound++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case AF_INET6:
|
|
||||||
- if (rpcbind_init_endpoint(nconf, "::1") > 0)
|
|
||||||
+ if (rpcbind_init_endpoint(nconf, "::1", -1) > 0)
|
|
||||||
numbound++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
@@ -662,7 +673,7 @@ init_transport(struct netconfig *nconf)
|
|
||||||
if (strcmp("*", hostname) == 0)
|
|
||||||
hostname = NULL;
|
|
||||||
|
|
||||||
- r = rpcbind_init_endpoint(nconf, hostname);
|
|
||||||
+ r = rpcbind_init_endpoint(nconf, hostname, -1);
|
|
||||||
if (r < 0)
|
|
||||||
return 1;
|
|
||||||
if (r > 0)
|
|
||||||
@@ -672,7 +683,7 @@ init_transport(struct netconfig *nconf)
|
|
||||||
if (numbound == 0)
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
- if (rpcbind_init_endpoint(nconf, NULL) <= 0)
|
|
||||||
+ if (rpcbind_init_endpoint(nconf, NULL, -1) <= 0)
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -699,6 +710,103 @@ init_transport(struct netconfig *nconf)
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
+init_transports_daemon(void)
|
|
||||||
+{
|
|
||||||
+ void *nc_handle;
|
|
||||||
+ struct netconfig *nconf;
|
|
||||||
+
|
|
||||||
+ nc_handle = setnetconfig(); /* open netconfig file */
|
|
||||||
+ if (nc_handle == NULL) {
|
|
||||||
+ syslog(LOG_ERR, "could not read /etc/netconfig");
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ nconf = getnetconfigent("local");
|
|
||||||
+ if (nconf == NULL)
|
|
||||||
+ nconf = getnetconfigent("unix");
|
|
||||||
+ if (nconf == NULL) {
|
|
||||||
+ syslog(LOG_ERR, "rpcbind: can't find local transport\n");
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ init_transport(nconf);
|
|
||||||
+
|
|
||||||
+ while ((nconf = getnetconfig(nc_handle))) {
|
|
||||||
+ if (nconf->nc_flag & NC_VISIBLE)
|
|
||||||
+ init_transport(nconf);
|
|
||||||
+ }
|
|
||||||
+ endnetconfig(nc_handle);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#ifdef SYSTEMD
|
|
||||||
+static struct netconfig *
|
|
||||||
+sockinfo2nconf(void **handlep, const struct __rpc_sockinfo *match)
|
|
||||||
+{
|
|
||||||
+ struct netconfig *nconf;
|
|
||||||
+
|
|
||||||
+ if (*handlep)
|
|
||||||
+ endnetconfig(*handlep);
|
|
||||||
+ *handlep = setnetconfig();
|
|
||||||
+
|
|
||||||
+ while ((nconf = getnetconfig(*handlep))) {
|
|
||||||
+ struct __rpc_sockinfo si;
|
|
||||||
+
|
|
||||||
+ if (!__rpc_nconf2sockinfo(nconf, &si))
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ if (si.si_af == match->si_af
|
|
||||||
+ && si.si_socktype == match->si_socktype
|
|
||||||
+ && si.si_proto == match->si_proto)
|
|
||||||
+ return nconf;
|
|
||||||
+ }
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
+init_transports_systemd()
|
|
||||||
+{
|
|
||||||
+ void *nc_handle = NULL;
|
|
||||||
+ int nfds, n;
|
|
||||||
+
|
|
||||||
+ if ((nfds = sd_listen_fds(0)) < 0) {
|
|
||||||
+ syslog(LOG_ERR, "failed to acquire systemd sockets: %s", strerror(-nfds));
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+ if (nfds >= 16) {
|
|
||||||
+ syslog(LOG_ERR, "too many sockets passed by systemd (%u)", nfds);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ for (n = 0; n < nfds; ++n) {
|
|
||||||
+ struct netconfig *nconf;
|
|
||||||
+ struct __rpc_sockinfo si;
|
|
||||||
+ int fd;
|
|
||||||
+
|
|
||||||
+ fd = SD_LISTEN_FDS_START + n;
|
|
||||||
+
|
|
||||||
+ if (!__rpc_fd2sockinfo(fd, &si)) {
|
|
||||||
+ syslog(LOG_ERR, "cannot get socket information for fd %d", fd);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Now find the netconfig entry matching this transport */
|
|
||||||
+ if ((nconf = sockinfo2nconf(&nc_handle, &si)) == NULL) {
|
|
||||||
+ syslog(LOG_ERR, "not netconfig for socket fd %d", fd);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (rpcbind_init_endpoint(nconf, NULL, fd) <= 0) {
|
|
||||||
+ syslog(LOG_ERR, "unable to create transport for socket fd %d", fd);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (nc_handle)
|
|
||||||
+ endnetconfig(nc_handle);
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+static void
|
|
||||||
rbllist_add(rpcprog_t prog, rpcvers_t vers, struct netconfig *nconf,
|
|
||||||
struct netbuf *addr)
|
|
||||||
{
|
|
||||||
diff --git a/systemd/.gitignore b/systemd/.gitignore
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..b7b4561
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/systemd/.gitignore
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+rpcbind.service
|
|
||||||
diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..58ae5de
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/systemd/rpcbind.service.in
|
|
||||||
@@ -0,0 +1,9 @@
|
|
||||||
+[Unit]
|
|
||||||
+Description=RPC Bind
|
|
||||||
+
|
|
||||||
+[Service]
|
|
||||||
+ExecStart=@bindir@/rpcbind -w -f
|
|
||||||
+
|
|
||||||
+[Install]
|
|
||||||
+WantedBy=multi-user.target
|
|
||||||
+Also=rpcbind.socket
|
|
||||||
diff --git a/systemd/rpcbind.socket b/systemd/rpcbind.socket
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..ad5fd62
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/systemd/rpcbind.socket
|
|
||||||
@@ -0,0 +1,12 @@
|
|
||||||
+[Unit]
|
|
||||||
+Description=RPCbind Server Activation Socket
|
|
||||||
+Wants=rpcbind.target
|
|
||||||
+Before=rpcbind.target
|
|
||||||
+
|
|
||||||
+[Socket]
|
|
||||||
+ListenStream=/var/run/rpcbind.sock
|
|
||||||
+ListenStream=111
|
|
||||||
+ListenDatagram=111
|
|
||||||
+
|
|
||||||
+[Install]
|
|
||||||
+WantedBy=sockets.target
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
@ -1,98 +0,0 @@
|
|||||||
From 487918f173a899ce39b426ceeaa830d3c45fbd2d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jeff Mahoney <jeffm@suse.com>
|
|
||||||
Date: Tue, 20 Aug 2013 15:20:13 +0200
|
|
||||||
Subject: [PATCH 13/24] socket-activation: Fix rpcbind.service to use separate
|
|
||||||
sockets
|
|
||||||
|
|
||||||
systemd will, by default, pass a socket that provides both IPv4 and
|
|
||||||
IPv6 services. RPC netconfig requires that sockets be either IPv4
|
|
||||||
or IPv6.
|
|
||||||
|
|
||||||
This patch fixes the rpcbind.socket unit file and adds a warning
|
|
||||||
to rpcbind should the user encounter an issue.
|
|
||||||
|
|
||||||
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
|
||||||
---
|
|
||||||
src/rpcbind.c | 29 +++++++++++++++++++++++++++++
|
|
||||||
systemd/rpcbind.socket | 11 ++++++++---
|
|
||||||
2 files changed, 37 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpcbind.c b/src/rpcbind.c
|
|
||||||
index baf1ac0..aec0510 100644
|
|
||||||
--- a/src/rpcbind.c
|
|
||||||
+++ b/src/rpcbind.c
|
|
||||||
@@ -50,6 +50,7 @@
|
|
||||||
#include <sys/file.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/un.h>
|
|
||||||
+#include <netinet/in.h>
|
|
||||||
#include <rpc/rpc.h>
|
|
||||||
#include <rpc/rpc_com.h>
|
|
||||||
#ifdef PORTMAP
|
|
||||||
@@ -561,6 +562,31 @@ rpcbind_register_transport(struct netconfig *nconf, SVCXPRT *xprt, struct netbuf
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
+ * Normally systemd will open sockets in dual ipv4/ipv6 mode.
|
|
||||||
+ * That won't work with netconfig and we'll only match
|
|
||||||
+ * the ipv6 socket. Convert it to IPV6_V6ONLY and issue
|
|
||||||
+ * a warning for the user to fix their systemd config.
|
|
||||||
+ */
|
|
||||||
+static int
|
|
||||||
+handle_ipv6_socket(int fd)
|
|
||||||
+{
|
|
||||||
+ int opt;
|
|
||||||
+ socklen_t len = sizeof(opt);
|
|
||||||
+
|
|
||||||
+ if (getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &opt, &len)) {
|
|
||||||
+ syslog(LOG_ERR, "failed to get ipv6 socket opts: %m");
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (opt) /* socket is already in V6ONLY mode */
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ syslog(LOG_ERR, "systemd has passed an IPv4/IPv6 dual-mode socket.");
|
|
||||||
+ syslog(LOG_ERR, "Please fix your systemd config by specifying IPv4 and IPv6 sockets separately and using BindIPv6Only=ipv6-only.");
|
|
||||||
+ return -1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
* This will create a server socket for the given netid, bound to the
|
|
||||||
* address specified by @hostname
|
|
||||||
*
|
|
||||||
@@ -591,6 +617,9 @@ rpcbind_init_endpoint(struct netconfig *nconf, const char *hostname, int fd)
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (addr.ss_family == AF_INET6 && handle_ipv6_socket(fd))
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
sockaddr2netbuf((struct sockaddr *) &addr, alen, &taddr.addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/systemd/rpcbind.socket b/systemd/rpcbind.socket
|
|
||||||
index ad5fd62..0b0c1d3 100644
|
|
||||||
--- a/systemd/rpcbind.socket
|
|
||||||
+++ b/systemd/rpcbind.socket
|
|
||||||
@@ -4,9 +4,14 @@ Wants=rpcbind.target
|
|
||||||
Before=rpcbind.target
|
|
||||||
|
|
||||||
[Socket]
|
|
||||||
-ListenStream=/var/run/rpcbind.sock
|
|
||||||
-ListenStream=111
|
|
||||||
-ListenDatagram=111
|
|
||||||
+ListenStream=/run/rpcbind.sock
|
|
||||||
+
|
|
||||||
+# RPC netconfig can't handle ipv6/ipv4 dual sockets
|
|
||||||
+BindIPv6Only=ipv6-only
|
|
||||||
+ListenStream=0.0.0.0:111
|
|
||||||
+ListenDatagram=0.0.0.0:111
|
|
||||||
+ListenStream=[::]:111
|
|
||||||
+ListenDatagram=[::]:111
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=sockets.target
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
|||||||
From 117cc8049b1dec667507f7824ccae3cd1d8b31fb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 20 Aug 2013 16:01:59 +0200
|
|
||||||
Subject: [PATCH 15/24] When using systemd activation, make rpcbind notify
|
|
||||||
system when ready to service requests
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
---
|
|
||||||
src/rpcbind.c | 5 ++++-
|
|
||||||
systemd/rpcbind.service.in | 1 +
|
|
||||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpcbind.c b/src/rpcbind.c
|
|
||||||
index 50c042c..6d1f1a3 100644
|
|
||||||
--- a/src/rpcbind.c
|
|
||||||
+++ b/src/rpcbind.c
|
|
||||||
@@ -260,7 +260,10 @@ main(int argc, char *argv[])
|
|
||||||
#endif
|
|
||||||
|
|
||||||
network_init();
|
|
||||||
-
|
|
||||||
+#ifdef SYSTEMD
|
|
||||||
+ if (systemd_activation)
|
|
||||||
+ sd_notify(0, "READY=1");
|
|
||||||
+#endif
|
|
||||||
my_svc_run();
|
|
||||||
rpcbind_log_error("svc_run returned unexpectedly");
|
|
||||||
rpcbind_abort();
|
|
||||||
diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in
|
|
||||||
index 58ae5de..527d07b 100644
|
|
||||||
--- a/systemd/rpcbind.service.in
|
|
||||||
+++ b/systemd/rpcbind.service.in
|
|
||||||
@@ -2,6 +2,7 @@
|
|
||||||
Description=RPC Bind
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
+Type=notify
|
|
||||||
ExecStart=@bindir@/rpcbind -w -f
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From 114b974116d44201a4dba6b7e9311f0ffb318ee3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Fri, 10 Jan 2014 11:29:40 +0100
|
|
||||||
Subject: [PATCH 16/24] Notify systemd unconditionally
|
|
||||||
|
|
||||||
rpcbind may be started from systemd with or without socket activation.
|
|
||||||
However, in both cases systemd would expect to be notified of successful
|
|
||||||
startup.
|
|
||||||
|
|
||||||
If we're started from the command line, calling sd_notify doesn't do
|
|
||||||
any harm either; it will just silently fail.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
---
|
|
||||||
src/rpcbind.c | 8 ++++++--
|
|
||||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpcbind.c b/src/rpcbind.c
|
|
||||||
index 6d1f1a3..b070c32 100644
|
|
||||||
--- a/src/rpcbind.c
|
|
||||||
+++ b/src/rpcbind.c
|
|
||||||
@@ -260,9 +260,13 @@ main(int argc, char *argv[])
|
|
||||||
#endif
|
|
||||||
|
|
||||||
network_init();
|
|
||||||
+
|
|
||||||
#ifdef SYSTEMD
|
|
||||||
- if (systemd_activation)
|
|
||||||
- sd_notify(0, "READY=1");
|
|
||||||
+ /* Try to notify system of successful startup, regardless of whether we
|
|
||||||
+ * used systemd socket activation or not. When started from the command
|
|
||||||
+ * line, this should not hurt either.
|
|
||||||
+ */
|
|
||||||
+ rpcbind_log_error("sd_notify returns %d\n", sd_notify(0, "READY=1"));
|
|
||||||
#endif
|
|
||||||
my_svc_run();
|
|
||||||
rpcbind_log_error("svc_run returned unexpectedly");
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
From 343c55b1137efae9e7d469ec5b5972ca70f1cc80 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 14 Jan 2014 16:19:04 +0100
|
|
||||||
Subject: [PATCH 17/24] Pull the sysconfig file into rpcbind.service and use
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
---
|
|
||||||
systemd/rpcbind.service.in | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in
|
|
||||||
index 527d07b..1f5b596 100644
|
|
||||||
--- a/systemd/rpcbind.service.in
|
|
||||||
+++ b/systemd/rpcbind.service.in
|
|
||||||
@@ -3,7 +3,8 @@ Description=RPC Bind
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=notify
|
|
||||||
-ExecStart=@bindir@/rpcbind -w -f
|
|
||||||
+EnvironmentFile=-/etc/sysconfig/rpcbind
|
|
||||||
+ExecStart=@bindir@/rpcbind $RPCBIND_OPTIONS -w -f
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
|||||||
From 87b31d8406e6049fb4facfc483f4d8c9339d6f46 Mon Sep 17 00:00:00 2001
|
configure: check for <nss.h>
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 14 Jan 2014 16:40:55 +0100
|
|
||||||
Subject: [PATCH 18/24] configure: check for <nss.h>
|
|
||||||
|
|
||||||
There's code in rpcbind that tries to configure nss lookups so that it
|
There's code in rpcbind that tries to configure nss lookups so that it
|
||||||
avoids NIS when resolving user names or service names. Unfortunately, this
|
avoids NIS when resolving user names or service names. Unfortunately, this
|
||||||
@ -13,18 +10,12 @@ Signed-off-by: Olaf Kirch <okir@suse.de>
|
|||||||
configure.ac | 1 +
|
configure.ac | 1 +
|
||||||
1 file changed, 1 insertion(+)
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 6d91dcd..8cdd08f 100644
|
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -40,6 +40,7 @@ AC_ARG_WITH([systemdsystemunitdir],
|
@@ -55,4 +55,6 @@
|
||||||
fi
|
|
||||||
AM_CONDITIONAL(SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
|
AC_SEARCH_LIBS([pthread_create], [pthread])
|
||||||
|
|
||||||
+AC_CHECK_HEADERS(nss.h)
|
+AC_CHECK_HEADERS(nss.h)
|
||||||
|
+
|
||||||
AS_IF([test x$enable_libwrap = xyes], [
|
AC_OUTPUT([Makefile])
|
||||||
AC_CHECK_LIB([wrap], [hosts_access], ,
|
|
||||||
--
|
|
||||||
1.7.12.4
|
|
||||||
|
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
--- src/warmstart.c
|
|
||||||
+++ src/warmstart.c 2014/02/26 14:18:39
|
|
||||||
@@ -106,9 +106,10 @@
|
|
||||||
fprintf(stderr, "rpcbind: using '%s' startup file\n", filename);
|
|
||||||
|
|
||||||
if ((fp = fopen(filename, "r")) == NULL) {
|
|
||||||
- rpcbind_log_error(
|
|
||||||
- "Cannot open '%s' file for reading, errno %d (%s)",
|
|
||||||
- filename, errno, strerror(errno));
|
|
||||||
+ if (errno != ENOENT)
|
|
||||||
+ rpcbind_log_error(
|
|
||||||
+ "Cannot open '%s' file for reading, errno %d (%s)",
|
|
||||||
+ filename, errno, strerror(errno));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
|||||||
rpcbind needs to start before everything is setup, so DefaultDependencies
|
|
||||||
just get in the way
|
|
||||||
|
|
||||||
|
|
||||||
References: bnc#860246
|
|
||||||
Signed-off-by: NeilBrown <neilb@suse.de>
|
|
||||||
|
|
||||||
---
|
|
||||||
systemd/rpcbind.service.in | 1 +
|
|
||||||
systemd/rpcbind.socket | 1 +
|
|
||||||
2 files changed, 2 insertions(+)
|
|
||||||
|
|
||||||
--- rpcbind-0.2.1_rc4.orig/systemd/rpcbind.service.in
|
|
||||||
+++ rpcbind-0.2.1_rc4/systemd/rpcbind.service.in
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
[Unit]
|
|
||||||
Description=RPC Bind
|
|
||||||
+DefaultDependencies=no
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=notify
|
|
||||||
--- rpcbind-0.2.1_rc4.orig/systemd/rpcbind.socket
|
|
||||||
+++ rpcbind-0.2.1_rc4/systemd/rpcbind.socket
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
[Unit]
|
|
||||||
Description=RPCbind Server Activation Socket
|
|
||||||
+DefaultDependencies=no
|
|
||||||
Wants=rpcbind.target
|
|
||||||
Before=rpcbind.target
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
Ignore exit state of two and also be sure that rpcbind.service will
|
|
||||||
trigger rpcbind.socket before its own start which the fulfill rpcbind.target
|
|
||||||
|
|
||||||
References: bnc#870158, bnc#860246
|
|
||||||
Signed-off-by: Werner Fink <werner@suse.de>
|
|
||||||
|
|
||||||
---
|
|
||||||
systemd/rpcbind.service.in | 3 +++
|
|
||||||
systemd/rpcbind.socket | 1 +
|
|
||||||
2 files changed, 4 insertions(+)
|
|
||||||
|
|
||||||
--- rpcbind-0.2.1_rc4/systemd/rpcbind.service.in
|
|
||||||
+++ rpcbind-0.2.1_rc4/systemd/rpcbind.service.in 2014-03-31 10:29:29.262735423 +0000
|
|
||||||
@@ -1,11 +1,14 @@
|
|
||||||
[Unit]
|
|
||||||
Description=RPC Bind
|
|
||||||
+Documentation=man:rpcbind(8)
|
|
||||||
DefaultDependencies=no
|
|
||||||
+Requires=rpcbind.socket
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=notify
|
|
||||||
EnvironmentFile=-/etc/sysconfig/rpcbind
|
|
||||||
ExecStart=@bindir@/rpcbind $RPCBIND_OPTIONS -w -f
|
|
||||||
+SuccessExitStatus=2
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
--- rpcbind-0.2.1_rc4/systemd/rpcbind.socket
|
|
||||||
+++ rpcbind-0.2.1_rc4/systemd/rpcbind.socket 2014-03-31 10:30:12.799480612 +0000
|
|
||||||
@@ -1,5 +1,6 @@
|
|
||||||
[Unit]
|
|
||||||
Description=RPCbind Server Activation Socket
|
|
||||||
+Documentation=man:rpcbind(8)
|
|
||||||
DefaultDependencies=no
|
|
||||||
Wants=rpcbind.target
|
|
||||||
Before=rpcbind.target
|
|
@ -1,20 +0,0 @@
|
|||||||
rpcbind service wants /var/run mounted before started
|
|
||||||
|
|
||||||
References: bnc#881518
|
|
||||||
Signed-off-by: Werner Fink <werner@suse.de>
|
|
||||||
|
|
||||||
---
|
|
||||||
systemd/rpcbind.service.in | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
--- rpcbind-0.2.1_rc4/systemd/rpcbind.service.in
|
|
||||||
+++ rpcbind-0.2.1_rc4/systemd/rpcbind.service.in 2014-06-05 12:45:47.267340658 +0000
|
|
||||||
@@ -3,6 +3,8 @@ Description=RPC Bind
|
|
||||||
Documentation=man:rpcbind(8)
|
|
||||||
DefaultDependencies=no
|
|
||||||
Requires=rpcbind.socket
|
|
||||||
+Wants=var-run.mount
|
|
||||||
+After=var-run.mount
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=notify
|
|
@ -1,22 +0,0 @@
|
|||||||
A stupid error/debug thingie crept into the patch set which shouldn't be there.
|
|
||||||
Nuking it. See bnc#881663
|
|
||||||
|
|
||||||
Signed-off-by: okir@suse.de
|
|
||||||
|
|
||||||
---
|
|
||||||
src/rpcbind.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: rpcbind-0.2.1_rc4/src/rpcbind.c
|
|
||||||
===================================================================
|
|
||||||
--- rpcbind-0.2.1_rc4.orig/src/rpcbind.c
|
|
||||||
+++ rpcbind-0.2.1_rc4/src/rpcbind.c
|
|
||||||
@@ -266,7 +266,7 @@ main(int argc, char *argv[])
|
|
||||||
* used systemd socket activation or not. When started from the command
|
|
||||||
* line, this should not hurt either.
|
|
||||||
*/
|
|
||||||
- rpcbind_log_error("sd_notify returns %d\n", sd_notify(0, "READY=1"));
|
|
||||||
+ sd_notify(0, "READY=1");
|
|
||||||
#endif
|
|
||||||
my_svc_run();
|
|
||||||
rpcbind_log_error("svc_run returned unexpectedly");
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:66c75f8a7400c4c8608d861a32fbce26facd424e98663c4669ad786977691e9d
|
|
||||||
size 457513
|
|
3
rpcbind-0.2.2.tar.bz2
Normal file
3
rpcbind-0.2.2.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:13dbc8c796dbe0ce8df873007bea0490c8460b56202d918c9eb6fa0358a08f29
|
||||||
|
size 112793
|
@ -1,3 +1,53 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Dec 12 17:01:44 UTC 2014 - jeffm@suse.com
|
||||||
|
|
||||||
|
- 0002-rpcinfo_warmstart-no_warning_about_missing_file.patch: fix
|
||||||
|
merge issue causing segfaults on missing file (bnc#909619).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Dec 11 13:07:09 CET 2014 - kukuk@suse.de
|
||||||
|
|
||||||
|
- Split off 0003-systemd-no-dualmode.patch from
|
||||||
|
0001-systemd-enhancements.patch for easier upstream submission.
|
||||||
|
- Split off 0004-systemd-sd_notify.patch from
|
||||||
|
0001-systemd-enhancements.patch for easier upstream submission.
|
||||||
|
- Rename 0001-systemd-enhancements.patch to 0001-systemd-unit-files.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Dec 9 15:52:01 CET 2014 - kukuk@suse.de
|
||||||
|
|
||||||
|
- Update to latest rpcbind 0.2.2 upstream release.
|
||||||
|
- Following patches are upstream:
|
||||||
|
- 0001-Fix-building-one-systems-w-out-nss.h.patch
|
||||||
|
- 0002-Rename-configure.in-to-configure.ac.patch
|
||||||
|
- 0003-rpcbind-rpcuser-not-being-set-in-Makefile.am.patch
|
||||||
|
- 0004-Silence-a-warning-about-setgroups-being-implicitly-d.patch
|
||||||
|
- Adjust following patches:
|
||||||
|
- 0005-Remove-obsolete-function-in6_fillscopeid.patch
|
||||||
|
- 0006-In-init_transport-move-creation-of-COTS-sockets-clos.patch
|
||||||
|
- 0018-configure-check-for-nss.h.patch
|
||||||
|
- Obsolete patches:
|
||||||
|
- 0015-When-using-systemd-activation-make-rpcbind-notify-sy.patch
|
||||||
|
- 0016-Notify-systemd-unconditionally.patch
|
||||||
|
- 0012-Support-systemd-activation.patch
|
||||||
|
- 0013-socket-activation-Fix-rpcbind.service-to-use-separat.patch
|
||||||
|
- 0017-Pull-the-sysconfig-file-into-rpcbind.service-and-use.patch
|
||||||
|
- 0025-rpcinfo-warmstat_no-warning-about-missing-file.patch
|
||||||
|
- 0026-systemd-no-default-dep
|
||||||
|
- 0027-socket-before-service.patch
|
||||||
|
- 0028-rpcbind-after-var-run.patch
|
||||||
|
- 0029-rpcbind-sd-notify-stupid-errmsg.patch
|
||||||
|
- New patches:
|
||||||
|
- 0001-systemd-enhancements.patch
|
||||||
|
- 0002-rpcinfo_warmstart-no_warning_about_missing_file.patch
|
||||||
|
- Disabled patches:
|
||||||
|
- 0008-First-part-of-init_transport-refactoring.patch
|
||||||
|
- 0009-init_transport-move-the-registration-code-into-a-sep.patch
|
||||||
|
- 0010-Fix-the-behavior-when-specifying-the-h-option.patch
|
||||||
|
- 0011-Clean-up-the-way-we-handle-the-h-option-in-init_tran.patch
|
||||||
|
- 0014-When-using-systemd-redirect-syslog-calls-to-the-syst.patch
|
||||||
|
- 0024-rpcinfo-remove-obsolete-function-get_inet_address.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Nov 12 15:05:00 CET 2014 - kukuk@suse.de
|
Wed Nov 12 15:05:00 CET 2014 - kukuk@suse.de
|
||||||
|
|
||||||
|
74
rpcbind.spec
74
rpcbind.spec
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: rpcbind
|
Name: rpcbind
|
||||||
Version: 0.2.1_rc4
|
Version: 0.2.2
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Transport independent RPC portmapper
|
Summary: Transport independent RPC portmapper
|
||||||
License: BSD-4-Clause
|
License: BSD-4-Clause
|
||||||
@ -35,37 +35,25 @@ BuildRequires: tcpd-devel
|
|||||||
BuildRequires: pkgconfig(libsystemd-daemon)
|
BuildRequires: pkgconfig(libsystemd-daemon)
|
||||||
PreReq: %fillup_prereq
|
PreReq: %fillup_prereq
|
||||||
Requires(pre): /usr/sbin/useradd
|
Requires(pre): /usr/sbin/useradd
|
||||||
|
Patch1: 0001-systemd-unit-files.patch
|
||||||
# The next three are from upstream, applied directly on top of rc4.
|
Patch2: 0002-rpcinfo_warmstart-no_warning_about_missing_file.patch
|
||||||
Patch0: 0001-Fix-building-one-systems-w-out-nss.h.patch
|
Patch3: 0003-systemd-no-dualmode.patch
|
||||||
Patch1: 0002-Rename-configure.in-to-configure.ac.patch
|
Patch4: 0004-systemd-sd_notify.patch
|
||||||
Patch2: 0003-rpcbind-rpcuser-not-being-set-in-Makefile.am.patch
|
Patch5: 0005-Remove-obsolete-function-in6_fillscopeid.patch
|
||||||
Patch3: 0004-Silence-a-warning-about-setgroups-being-implicitly-d.patch
|
Patch6: 0006-In-init_transport-move-creation-of-COTS-sockets-clos.patch
|
||||||
Patch4: 0005-Remove-obsolete-function-in6_fillscopeid.patch
|
Patch7: 0007-The-use-of-AI_NUMERICHOST-in-init_transport-is-broke.patch
|
||||||
Patch5: 0006-In-init_transport-move-creation-of-COTS-sockets-clos.patch
|
Patch8: 0008-First-part-of-init_transport-refactoring.patch
|
||||||
Patch6: 0007-The-use-of-AI_NUMERICHOST-in-init_transport-is-broke.patch
|
Patch9: 0009-init_transport-move-the-registration-code-into-a-sep.patch
|
||||||
Patch7: 0008-First-part-of-init_transport-refactoring.patch
|
Patch10: 0010-Fix-the-behavior-when-specifying-the-h-option.patch
|
||||||
Patch8: 0009-init_transport-move-the-registration-code-into-a-sep.patch
|
Patch11: 0011-Clean-up-the-way-we-handle-the-h-option-in-init_tran.patch
|
||||||
Patch9: 0010-Fix-the-behavior-when-specifying-the-h-option.patch
|
Patch14: 0014-When-using-systemd-redirect-syslog-calls-to-the-syst.patch
|
||||||
Patch10: 0011-Clean-up-the-way-we-handle-the-h-option-in-init_tran.patch
|
Patch18: 0018-configure-check-for-nss.h.patch
|
||||||
Patch11: 0012-Support-systemd-activation.patch
|
Patch19: 0019-rpcinfo-ip_ping-clean-up-client-ping-create-destroy.patch
|
||||||
Patch12: 0013-socket-activation-Fix-rpcbind.service-to-use-separat.patch
|
Patch20: 0020-rpcinfo-introduce-new-helper-function-ip_getclient.patch
|
||||||
Patch13: 0014-When-using-systemd-redirect-syslog-calls-to-the-syst.patch
|
Patch21: 0021-rpcinfo-make-t-u-options-support-IPv6-addresses-too.patch
|
||||||
Patch14: 0015-When-using-systemd-activation-make-rpcbind-notify-sy.patch
|
Patch22: 0022-rpcinfo-remove-obsolete-function-clnt_com_create.patch
|
||||||
Patch15: 0016-Notify-systemd-unconditionally.patch
|
Patch23: 0023-Make-rpcinfo-p-support-IPv6-addresses-too.patch
|
||||||
Patch16: 0017-Pull-the-sysconfig-file-into-rpcbind.service-and-use.patch
|
Patch24: 0024-rpcinfo-remove-obsolete-function-get_inet_address.patch
|
||||||
Patch17: 0018-configure-check-for-nss.h.patch
|
|
||||||
Patch18: 0019-rpcinfo-ip_ping-clean-up-client-ping-create-destroy.patch
|
|
||||||
Patch19: 0020-rpcinfo-introduce-new-helper-function-ip_getclient.patch
|
|
||||||
Patch20: 0021-rpcinfo-make-t-u-options-support-IPv6-addresses-too.patch
|
|
||||||
Patch21: 0022-rpcinfo-remove-obsolete-function-clnt_com_create.patch
|
|
||||||
Patch22: 0023-Make-rpcinfo-p-support-IPv6-addresses-too.patch
|
|
||||||
Patch23: 0024-rpcinfo-remove-obsolete-function-get_inet_address.patch
|
|
||||||
Patch24: 0025-rpcinfo-warmstat_no-warning-about-missing-file.patch
|
|
||||||
Patch25: 0026-systemd-no-default-dep
|
|
||||||
Patch26: 0027-socket-before-service.patch
|
|
||||||
Patch27: 0028-rpcbind-after-var-run.patch
|
|
||||||
Patch28: 0029-rpcbind-sd-notify-stupid-errmsg.patch
|
|
||||||
|
|
||||||
%define statefile /var/lib/portmap.state
|
%define statefile /var/lib/portmap.state
|
||||||
%{?systemd_requires}
|
%{?systemd_requires}
|
||||||
@ -81,7 +69,6 @@ regards to portmap.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
cp %{SOURCE4} .
|
cp %{SOURCE4} .
|
||||||
%patch0 -p1
|
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
@ -89,27 +76,18 @@ cp %{SOURCE4} .
|
|||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
%patch6 -p1
|
%patch6 -p1
|
||||||
%patch7 -p1
|
%patch7 -p1
|
||||||
%patch8 -p1
|
#%patch8 -p1
|
||||||
%patch9 -p1
|
#%patch9 -p1
|
||||||
%patch10 -p1
|
#%patch10 -p1
|
||||||
%patch11 -p1
|
#%patch11 -p1
|
||||||
%patch12 -p1
|
#%patch14 -p1
|
||||||
%patch13 -p1
|
|
||||||
%patch14 -p1
|
|
||||||
%patch15 -p1
|
|
||||||
%patch16 -p1
|
|
||||||
%patch17 -p1
|
|
||||||
%patch18 -p1
|
%patch18 -p1
|
||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
%patch20 -p1
|
%patch20 -p1
|
||||||
%patch21 -p1
|
%patch21 -p1
|
||||||
%patch22 -p1
|
%patch22 -p1
|
||||||
%patch23 -p1
|
%patch23 -p1
|
||||||
%patch24 -p0
|
#%patch24 -p0
|
||||||
%patch25 -p1
|
|
||||||
%patch26 -p1
|
|
||||||
%patch27 -p1
|
|
||||||
%patch28 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
|
Loading…
Reference in New Issue
Block a user