#!/bin/sh
# post-dhcpd.ini
#
# DHCP server for the inside network
# Modified by Benoit Mortier
# 08/04/2001
# opensides@caramail.com

. /etc/config

[ -f /etc/dhcpc/dhcpcd-$OUTSIDE_DEV.info ] && . /etc/dhcpc/dhcpcd-$OUTSIDE_DEV.info

. /etc/inside.info

#
# Build the config file
#

echo "default-lease-time 6000;" >> /etc/dhcpd.conf
echo "max-lease-time 72000;" >> /etc/dhcpd.conf
echo "option subnet-mask $INSIDE_NETMASK;" >> /etc/dhcpd.conf
echo "option broadcast-address $INSIDE_BROADCAST;" >> /etc/dhcpd.conf
echo "option routers $INSIDE_IP;" >> /etc/dhcpd.conf
if [ $NAME_SERVER_IP1 ]; then
	echo "option domain-name-servers ${NAME_SERVER_IP1}${NAME_SERVER_IP2:+, $NAME_SERVER_IP2};" >> /etc/dhcpd.conf
fi
if [ $DHCP_WINS_SERVER ]; then
	echo "option netbios-name-servers $DHCP_WINS_SERVER, $DHCP_WINS_SERVER;" >> /etc/dhcpd.conf
fi
echo "option domain-name \"$DOMAIN\";" >> /etc/dhcpd.conf

echo "subnet $INSIDE_NETWORK netmask $INSIDE_NETMASK {" >> /etc/dhcpd.conf
if [ -n "$DHCP_RANGE_START" -a -n "$DHCP_RANGE_END" ]; then
	echo "  range $DHCP_RANGE_START $DHCP_RANGE_END;" >> /etc/dhcpd.conf
fi
echo "}" >> /etc/dhcpd.conf

if [ -z "$DHCPD_DEVICES" ]; then
	DHCPD_DEVICES="$INSIDE_DEV"
fi
if [ -n "$INSIDE_EXTRA_IF" ]; then
	for i in $INSIDE_EXTRA_IF; do
		eval "echo \"subnet \$INSIDE_${i}_NETWORK netmask \$INSIDE_${i}_NETMASK {\" >> /etc/dhcpd.conf"
		if [ -n "`eval "echo \"\$DHCP_${i}_RANGE_START\""`" -a -n "`eval "echo \"\$DHCP_${i}_RANGE_END\""`" ]; then
			eval "echo \"  range \$DHCP_${i}_RANGE_START \$DHCP_${i}_RANGE_END;\" >> /etc/dhcpd.conf"
		fi
		eval "echo \"  option broadcast-address \$INSIDE_${i}_BROADCAST;\" >> /etc/dhcpd.conf"
		eval "echo \"  option routers \$INSIDE_${i}_IP;\" >> /etc/dhcpd.conf"
		echo "}" >> /etc/dhcpd.conf
		eval "DHCPD_DEVICES=\"$DHCPD_DEVICES \$INSIDE_${i}_DEV\""
	done
fi

#
# Create the empty leases database
#
echo -n > /etc/dhcpd.leases

#
# Run the server in the inside lan
#
/bin/dhcpd $DHCPD_DEVICES
