#!/bin/sh # # network Bring up/down networking # # chkconfig: 2345 10 90 # description: Activates/Deactivates all network interfaces configured to \ # start at boot time. # # probe: true # $Id: network,v 1.45 2001/05/24 20:17:31 baggins Exp $ PATH=/sbin:/usr/sbin:/bin:/usr/bin # NLS NLS_DOMAIN="rc-scripts" # Source function library. . /etc/rc.d/init.d/functions . /etc/sysconfig/network-scripts/.functions if [ ! -f /etc/sysconfig/network ]; then nls "%s is missing. Can't continue." "/etc/sysconfig/network" exit 1 fi . /etc/sysconfig/network # Check that networking is up. is_no "${NETWORKING}" && exit 0 # Will be removed in the future if is_yes "$NETWORKING" ; then if [ -z "$IPV4_NETWORKING" ] ; then echo "NETWORKING is set to YES, but IPV4_NETWORKING is empty!" echo "Please upgrade your config" echo "Assuming you want IPv4 networking" IPV4_NETWORKING=yes fi fi if [ ! -x /sbin/ip ]; then nls "%s is missing. Can't continue." "/sbin/ip" exit 1 fi ###### # initialize networking: # - check IPv4, IPv6, IPX can be handled by system # - setup default IPv{4,6} interfaces policy like: # - forwarding, # - spoofig protection, # - icmp echo ignore broadcasts, # - setup lo interface network_init() { # Kernel network parameters run_cmd "Setting network parameters" sysctl -p /etc/sysctl.conf # Set UP loopback interface set_up_loopback # Modprobe needed devices modprobe_net # Setup configuration setup_forwarding on setup_nat on setup_routes on # Setup IPX if is_yes "$IPX"; then if [ -n $IPXAUTOPRIMARY ] ; then if is_yes "$IPXAUTOPRIMARY"; then IPXAUTOPRIMARY="on" else IPXAUTOPRIMARY="off" fi /usr/bin/ipx_configure --auto_primary=$IPXAUTOPRIMARY fi if [ -n $IPXAUTOFRAME ] ; then if is_yes "$IPXAUTOFRAME"; then IPXAUTOFRAME="on" else IPXAUTOFRAME="off" fi /usr/bin/ipx_configure --auto_interface=$IPXAUTOFRAME fi if [ -n "$IPXINTERNALNETNUM" -a "$IPXINTERNALNETNUM" != "0" ]; then /usr/bin/ipx_internal_net add $IPXINTERNALNETNUM $IPXINTERNALNODENUM fi fi } network_postinit() { # Set static RARP table static_rarp # Set static ARP table static_arp } ###### # deinitialize networking # - down lo interface. network_deinit() { setup_forwarding off setup_routes off # Set down NAT rules setup_nat off # Set DOWN loopback interface set_down_loopback } # find all the interfaces besides loopback. # ignore aliases, alternative configurations, and editor backup files interfaces=$((cd /etc/sysconfig/interfaces && ls -1 ifcfg* | \ egrep -v '(ifcfg-lo|:)' | egrep 'ifcfg-[a-z0-9]+$' | \ awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null) interfaces_boot=$((cd /etc/sysconfig/interfaces && ls -1 ifcfg* | \ egrep -v '(ifcfg-lo|ifcfg-sit|ifcfg-atm|ifcfg-lec|ifcfg-nas|:)' | egrep 'ifcfg-[a-z0-9]+$' | \ xargs egrep -l "ONBOOT=[^n][^o]" | \ awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null) interfaces_sit_boot=$((cd /etc/sysconfig/interfaces && ls -1 ifcfg-sit* | \ egrep 'ifcfg-[a-z0-9]+$' | xargs egrep -l "ONBOOT=[^n][^o]" | \ awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null) tunnels=$((cd /etc/sysconfig/interfaces && ls -1 tnlcfg-* | \ xargs egrep -l "ONBOOT=[^n][^o]" | \ awk ' { gsub(/tnlcfg-/,NIL); print $0 } ') 2> /dev/null) # See how we were called. case "$1" in start) network_init for i in $interfaces_boot $interfaces_sit_boot ; do run_cmd -a "$(nls 'Bringing up interface') $i" /sbin/ifup $i boot done for i in $(find_ldap_interfaces) ; do run_cmd -a "$(nls 'Bringing up interface from LDAP') $i" /sbin/ifup $i boot done for i in $tunnels; do run_cmd -a "$(nls 'Setting tunnel') $i" /sbin/tnlup $i boot run_cmd -a "$(nls 'Bringing up tunnel interface') $i" /sbin/ifup tnlcfg-$i boot done network_postinit touch /var/lock/subsys/network ;; stop) # If we go to runlevel 0, 1 or 6 then umount all network fs if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then if [ -x /etc/rc.d/init.d/netfs -a -f /var/lock/subsys/netfs ]; then /etc/rc.d/init.d/netfs stop else netmtab=$(awk '{ if ($3 ~ /^(nfs|smbfs|ncpfs)$/ ) print $3}' /proc/mounts) if (echo "$netmtab" | grep -q nfs); then run_cmd "Unmounting NFS filesystems" umount -fat nfs fi if (echo "$netmtab" | grep -q smbfs); then run_cmd "Unmounting SMB filesystems" umount -at smbfs fi if (echo "$netmtab" | grep -q ncpfs); then run_cmd "Unmounting NCP filesystems" umount -at ncpfs fi fi fi for i in $tunnels; do run_cmd -a "$(nls 'Shutting down tunnel interface') $i" /sbin/ifdown tnlcfg-$i boot run_cmd -a "$(nls 'Removing tunnel') $i" /sbin/tnldown $i boot done for i in $(find_ldap_interfaces) ; do run_cmd -a "$(nls 'Shutting down interface from LDAP') $i" /sbin/ifdown $i boot done for i in $interfaces_sit_boot $interfaces_boot ; do run_cmd -a "$(nls 'Shutting down interface') $i" /sbin/ifdown $i boot done for i in $(ip link show | awk -F":" ' (/UP/) && ($2 !~ "lo|atm|lec|nas") { gsub(/@.*/,NIL); print $2; } ') ; do show "Shutting down unconfigured interface %s" "$i" ip addr flush dev $i 2>&1 | grep -v "Nothing to flush" if (ip link set $i down); then ok; else fail; fi done network_deinit rm -f /var/lock/subsys/network ;; status) nls "Configured devices:" echo "lo $interfaces" nls "Configured tunnels:" echo "$tunnels" echo nls "Currently inactive devices and tunnels:" /sbin/ip link show | awk -F":" '(/^[0-90-90-9]:/) && ! (/UP/) { print $2 }' | xargs nls "Currently active devices and tunnels:" /sbin/ip link show | awk -F":" ' (/UP/) { print $2 }' | xargs ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0 # This must be last line ! # vi:syntax=sh:tw=78:ts=8:sw=4