From 0cc39c519278b15ede3a5268415b70a2378a52c0 Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Mon, 7 Nov 2016 14:28:54 -0500 Subject: Provide systemd unit files for rpcbind To encourage uniformity across distributions, provide systemd unit files. If extra arguments are wanted for rpcbind, a drop-in should be used to set the Environment= or read and EnvironmentFile= Even though libtirpc and the kernel contact rpcbind via /var/run/rcpbind.sock, tell systemd to place the socket in /run/rpcbind.sock as systems using systemd always use /run, and often symlink /var/run to /run. rpcbind.service pulls in rpcbind.socket so that the listening sockets chosen there will always be used. Signed-off-by: NeilBrown Signed-off-by: Steve Dickson --- .gitignore | 1 + Makefile.am | 4 ++++ configure.ac | 7 ++++++- systemd/rpcbind.service.in | 17 +++++++++++++++++ systemd/rpcbind.socket | 18 ++++++++++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 systemd/rpcbind.service.in create mode 100644 systemd/rpcbind.socket diff --git a/.gitignore b/.gitignore index 321dff6..a8f1fed 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ rpcbind rpcinfo # cscope database files cscope.* +systemd/rpcbind.service diff --git a/Makefile.am b/Makefile.am index 5ec8cd6..43c2710 100644 --- a/Makefile.am +++ b/Makefile.am @@ -50,6 +50,10 @@ if SYSTEMD AM_CPPFLAGS += $(SYSTEMD_CFLAGS) -DSYSTEMD rpcbind_LDADD += $(SYSTEMD_LIBS) + +systemdsystemunit_DATA = \ + systemd/rpcbind.service \ + systemd/rpcbind.socket endif rpcinfo_SOURCES = src/rpcinfo.c diff --git a/configure.ac b/configure.ac index af4b74b..f84921e 100644 --- a/configure.ac +++ b/configure.ac @@ -61,4 +61,9 @@ AC_SEARCH_LIBS([pthread_create], [pthread]) AC_CHECK_HEADERS([nss.h rpcsvc/mount.h]) -AC_OUTPUT([Makefile]) +# make sbindir available for substitution in config file +# 2 "evals" needed to expand variable names +AC_SUBST([_sbindir]) +AC_CONFIG_COMMANDS_PRE([eval eval _sbindir=$sbindir]) + +AC_OUTPUT([Makefile systemd/rpcbind.service]) diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in new file mode 100644 index 0000000..c173b83 --- /dev/null +++ b/systemd/rpcbind.service.in @@ -0,0 +1,17 @@ +[Unit] +Description=RPC Bind +Documentation=man:rpcbind(8) +DefaultDependencies=no + +# Make sure we use the IP addresses listed for +# rpcbind.socket, no matter how this unit is started. +Wants=rpcbind.socket +After=rpcbind.socket + +[Service] +Type=notify +# distro can provide a drop-in adding EnvironmentFile=-/??? if needed. +ExecStart=@_sbindir@/rpcbind $RPCBIND_OPTIONS -w -f + +[Install] +WantedBy=multi-user.target diff --git a/systemd/rpcbind.socket b/systemd/rpcbind.socket new file mode 100644 index 0000000..3b1a936 --- /dev/null +++ b/systemd/rpcbind.socket @@ -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 -- cgit v1.2.1