summaryrefslogtreecommitdiff
path: root/extra/ifplugd
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-08-31 00:04:43 +0000
committerroot <root@rshg054.dnsready.net>2012-08-31 00:04:43 +0000
commit68cdc08aec92abf91448a542e06fabbedbb583bf (patch)
tree2c42e2f29a6162e0cb5ff3db8f0b46277ab4ed90 /extra/ifplugd
parentdba5b0127d9f00a13c489f0f5893481cbe7d429b (diff)
Fri Aug 31 00:04:43 UTC 2012
Diffstat (limited to 'extra/ifplugd')
-rw-r--r--extra/ifplugd/PKGBUILD50
-rw-r--r--extra/ifplugd/ifplugd15
-rwxr-xr-xextra/ifplugd/ifplugd-daemon7
-rw-r--r--extra/ifplugd/ifplugd-fix-return-value.patch12
-rw-r--r--extra/ifplugd/ifplugd.install13
-rw-r--r--extra/ifplugd/ifplugd.systemd11
6 files changed, 70 insertions, 38 deletions
diff --git a/extra/ifplugd/PKGBUILD b/extra/ifplugd/PKGBUILD
index 420bf90d5..6d30aefbd 100644
--- a/extra/ifplugd/PKGBUILD
+++ b/extra/ifplugd/PKGBUILD
@@ -1,31 +1,38 @@
-# $Id: PKGBUILD 158689 2012-05-07 09:54:25Z dreisner $
+# $Id: PKGBUILD 165779 2012-08-29 20:42:40Z thomas $
# Contributor: Manolis Tzanidakis
# Contributor: kevin <kevin@archlinux.org>
# Maintainer:
pkgname=ifplugd
pkgver=0.28
-pkgrel=11
+pkgrel=12
pkgdesc="A daemon which brings up/down network interfaces upon cable insertion/removal."
arch=('i686' 'x86_64')
url="http://0pointer.de/lennart/projects/ifplugd"
+install=ifplugd.install
license=('GPL2')
-depends=('libdaemon' 'bash' 'net-tools')
-backup=('etc/ifplugd/ifplugd.conf' 'etc/ifplugd/ifplugd.action')
+depends=('libdaemon' 'bash')
+backup=('etc/ifplugd/ifplugd.conf')
options=('!makeflags')
-source=($url/${pkgname}-${pkgver}.tar.gz 'ifplugd' 'ifplugd.action' 'ifplugd-0.28-interface.patch' 'ifdown.01-route.sh' 'ifup.01-route.sh' 'ifup.02-ntpdate.sh')
+source=($url/${pkgname}-${pkgver}.tar.gz
+ ifplugd-0.28-interface.patch
+ ifplugd-fix-return-value.patch
+ ifplugd
+ ifplugd-daemon
+ ifplugd.systemd)
md5sums=('df6f4bab52f46ffd6eb1f5912d4ccee3'
- '2281cd3eda9e3403857863e1a1bc00be'
- '6f98767c4ea2cf0580f73ced81efd21a'
'54eb22844b5aeed161c0b80aa9008570'
- 'd6ce6c7bd481a0b3944c944c5b277c0b'
- 'c35f0a637911b747f8dc3bd3c6156a1b'
- 'f8690ee18a5ca72555585ee96826c2cf')
+ 'f26dbd7597d9d637f0b2b104b11ab820'
+ '158bda9014eb35979af9b094feca5fe1'
+ 'f2e8a37af52b79ee0e3c5bcc2470ce10'
+ '3dc2ce45d0e12d155ecc7a5bc9e3ee04')
build() {
cd ${srcdir}/${pkgname}-${pkgver}
- patch -p0 -i $srcdir/ifplugd-0.28-interface.patch
- ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc \
+ patch -p0 -i ${srcdir}/ifplugd-0.28-interface.patch
+ patch -p1 -i ${srcdir}/ifplugd-fix-return-value.patch
+ sed 's|/var/run|/run|' -i src/ifplugd.c
+ ./configure --prefix=/usr --sbindir=/usr/bin --mandir=/usr/share/man --sysconfdir=/etc \
--with-initdir=/etc/rc.d --disable-xmltoman --disable-subversion --disable-lynx
make
}
@@ -34,20 +41,11 @@ package() {
cd ${srcdir}/${pkgname}-${pkgver}
make DESTDIR=${pkgdir} install
- # replace INTERFACES with NET_IFS since AL already uses it in /etc/rc.conf
- sed -i "s:INTERFACES:NET_IFS:g" \
- ${pkgdir}/etc/ifplugd/ifplugd.conf
-
# replace the default init script & action files with ours.
install -D -m755 ${srcdir}/ifplugd ${pkgdir}/etc/rc.d/ifplugd
- install -D -m755 ${srcdir}/ifplugd.action \
- ${pkgdir}/etc/ifplugd/ifplugd.action
-
- install -Dm755 ${srcdir}/ifdown.01-route.sh \
- ${pkgdir}/etc/ifplugd/ifdown.d/01-route.sh
- install -Dm755 ${srcdir}/ifup.01-route.sh \
- ${pkgdir}/etc/ifplugd/ifup.d/01-route.sh
- install -Dm755 ${srcdir}/ifup.02-ntpdate.sh \
- ${pkgdir}/etc/ifplugd/ifup.d/02-ntpdate.sh
+ install -D -m755 ${srcdir}/ifplugd-daemon ${pkgdir}/usr/bin/ifplugd-daemon
+ # remove default action script
+ rm -f ${pkgdir}/etc/ifplugd/ifplugd.action
+ # install systemd unit
+ install -D -m644 ${srcdir}/ifplugd.systemd ${pkgdir}/usr/lib/systemd/system/ifplugd@.service
}
-
diff --git a/extra/ifplugd/ifplugd b/extra/ifplugd/ifplugd
index f7c34ade5..f6c8db938 100644
--- a/extra/ifplugd/ifplugd
+++ b/extra/ifplugd/ifplugd
@@ -16,14 +16,7 @@ PID=$(pidof -o %PPID ifplugd)
[[ -r $cfg ]] && . "$cfg"
# discover interfaces to monitor
-# (replacing INTERFACES with NET_IFS, since AL
-# already uses it in /etc/rc.conf)
-if [[ $NET_IFS ]]; then
- net_ifs=($NET_IFS)
-else
- net_ifs=(/sys/class/net/!(lo))
- net_ifs=("${net_ifs[@]##*/}")
-fi
+net_ifs=($INTERFACES)
case $1 in
start)
@@ -31,10 +24,8 @@ case $1 in
for nic in "${net_ifs[@]}"; do
# only start if a PID doesn't already exist
- if [[ ! -f /var/run/ifplugd.$nic.pid ]]; then
- args=ARGS_$nic
- [[ -z ${!args} ]] && args=$ARGS || args=${!args}
- ifplugd -i "$nic" $args
+ if [[ ! -f /var/run/ifplugd.$nic.pid ]];
+ /usr/bin/ifplugd-daemon $nic
# use presence of PID file to check for start success
[[ -f /var/run/ifplugd.$nic.pid ]] || (( ++err ))
diff --git a/extra/ifplugd/ifplugd-daemon b/extra/ifplugd/ifplugd-daemon
new file mode 100755
index 000000000..e21f4afbd
--- /dev/null
+++ b/extra/ifplugd/ifplugd-daemon
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+. /etc/ifplugd/ifplugd.conf
+
+args=ARGS_$1
+[[ -z ${!args} ]] && args=$ARGS || args=${!args}
+/usr/bin/ifplugd -i "$1" $args
diff --git a/extra/ifplugd/ifplugd-fix-return-value.patch b/extra/ifplugd/ifplugd-fix-return-value.patch
new file mode 100644
index 000000000..1b7d04af6
--- /dev/null
+++ b/extra/ifplugd/ifplugd-fix-return-value.patch
@@ -0,0 +1,12 @@
+diff -Nur ifplugd-0.28.orig/src/ifplugd.c ifplugd-0.28/src/ifplugd.c
+--- ifplugd-0.28.orig/src/ifplugd.c 2005-06-04 21:21:51.000000000 +0200
++++ ifplugd-0.28/src/ifplugd.c 2012-08-29 21:51:53.137644163 +0200
+@@ -447,7 +447,7 @@
+ goto finish;
+
+ if (send_retval && daemonize && wait_on_fork) {
+- char c = status == IFSTATUS_UP ? 2 : (status == IFSTATUS_DOWN ? 3 : 1);
++ char c = status == IFSTATUS_UP ? 1 : (status == IFSTATUS_DOWN ? 2 : 3);
+ daemon_retval_send(c);
+ send_retval = 0;
+ }
diff --git a/extra/ifplugd/ifplugd.install b/extra/ifplugd/ifplugd.install
new file mode 100644
index 000000000..c061d8c31
--- /dev/null
+++ b/extra/ifplugd/ifplugd.install
@@ -0,0 +1,13 @@
+post_upgrade() {
+ if [ $(vercmp $2 0.28-12) -lt 0 ]; then
+ cat << "EOF"
+* When used with initscripts, /etc/ifplugd/ifplugd.conf now uses
+ INTERFACES= again instead of NET_IFS=.
+* This package no longer provides a default ifplugd.action script.
+* To use ifplugd with systemd, run
+ systemctl enable ifplugd@eth0.service
+EOF
+ fi
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/ifplugd/ifplugd.systemd b/extra/ifplugd/ifplugd.systemd
new file mode 100644
index 000000000..4d407be9e
--- /dev/null
+++ b/extra/ifplugd/ifplugd.systemd
@@ -0,0 +1,11 @@
+[Unit]
+Description=Daemon which acts upon network cable insertion/removal
+
+[Service]
+Type=forking
+PIDFile=/run/ifplugd.%i.pid
+ExecStart=/usr/bin/ifplugd-daemon %i
+SuccessExitStatus=0 1 2
+
+[Install]
+WantedBy=multi-user.target