mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-13 12:32:59 +02:00
79 lines
1.8 KiB
Bash
79 lines
1.8 KiB
Bash
#!/bin/sh
|
|
# Begin $rc_base/init.d/dhcp
|
|
|
|
# Based on sysklogd script from LFS-3.1 and earlier.
|
|
# Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org
|
|
# Modified for IPFire by Michael Tremer - mitch@ipfire.org
|
|
|
|
. /etc/sysconfig/rc
|
|
. $rc_functions
|
|
eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
|
|
|
|
function flush_chains() {
|
|
iptables -F DHCPGREENINPUT
|
|
iptables -F DHCPGREENOUTPUT
|
|
iptables -F DHCPBLUEINPUT
|
|
iptables -F DHCPBLUEOUTPUT
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
flush_chains
|
|
|
|
if [ -n "${GREEN_DEV}" -a -e "/var/ipfire/dhcp/enable_green" ]; then
|
|
devices="${GREEN_DEV}"
|
|
|
|
iptables -A DHCPGREENINPUT -i "${GREEN_DEV}" -j DHCPINPUT
|
|
iptables -A DHCPGREENOUTPUT -o "${GREEN_DEV}" -j DHCPOUTPUT
|
|
fi
|
|
if [ -n "${BLUE_DEV}" -a -e "/var/ipfire/dhcp/enable_blue" ]; then
|
|
devices+=" ${BLUE_DEV}"
|
|
|
|
iptables -A DHCPBLUEINPUT -i "${BLUE_DEV}" -j DHCPINPUT
|
|
iptables -A DHCPBLUEOUTPUT -o "${BLUE_DEV}" -j DHCPOUTPUT
|
|
fi
|
|
|
|
boot_mesg "Starting DHCP Server..."
|
|
loadproc /usr/sbin/dhcpd -q ${devices}
|
|
|
|
(sleep 5 && chmod 644 /var/run/dhcpd.pid) & # Fix because silly dhcpd creates its pid with mode 640
|
|
;;
|
|
|
|
stop)
|
|
flush_chains
|
|
|
|
boot_mesg "Stopping DHCP Server..."
|
|
killproc -p /var/run/dhcpd.pid /usr/sbin/dhcpd
|
|
if [ "$(ps -A | grep " dhcpd")" != "" ] ; then
|
|
# if fail use the hard way ...
|
|
boot_mesg "Killing DHCP Server..."
|
|
killall -w -s KILL /usr/sbin/dhcpd > /dev/null 2>&1
|
|
rm -f /var/run/dhcpd.pid > /dev/null 2>&1
|
|
echo_ok;
|
|
exit 0
|
|
fi
|
|
;;
|
|
|
|
reload)
|
|
boot_mesg "Reloading DHCP Server..."
|
|
reloadproc /usr/sbin/dhcpd
|
|
;;
|
|
|
|
restart)
|
|
$0 stop
|
|
sleep 1
|
|
$0 start
|
|
;;
|
|
|
|
status)
|
|
statusproc /usr/sbin/dhcpd
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 {start|stop|reload|restart|status}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# End $rc_base/init.d/dhcp
|