Mon, 28 Jan 2013 17:37:18 +0100
Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.
michael@686 | 1 | #!@l_prefix@/bin/openpkg rc |
michael@686 | 2 | ## |
michael@686 | 3 | ## rc.dhcpd -- Run-Commands |
michael@686 | 4 | ## |
michael@686 | 5 | |
michael@686 | 6 | %config |
michael@686 | 7 | dhcpd_enable="$openpkg_rc_def" |
michael@686 | 8 | dhcpd_flags="-q" |
michael@686 | 9 | dhcpd_if="" |
michael@686 | 10 | dhcpd_port="67" |
michael@686 | 11 | dhcpd_log_prolog="true" |
michael@686 | 12 | dhcpd_log_epilog="true" |
michael@686 | 13 | dhcpd_log_numfiles="10" |
michael@686 | 14 | dhcpd_log_minsize="1M" |
michael@686 | 15 | dhcpd_log_complevel="9" |
michael@686 | 16 | |
michael@686 | 17 | %common |
michael@686 | 18 | dhcpd_pidfile="@l_prefix@/var/dhcpd/run/dhcpd.pid" |
michael@686 | 19 | dhcpd_leases="@l_prefix@/var/dhcpd/db/dhcpd.leases" |
michael@686 | 20 | dhcpd_signal () { |
michael@686 | 21 | if [ ! -f $dhcpd_pidfile ]; then return 1; fi |
michael@686 | 22 | kill -$1 `cat $dhcpd_pidfile` |
michael@686 | 23 | } |
michael@686 | 24 | dhcpd_start () { |
michael@686 | 25 | if [ ! -f $dhcpd_leases ]; then |
michael@686 | 26 | touch $dhcpd_leases |
michael@686 | 27 | chmod 644 $dhcpd_leases |
michael@686 | 28 | chown @l_susr@:@l_mgrp@ $dhcpd_leases |
michael@686 | 29 | fi |
michael@686 | 30 | local cmd="@l_prefix@/sbin/dhcpd" |
michael@686 | 31 | cmd="$cmd -f" |
michael@686 | 32 | cmd="$cmd $dhcpd_flags" |
michael@686 | 33 | echo ".$dhcpd_flags" | grep -- -p >/dev/null 2>&1 |
michael@686 | 34 | if [ $? -ne 0 -a ".$dhcpd_port" != . ]; then |
michael@686 | 35 | cmd="$cmd -p $dhcpd_port" |
michael@686 | 36 | fi |
michael@686 | 37 | if [ $# -gt 0 ]; then |
michael@686 | 38 | cmd="$cmd $@" |
michael@686 | 39 | fi |
michael@686 | 40 | ( eval "nohup $cmd </dev/null >/dev/null 2>&1 &" |
michael@686 | 41 | echo $! >$dhcpd_pidfile |
michael@686 | 42 | ) >/dev/null 2>&1 |
michael@686 | 43 | } |
michael@686 | 44 | |
michael@686 | 45 | %status -u @l_susr@ -o |
michael@686 | 46 | dhcpd_usable="unknown" |
michael@686 | 47 | dhcpd_active="no" |
michael@686 | 48 | @l_prefix@/sbin/dhcpd -q -t || dhcpd_usable="no" |
michael@686 | 49 | [ ".$dhcpd_if" = . ] && dhcpd_usable="no" |
michael@686 | 50 | rcService dhcpd enable yes && \ |
michael@686 | 51 | dhcpd_signal 0 && dhcpd_active="yes" |
michael@686 | 52 | echo "dhcpd_enable=\"$dhcpd_enable\"" |
michael@686 | 53 | echo "dhcpd_usable=\"$dhcpd_usable\"" |
michael@686 | 54 | echo "dhcpd_active=\"$dhcpd_active\"" |
michael@686 | 55 | |
michael@686 | 56 | %start -u @l_susr@ |
michael@686 | 57 | rcService dhcpd enable yes || exit 0 |
michael@686 | 58 | rcService dhcpd usable no && exit 0 |
michael@686 | 59 | rcService dhcpd active yes && exit 0 |
michael@686 | 60 | dhcpd_start $dhcpd_if |
michael@686 | 61 | |
michael@686 | 62 | %stop -u @l_susr@ |
michael@686 | 63 | rcService dhcpd enable yes || exit 0 |
michael@686 | 64 | rcService dhcpd active no && exit 0 |
michael@686 | 65 | dhcpd_signal TERM |
michael@686 | 66 | sleep 2 |
michael@686 | 67 | rm -f $dhcpd_pidfile 2>/dev/null || true |
michael@686 | 68 | |
michael@686 | 69 | %restart -u @l_susr@ |
michael@686 | 70 | rcService dhcpd enable yes || exit 0 |
michael@686 | 71 | rcService dhcpd active no && exit 0 |
michael@686 | 72 | rc dhcpd stop start |
michael@686 | 73 | |
michael@686 | 74 | %reload -u @l_susr@ |
michael@686 | 75 | rcService dhcpd enable yes || exit 0 |
michael@686 | 76 | dhcpd_signal HUP |
michael@686 | 77 | |
michael@686 | 78 | %daily -u @l_susr@ |
michael@686 | 79 | rcService dhcpd enable yes || exit 0 |
michael@686 | 80 | rcTmp -i |
michael@686 | 81 | hintfile=`rcTmp -f -n hint` |
michael@686 | 82 | for tool in dhcpd dhclient dhrelay omshell; do |
michael@686 | 83 | shtool rotate -f \ |
michael@686 | 84 | -n $dhcpd_log_numfiles -s $dhcpd_log_minsize -d \ |
michael@686 | 85 | -z $dhcpd_log_complevel -m 644 -o @l_susr@ -g @l_mgrp@ \ |
michael@686 | 86 | -P "$dhcpd_log_prolog" \ |
michael@686 | 87 | -E "$dhcpd_log_epilog; echo 1 >$hintfile" \ |
michael@686 | 88 | @l_prefix@/var/dhcpd/log/$tool.log |
michael@686 | 89 | done |
michael@686 | 90 | if [ -s $hintfile ]; then |
michael@686 | 91 | rc dhcpd restart |
michael@686 | 92 | fi |
michael@686 | 93 | rcTmp -k |
michael@686 | 94 |