On Wed, Nov 02 2016, Steve Dickson wrote: > Hello, > > My apologies for not getting to this sooner... > A rough a couple of weeks... > On 10/12/2016 02:01 AM, NeilBrown wrote: >> >> >> 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= >> >> As the "run" directory could be /run or /var/run we RequiresMountsFor >> both of these. > Talking with the systemd folks they strongly sugguest we just > use /run (not /var/run) and drop the RequiresMountsFor. I'm fine with that. While maybe not everyone has /run, everyone running systemd does. I assume you'll just fix this rather than me resubmitting? Thanks, NeilBrown > >> >> rpcbind.service pulls in rpcbind.socket so that the listening sockets >> chosen there will always be used. >> >> Signed-off-by: NeilBrown <neilb@xxxxxxxx> >> --- >> .gitignore | 1 + >> Makefile.am | 4 ++++ >> configure.ac | 7 ++++++- >> systemd/rpcbind.service.in | 17 +++++++++++++++++ >> systemd/rpcbind.socket | 19 +++++++++++++++++++ >> 5 files changed, 47 insertions(+), 1 deletion(-) >> create mode 100644 systemd/rpcbind.service.in >> create mode 100644 systemd/rpcbind.socket >> >> hi, >> these are based on the unit files in use a SUSE, though I have made a >> few "improvements". >> If anyone has differences in their distros that you think we should >> have in mainline, I'd love to hear about it. >> >> Thanks, >> NeilBrown >> >> >> diff --git a/.gitignore b/.gitignore >> index 321dff64a57d..a8f1fed2acb6 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 5ec8cd66b689..43c27100ceae 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 af4b74b31c9a..0892d8246a12 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 bindir available for substitution in config file >> +# 2 "evals" needed to expand variable names >> +AC_SUBST([_bindir]) >> +AC_CONFIG_COMMANDS_PRE([eval eval _bindir=$bindir]) >> + >> +AC_OUTPUT([Makefile systemd/rpcbind.service]) >> diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in >> new file mode 100644 >> index 000000000000..4706b5a77abf >> --- /dev/null >> +++ b/systemd/rpcbind.service.in >> @@ -0,0 +1,17 @@ >> +[Unit] >> +Description=RPC Bind >> +Documentation=man:rpcbind(8) >> +DefaultDependencies=no >> +RequiresMountsFor=/var/run /run >> +# 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=@_bindir@/rpcbind $RPCBIND_OPTIONS -w -f > This macro puts rpcbind in /usr/bin, but in the Red Hat > distros rpcbind lives /usr/sbin. I could easily patch > it to do the right thing... but is this a typo or does > rpcbind live in /usr/bin in other distros? > > steved. > > >> + >> +[Install] >> +WantedBy=multi-user.target >> diff --git a/systemd/rpcbind.socket b/systemd/rpcbind.socket >> new file mode 100644 >> index 000000000000..7204c97efa6f >> --- /dev/null >> +++ b/systemd/rpcbind.socket >> @@ -0,0 +1,19 @@ >> +[Unit] >> +Description=RPCbind Server Activation Socket >> +DefaultDependencies=no >> +RequiresMountsFor=/var/run /run >> +Wants=rpcbind.target >> +Before=rpcbind.target >> + >> +[Socket] >> +ListenStream=/var/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 >>
Attachment:
signature.asc
Description: PGP signature