summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/radvd/files/.mtn2git_empty0
-rw-r--r--packages/radvd/files/radvd.conf.empty18
-rwxr-xr-xpackages/radvd/files/radvd.init115
-rw-r--r--packages/radvd/files/volatiles.03_radvd2
-rw-r--r--packages/radvd/radvd.inc34
-rw-r--r--packages/radvd/radvd_0.7.2.bb2
-rw-r--r--packages/radvd/radvd_1.0.bb2
7 files changed, 169 insertions, 4 deletions
diff --git a/packages/radvd/files/.mtn2git_empty b/packages/radvd/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/radvd/files/.mtn2git_empty
diff --git a/packages/radvd/files/radvd.conf.empty b/packages/radvd/files/radvd.conf.empty
new file mode 100644
index 0000000000..c006f86313
--- /dev/null
+++ b/packages/radvd/files/radvd.conf.empty
@@ -0,0 +1,18 @@
+# NOTE: there is no such thing as a working "by-default" configuration file.
+# At least the prefix needs to be specified. Please consult the radvd.conf(5)
+# man page and/or /usr/share/doc/radvd-*/radvd.conf.example for help.
+#
+#
+#interface eth0
+#{
+# AdvSendAdvert on;
+# MinRtrAdvInterval 30;
+# MaxRtrAdvInterval 100;
+# prefix 2001:db8:1:0::/64
+# {
+# AdvOnLink on;
+# AdvAutonomous on;
+# AdvRouterAddr off;
+# };
+#
+#};
diff --git a/packages/radvd/files/radvd.init b/packages/radvd/files/radvd.init
new file mode 100755
index 0000000000..5415230285
--- /dev/null
+++ b/packages/radvd/files/radvd.init
@@ -0,0 +1,115 @@
+#! /bin/sh
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/radvd
+NAME=radvd
+DESC=radvd
+CONFIG=/etc/radvd.conf
+SAVED_SETTINGS=/var/run/radvd/saved-settings
+PIDFILE=/var/run/radvd/radvd.pid
+OPTIONS="-u radvd -p $PIDFILE"
+
+test -x $DAEMON || exit 0
+
+set -e
+
+# Check for IPv6 support in kernel
+if test \! -e /proc/sys/net/ipv6; then
+ echo "IPv6 support must be enabled in the kernel for $DESC to work."
+ exit
+fi
+
+save_settings()
+{
+ local file=$1
+
+ rm -f $file
+ for if_conf in /proc/sys/net/ipv6/conf/*; do
+ echo -e "$if_conf/forwarding\t `cat $if_conf/forwarding`" >> $file
+ done
+ return 0
+}
+
+restore_settings()
+{
+ file=$1
+
+ if [ ! -f $file ]; then
+ echo "$0: warning: cannot restore settings"
+ return
+ fi
+
+ (
+ while read f value; do
+ if [ -w $f ]; then
+ echo $value > $f
+ fi
+ done
+ ) < $file
+}
+
+chkconfig() {
+ if [ ! -e $CONFIG -o ! -s $CONFIG ]; then
+ echo ""
+ echo "* $CONFIG does not exist or is empty."
+ echo "* See /usr/share/doc/radvd/examples/simple-radvd.conf for a simple"
+ echo "* configuration suitable for most systems, and radvd.conf(5)"
+ echo "* for configuration file syntax. radvd will *not* be started."
+ exit 0
+ fi
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ chkconfig
+ save_settings $SAVED_SETTINGS
+
+ # We must enable IPv6 forwarding for radvd to work
+ echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+
+ # Check for stale pidfile; radvd won't start if one is lying around
+ if [ -f $PIDFILE ] && ! ps `cat $PIDFILE` > /dev/null; then
+ rm -f $PIDFILE
+ fi
+ if ! start-stop-daemon --oknodo --start --pidfile $PIDFILE \
+ --exec $DAEMON -- $OPTIONS; then
+ echo "failed." && exit 1
+ fi
+ echo "$NAME."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --oknodo --stop --pidfile $PIDFILE \
+ --exec $DAEMON
+ restore_settings $SAVED_SETTINGS
+ rm -f $SAVED_SETTINGS
+ echo "$NAME."
+ ;;
+ reload|force-reload)
+ echo "Reloading $DESC configuration files."
+ start-stop-daemon --stop --signal HUP --quiet --pidfile \
+ $PIDFILE --exec $DAEMON
+ ;;
+ restart)
+ chkconfig
+ echo -n "Restarting $DESC: "
+ if ! start-stop-daemon --stop --quiet --pidfile \
+ $PIDFILE --exec $DAEMON; then
+ # stop failed, so we were not running
+ save_settings $SAVED_SETTINGS
+ echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+ fi
+ sleep 1
+ start-stop-daemon --start --quiet --pidfile \
+ $PIDFILE --exec $DAEMON -- $OPTIONS
+ echo "$NAME."
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/packages/radvd/files/volatiles.03_radvd b/packages/radvd/files/volatiles.03_radvd
new file mode 100644
index 0000000000..89256a40e4
--- /dev/null
+++ b/packages/radvd/files/volatiles.03_radvd
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d radvd root 0755 /var/run/radvd none
diff --git a/packages/radvd/radvd.inc b/packages/radvd/radvd.inc
index 745b37d35e..f73f8c0583 100644
--- a/packages/radvd/radvd.inc
+++ b/packages/radvd/radvd.inc
@@ -4,8 +4,38 @@ SECTION = "console/network"
LICENSE = "BSD"
DEPENDS = "flex-native"
-SRC_URI = "http://v6web.litech.org/radvd/dist/radvd-${PV}.tar.gz;md5sum=${MD5SUM}"
+SRC_URI = "http://v6web.litech.org/radvd/dist/radvd-${PV}.tar.gz;md5sum=${MD5SUM} \
+ file://radvd.init \
+ file://volatiles.03_radvd \
+ file://radvd.conf.empty"
S = "${WORKDIR}/radvd-${PV}"
-inherit autotools
+inherit autotools update-rc.d
+
+do_install_append () {
+ install -m 0755 -d ${D}${sysconfdir}/init.d \
+ ${D}${sysconfdir}/default/volatiles \
+ ${D}${docdir}/radvd
+ # Install init script and volatiles
+ install -m 0755 ${WORKDIR}/radvd.init ${D}${sysconfdir}/init.d/radvd
+ install -m 0644 ${WORKDIR}/volatiles.03_radvd ${D}${sysconfdir}/default/volatiles/volatiles.03_radvd
+ # Initial configuration
+ # install -m 0644 ${WORKDIR}/radvd.conf.empty ${D}${sysconfdir}/radvd.conf
+ # Documentation
+ for i in ${WORKDIR}/radvd.conf.empty radvd.conf.example README; do \
+ install -m 0644 $i ${D}${docdir}/radvd; \
+ done
+}
+
+#CONFFILES_${PN} = "${sysconfdir}/radvd.conf"
+
+INITSCRIPT_NAME = "radvd"
+INITSCRIPT_PARAMS = "defaults 20 80"
+
+pkg_postinst_${PN} () {
+ grep -q radvd: /etc/passwd || \
+ adduser --disabled-password --home=/var/run/radvd/ --system \
+ --ingroup nogroup --no-create-home -g "IPv6 router advertisement daemon" radvd
+ /etc/init.d/populate-volatile.sh update
+}
diff --git a/packages/radvd/radvd_0.7.2.bb b/packages/radvd/radvd_0.7.2.bb
index 6f22484b05..e22cc5e96b 100644
--- a/packages/radvd/radvd_0.7.2.bb
+++ b/packages/radvd/radvd_0.7.2.bb
@@ -1,4 +1,4 @@
-PR = "r1"
+PR = "r2"
SRC_URI_append += "file://automake.patch;patch=1 "
diff --git a/packages/radvd/radvd_1.0.bb b/packages/radvd/radvd_1.0.bb
index 87422a2df9..6d44ff2f94 100644
--- a/packages/radvd/radvd_1.0.bb
+++ b/packages/radvd/radvd_1.0.bb
@@ -1,4 +1,4 @@
-PR = "r0"
+PR = "r1"
require radvd.inc