]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/initscripts/init.d/network
network: Remove redundant insertion of wireless rules.
[people/teissler/ipfire-2.x.git] / src / initscripts / init.d / network
index 8c989cc7c22d997b2a783c7e90054a1842200051..27686d1f3f831920cd094d7444a192d2906cdbd6 100644 (file)
@@ -4,9 +4,9 @@
 #
 # Description : Network Control Script
 #
-# Authors     : Michael Tremer - m.s.tremer@googlemail.com
+# Authors     : Michael Tremer - mitch@ipfire.org
 #
-# Version     : 00.00
+# Version     : 01.00
 #
 # Notes       : Written for IPFire by its team
 #
 
 . /etc/sysconfig/rc
 . ${rc_functions}
-. /var/ipfire/ethernet/settings
+eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
 
-case "${1}" in
-       start)
-               boot_mesg "Loading MASQ helper modules"
-               modprobe iptable_nat
-               modprobe ip_conntrack
-               modprobe ip_conntrack_ftp
-               modprobe ip_nat_ftp
-               modprobe ip_conntrack_h323
-               modprobe ip_nat_h323
-               modprobe ip_conntrack_irc
-               modprobe ip_nat_irc
-               modprobe ip_conntrack_mms
-               modprobe ip_nat_mms
-               modprobe ip_conntrack_pptp
-               modprobe ip_nat_pptp
-               modprobe ip_conntrack_proto_gre
-               modprobe ip_nat_proto_gre
-               modprobe ip_conntrack_quake3
-               modprobe ip_nat_quake3
-
-               # Remove possible leftover files
-               rm -f CONFIG_ROOT/red/{active,device,dial-on-demand,dns1,dns2,local-ipaddress,remote-ipaddress,resolv.conf}
-
-               # This won't actually do anything unless a PCMCIA controller was
-               # detected at install time, because /etc/pcmcia.conf won't exist.
-               /etc/rc.d/rc.pcmcia start
-               # Now, just in case we found a PCMCIA USB controller, we'll need to reload
-               # the USB here.
-               /usr/local/bin/resetusb
-
-               # The 'for' loop force driver loading order
-               for NIC in 0 1 2 3; do
-                   ETHX="eth${NIC}"
-                   if [ "$GREEN_DEV" == "$ETHX" ]; then
-                       if [ "$GREEN_DRIVER" != "" ]; then
-                           modprobe $GREEN_DRIVER $GREEN_DRIVER_OPTIONS
-                           evaluate_retval
-                      fi
-                   fi
-                   if [ "$ORANGE_DEV" == "$ETHX" ]; then
-                       if [ "$ORANGE_DRIVER" != "" ]; then
-                           modprobe $ORANGE_DRIVER $ORANGE_DRIVER_OPTIONS
-                           evaluate_retval
-                       fi
-                   fi
-                   if [ "$BLUE_DEV" == "$ETHX" ]; then
-                       if [ "$BLUE_DRIVER" != "" ]; then
-                           modprobe $BLUE_DRIVER $BLUE_DRIVER_OPTIONS
-                           evaluate_retval
-                       fi
-                   fi
-                   if [ "$RED_DEV" == "$ETHX" ]; then
-                       if [ "$RED_DRIVER" != "" ]; then
-                           modprobe $RED_DRIVER $RED_DRIVER_OPTIONS
-                           evaluate_retval
-                       fi
-                   fi
-               done
+init_networking() {
+       boot_mesg "Loading firewall modules into the kernel"
+       modprobe iptable_nat || failed=1
+       for i in $(find /lib/modules/$(uname -r) -name nf_conntrack*); do
+               modprobe $(basename $i | cut -d. -f1) || failed=1
+       done
+       for i in $(find /lib/modules/$(uname -r) -name nf_nat*); do
+               modprobe $(basename $i | cut -d. -f1) || failed=1
+       done
+       (exit ${failed})
+       evaluate_retval
 
-               if [ -d /proc/bus/pccard ]; then
-                       boot_mesg "Initializing PCMCIA cardbus modems"
-                       modprobe serial_cb
-                       evaluate_retval
-               fi
+       # Enable netfilter accounting
+       sysctl net.netfilter.nf_conntrack_acct=1 > /dev/null
+
+       if [ -e /var/ipfire/main/disable_nf_sip ]; then
+               rmmod nf_nat_sip
+               rmmod nf_conntrack_sip
+               rmmod nf_nat_h323
+               rmmod nf_conntrack_h323
+       fi
 
-               boot_mesg "Setting up IPFire firewall rules"
-               /etc/rc.d/init.d/firewall start
-               evaluate_retval
-               boot_mesg "Setting up IP Accounting"
-               /etc/rc.d/helper/writeipac.pl
-               /usr/sbin/fetchipac -S
-               evaluate_retval
-               boot_mesg "Setting IPFire DMZ pinholes"
-               /usr/local/bin/setdmzholes
-               evaluate_retval
-
-               if [ "$BLUE_DEV" != "" ]; then
-                       boot_mesg "Setting up wireless firewall rules"
-                       /usr/local/bin/restartwireless
-                       evaluate_retval
+       boot_mesg "Setting up firewall"
+       /etc/rc.d/init.d/firewall start; evaluate_retval
+
+       /etc/rc.d/init.d/dnsmasq start
+       /etc/rc.d/init.d/static-routes start
+}
+
+DO="${1}"
+shift
+
+if [ -n "${1}" ]; then
+       ALL=0
+       for i in green red blue orange; do      
+               eval "${i}=0"
+       done
+else
+       ALL=1
+       for i in green red blue orange; do
+               eval "${i}=1"
+       done
+fi
+
+while [ ! $# = 0 ]; do
+       for i in green red blue orange; do
+               if [ "${i}" == "${1}" ]; then
+                       eval "${i}=1"
+                       shift
                fi
+       done
+done
+
+case "${DO}" in
+       start)
+               [ "${ALL}" == "1" ] && init_networking
 
-               boot_mesg "Bringing network up..."
-               . /etc/rc.d/rc.netaddress.up
+               # Starting interfaces...
+               # GREEN
+               [ "$green" == "1" ] && /etc/rc.d/init.d/networking/green start
 
+               # BLUE
+               [ "$blue" == "1" ] && [ "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "4" ] && \
+                       /etc/rc.d/init.d/networking/blue start
+
+               # ORANGE
+               [ "$orange" == "1" ] && [ "$CONFIG_TYPE" = "2" -o "$CONFIG_TYPE" = "4" ] && \
+                       /etc/rc.d/init.d/networking/orange start
+
+               # RED
+               if [ "$red" == "1" ]; then
+                       if [ "$CONFIG_TYPE" = "1" -o "$CONFIG_TYPE" = "2" -o "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "4" ]; then
+                               # Remove possible leftover files
+                               rm -f /var/ipfire/red/{active,device,dial-on-demand,dns1,dns2,local-ipaddress,remote-ipaddress,resolv.conf}
+                               [ "$AUTOCONNECT" == "off" ] || /etc/rc.d/init.d/networking/red start
+                       fi
+               fi                           
                ;;
 
        stop)
+               # Stopping interfaces...
+               # GREEN
+               [ "$green" == "1" ] && /etc/rc.d/init.d/networking/green stop
 
+               # BLUE
+               [ "$blue" == "1" ] && [ "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "4" ] && \
+                       /etc/rc.d/init.d/networking/blue stop
+
+               # ORANGE
+               [ "$orange" == "1" ] && [ "$CONFIG_TYPE" = "2" -o "$CONFIG_TYPE" = "4" ] && \
+                       /etc/rc.d/init.d/networking/orange stop
+
+               # RED
+               if [ "$red" == "1" ]; then
+                       if [ "$CONFIG_TYPE" = "1" -o "$CONFIG_TYPE" = "2" -o "$CONFIG_TYPE" = "3" -o "$CONFIG_TYPE" = "4" ]; then
+                               /etc/rc.d/init.d/networking/red stop
+                       fi
+               fi
+
+               # Stopping dnsmasq if network all networks shutdown
+               [ "${ALL}" == "1" ] && /etc/rc.d/init.d/dnsmasq stop
+
+               exit 0
                ;;
 
        restart)
-               ${0} stop
+               for i in green red blue orange; do
+                       if [ "${!i}" == "1" ]; then
+                               ARGS+=" ${i}"
+                       fi
+               done
+               ${0} stop ${ARGS}
                sleep 1
-               ${0} start
+               ${0} start ${ARGS}
                ;;
 
        *)
-               echo "Usage: ${0} {start|stop|restart}"
+               echo "Usage: ${0} {start|stop|restart} [device(s)]"
                exit 1
                ;;
 esac