diff options
-rw-r--r-- | packages/radvd/files/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/radvd/files/radvd.conf.empty | 18 | ||||
-rwxr-xr-x | packages/radvd/files/radvd.init | 115 | ||||
-rw-r--r-- | packages/radvd/files/volatiles.03_radvd | 2 | ||||
-rw-r--r-- | packages/radvd/radvd.inc | 34 | ||||
-rw-r--r-- | packages/radvd/radvd_0.7.2.bb | 2 | ||||
-rw-r--r-- | packages/radvd/radvd_1.0.bb | 2 |
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 |