--- network.ini.orig	Sat Mar  2 14:06:50 2002
+++ network.ini	Mon Apr 29 04:29:51 2002
@@ -9,4 +9,14 @@
 . /etc/config
 
+#
+# Figure out about extra inside interfaces.
+#
+if [ -z "$EXTRA_INSIDE_INTERFACES" ]; then
+	EXTRA_INSIDE_INTERFACES=`set | grep '^INSIDE_' | grep '_DEV=' | sed 's/^INSIDE_\([A-Z0-9]\+\)_DEV.*/\1/' | grep -v '^INSIDE_' | sort -u`
+fi
+# Print out the result nicely
+EXTRA_INSIDE_INTERFACES=`echo $EXTRA_INSIDE_INTERFACES`
+echo "Extra inside interfaces: ${EXTRA_INSIDE_INTERFACES:-(none)}"
+
 ifconfig lo 127.0.0.1
 
@@ -15,4 +25,9 @@
 #
 ifconfig ${INSIDE_DEV} ${INSIDE_IP} netmask ${INSIDE_NETMASK} broadcast ${INSIDE_BROADCAST}
+if [ -n "$EXTRA_INSIDE_INTERFACES" ]; then
+	for i in $EXTRA_INSIDE_INTERFACES; do
+		eval "ifconfig \${INSIDE_${i}_DEV} \${INSIDE_${i}_IP} netmask \${INSIDE_${i}_NETMASK} broadcast \${INSIDE_${i}_BROADCAST}"
+	done
+fi
 
 #
@@ -17,11 +32,7 @@
 
 #
-# Brad wanted these next 5 lines.
+# Brad wanted (some of) this.
 #
-echo "INSIDE_DEVICE=${INSIDE_DEV}"          > /etc/inside.info
-echo "INSIDE_IP=${INSIDE_IP}"               >> /etc/inside.info
-echo "INSIDE_NETWORK=${INSIDE_NETWORK}"     >> /etc/inside.info
-echo "INSIDE_NETMASK=${INSIDE_NETMASK}"     >> /etc/inside.info
-echo "INSIDE_BROADCAST=${INSIDE_BROADCAST}" >> /etc/inside.info
+echo `set | grep '^INSIDE_'` > /etc/inside.info
 
 #
@@ -29,4 +40,9 @@
 #
 echo "${INSIDE_IP} ${HOSTNAME}.${DOMAIN}  ${HOSTNAME}" >> /etc/hosts    
+if [ -n "$EXTRA_INSIDE_INTERFACES" ]; then
+	for i in $EXTRA_INSIDE_INTERFACES; do
+		eval "echo \"\${INSIDE_${i}_IP} ${HOSTNAME}.\${DOMAIN}  \${HOSTNAME}\" >> /etc/hosts"
+	done
+fi
 # setting up hostname
 hostname ${HOSTNAME}
@@ -34,19 +50,15 @@
 echo "Hostname (fully qualified) set up to `hostname -f`"
 
-
 #
 # Tip from Jacco Kok.
 #
-if [ "$OUTSIDE_MAC" != "" ]
-then
+if [ "$OUTSIDE_MAC" != "" ]; then
 	/bin/ifconfig ${OUTSIDE_DEV} hw ether ${OUTSIDE_MAC}
 fi
 
-
 #
 # Outside
 #
-if [ ${OUTSIDE_IP} = 'DHCP' ];
-then 
+if [ ${OUTSIDE_IP} = 'DHCP' ]; then
     echo "Booting udhcpc"
     echo "OUTSIDE_DEVICE=${OUTSIDE_DEV}"   > /etc/outside.info
@@ -59,6 +71,5 @@
     fi
 else
-    if [ ${OUTSIDE_IP} = 'EXTERNAL' ];
-	then
+    if [ ${OUTSIDE_IP} = 'EXTERNAL' ]; then
 	/etc/ext-up.init
     else
@@ -76,12 +87,7 @@
 
         echo "nameserver ${NAME_SERVER_IP1}" >> /etc/resolv.conf
-        echo "nameserver ${NAME_SERVER_IP2}" >> /etc/resolv.conf
+	[ -n "${NAME_SERVER_IP2}" ] && echo "nameserver ${NAME_SERVER_IP2}" >> /etc/resolv.conf
 
-        echo "OUTSIDE_DEVICE=${OUTSIDE_DEV}"          > /etc/outside.info
-        echo "OUTSIDE_IP=${OUTSIDE_IP}"               >> /etc/outside.info
-        echo "OUTSIDE_GATEWAY=${DEFAULT_GATEWAY}"     >> /etc/outside.info
-        echo "OUTSIDE_NETMASK=${OUTSIDE_NETMASK}"     >> /etc/outside.info
-        echo "OUTSIDE_NETWORK=${OUTSIDE_NETWORK}"     >> /etc/outside.info
-        echo "OUTSIDE_BROADCAST=${OUTSIDE_BROADCAST}" >> /etc/outside.info
+	echo `set | grep '^OUTSIDE_'` > /etc/outside.info
 
 	echo "Setting up firewall rules: "
@@ -112,14 +118,22 @@
 # DHCP Daemon and DNS Cache. 
 #
-p=`pidof dnsmasq`
-if [ "${DHCP_DAEMON}" = "y" ];
-then
+if [ "${DHCP_DAEMON}" = "y" ]; then
 	/etc/udhcpd.conf.sh
 	udhcpd
-        [ $p ] || dnsmasq -i ${INSIDE_DEV}
-else
-	if [ "${DNSMASQ}" = "y" ];
-	then
-        	[ $p ] || dnsmasq -i ${INSIDE_DEV}
+	DNSMASQ="y"
+fi
+p=`pidof dnsmasq`
+if [ "${DNSMASQ}" = "y" -a -z "$p" ]; then
+	if [ -z "$DNSMASQ_DEVICES" ]; then
+		DNSMASQ_DEVICES="${INSIDE_DEV}"
+		if [ -n "$EXTRA_INSIDE_INTERFACES" ]; then
+			for i in $EXTRA_INSIDE_INTERFACES; do
+				eval "DNSMASQ_DEVICES=\"$DNSMASQ_DEVICES \${INSIDE_${i}_DEV}\""
+			done
 	fi
 fi
+	dnsmasq -b `echo $DNSMASQ_DEVICES | sed 's/[[:space:]]*\([^[:space:]]\+\)/ -i \1/g'`
+fi
+
+# Should we keepalive your connection?
+[ -n "$ISP_GATEWAY_IP" ] && ping -i 30 $ISP_GATEWAY_IP > /dev/null &
