aboutsummaryrefslogtreecommitdiffstats
path: root/etc/rc.d/init.d/network
diff options
context:
space:
mode:
Diffstat (limited to 'etc/rc.d/init.d/network')
-rwxr-xr-xetc/rc.d/init.d/network290
1 files changed, 290 insertions, 0 deletions
diff --git a/etc/rc.d/init.d/network b/etc/rc.d/init.d/network
new file mode 100755
index 00000000..68e95f62
--- /dev/null
+++ b/etc/rc.d/init.d/network
@@ -0,0 +1,290 @@
+#! /bin/bash
+#
+# network Bring up/down networking
+#
+# chkconfig: - 10 90
+# description: Activates/Deactivates all network interfaces configured to \
+# start at boot time.
+# probe: false
+#
+### BEGIN INIT INFO
+# Provides: network
+# Should-Start: irda resolvconf iptables ip6tables NetworkManager-wait-online NetworkManager
+# Should-Stop: irda resolvconf
+# Default-Start: 2 3 4 5
+# Short-Description: Bring up/down networking
+# Description: Activates/Deactivates all network interfaces configured to
+# start at boot time.
+### END INIT INFO
+
+# Source function library.
+. /etc/init.d/functions
+
+if [ ! -f /etc/sysconfig/network ]; then
+ echo "NETWORKING=no" > /etc/sysconfig/network
+ exit 6
+fi
+
+. /etc/sysconfig/network
+
+if [ -f /etc/sysconfig/pcmcia ]; then
+ . /etc/sysconfig/pcmcia
+fi
+
+
+# Check that networking is up.
+is_false "${NETWORKING}" && exit 6
+
+# if the ip configuration utility isn't around we can't function.
+[ -x /sbin/ip ] || exit 1
+
+
+CWD=$(pwd)
+cd /etc/sysconfig/network-scripts
+
+. ./network-functions
+
+# find all the interfaces besides loopback.
+# ignore aliases, alternative configurations, and editor backup files
+interfaces=$(ls ifcfg-* | \
+ LC_ALL=C sed -e "$__sed_discard_ignored_files" \
+ -e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \
+ -e '/ifcfg-[ A-Za-z0-9#\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
+ LC_ALL=C grep -v '^ifcfg-' | \
+ LC_ALL=C sort -k 1,1 -k 2n | \
+ LC_ALL=C sed -e 's/ \([0-9]\)/\1/')
+rc=0
+
+net_log $"You are using 'network' service provided by 'network-scripts', which are now deprecated." warning network >&2
+net_log $"'network-scripts' will be removed from distribution in near future." warning network >&2
+net_log $"It is advised to switch to 'NetworkManager' instead for network management." warning network >&2
+
+# This disables additional warnings during the boot process:
+export DEPRECATION_WARNING_ISSUED='true'
+
+# See how we were called.
+case "$1" in
+start)
+ [ "$EUID" != "0" ] && exit 4
+ rc=0
+ # IPv6 hook (pre IPv4 start)
+ if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
+ /etc/sysconfig/network-scripts/init.ipv6-global start pre
+ fi
+
+ apply_sysctl
+
+ #tell NM to reload its configuration
+ if [ "$(LANG=C nmcli -t --fields running general status 2>/dev/null)" = "running" ]; then
+ nmcli connection reload
+ fi
+
+ # bring up loopback interface
+ action $"Bringing up loopback interface: " ./ifup ifcfg-lo
+
+ if is_true "$VLAN" ; then
+ if [ ! -d /proc/net/vlan ] && ! modprobe 8021q >/dev/null 2>&1 ; then
+ net_log $"No 802.1Q VLAN support available in kernel."
+ fi
+ fi
+
+ vlaninterfaces=""
+ vpninterfaces=""
+ xdslinterfaces=""
+ bridgeinterfaces=""
+
+ # bring up all other interfaces configured to come up at boot time
+ for i in $interfaces; do
+ unset DEVICE TYPE SLAVE NM_CONTROLLED
+ eval $(LANG=C grep -F "DEVICE=" ifcfg-$i)
+ eval $(LANG=C grep -F "TYPE=" ifcfg-$i)
+ eval $(LANG=C grep -F "SLAVE=" ifcfg-$i)
+ eval $(LANG=C grep -F "NM_CONTROLLED=" ifcfg-$i)
+
+ if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi
+
+ if is_true "$SLAVE" && ( ! is_nm_running || is_false "$NM_CONTROLLED" ) ; then
+ continue
+ fi
+
+ if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then
+ vpninterfaces="$vpninterfaces $i"
+ continue
+ fi
+ if [ "$TYPE" = "xDSL" -o "$TYPE" = "Modem" ]; then
+ xdslinterfaces="$xdslinterfaces $i"
+ continue
+ fi
+
+ if [ "$TYPE" = "Bridge" ]; then
+ bridgeinterfaces="$bridgeinterfaces $i"
+ continue
+ fi
+ if [ "$TYPE" = "IPSEC" ] || [ "$TYPE" = "IPIP" ] || [ "$TYPE" = "GRE" ]; then
+ vpninterfaces="$vpninterfaces $i"
+ continue
+ fi
+
+ if [ "${DEVICE%%.*}" != "$DEVICE" -o "${DEVICE##vlan}" != "$DEVICE" ] ; then
+ vlaninterfaces="$vlaninterfaces $i"
+ continue
+ fi
+
+ if ( . ./ifcfg-"$i" ; is_false "$ONBOOT" ) ; then
+ # this loads the module, to preserve ordering
+ is_available $i
+ continue
+ fi
+ action $"Bringing up interface $i: " ./ifup $i boot
+ [ $? -ne 0 ] && rc=1
+ done
+
+ # Bring up xDSL and VPN interfaces
+ for i in $vlaninterfaces $bridgeinterfaces $xdslinterfaces $vpninterfaces ; do
+ if ( . ./ifcfg-"$i" ; ! is_false "$ONBOOT" ) ; then
+ action $"Bringing up interface $i: " ./ifup $i boot
+ [ $? -ne 0 ] && rc=1
+ fi
+ done
+
+ # Add non interface-specific static-routes.
+ if [ -f /etc/sysconfig/static-routes ]; then
+ if [ -x /sbin/route ]; then
+ grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
+ /sbin/route add -$args
+ done
+ else
+ net_log $"Legacy static-route support not available: /sbin/route not found"
+ fi
+ fi
+
+ # IPv6 hook (post IPv4 start)
+ if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
+ /etc/sysconfig/network-scripts/init.ipv6-global start post
+ fi
+ # Run this again to catch any interface-specific actions
+ apply_sysctl
+
+ touch /var/lock/subsys/network
+
+ # Fixed delay
+ [ -n "${NETWORKDELAY}" ] && [ -z "${WAIT_UNTIL_REACHABLE}" ] && /bin/sleep "${NETWORKDELAY}"
+
+ # Adaptive delay
+ # It tests if network connection is ready via ping
+ if [ -n "${WAIT_UNTIL_REACHABLE}" ] ; then
+ [ -z "${NETWORKDELAY}" ] && NETWORKDELAY=30
+ TIMEOUT=0
+ IPV=""
+ ipcalc -c -6 "${WAIT_UNTIL_REACHABLE}" &>/dev/null && IPV="-6"
+ while [ $TIMEOUT -le $NETWORKDELAY ] ; do
+ ping $IPV -q -c 1 -W 1 "${WAIT_UNTIL_REACHABLE}" >/dev/null && break
+ TIMEOUT=$(( TIMEOUT + 1 ))
+ done
+ [ $TIMEOUT -gt $NETWORKDELAY ] && net_log $"Target is not reachable, but timeout was already reached. Continuing anyway."
+ fi
+ ;;
+stop)
+ [ "$EUID" != "0" ] && exit 4
+ # Don't shut the network down if root or /usr is on NFS or a network
+ # block device.
+ root_fstype=$(gawk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/" && $3 != "rootfs") { print $3; }}' /proc/mounts)
+ usr_fstype=$(gawk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/usr" && $3 != "rootfs") { print $3; }}' /proc/mounts)
+
+ if [[ "${root_fstype}" == nfs* || "${usr_fstype}" == nfs* ]] || systemctl show --property=RequiredBy -- -.mount usr.mount | grep -q 'remote-fs.target' ; then
+ net_log $"rootfs or /usr is on network filesystem, leaving network up"
+ exit 1
+ fi
+
+ unset root_fstype usr_fstype
+
+ # Don't shut the network down when shutting down the system if configured
+ # as such in sysconfig
+ if is_false "$IFDOWN_ON_SHUTDOWN"; then
+ if systemctl is-system-running | grep -q 'stopping'; then
+ net_log $"system is shutting down, leaving interfaces up as requested" info
+ exit 0
+ fi
+ fi
+
+ vlaninterfaces=""
+ vpninterfaces=""
+ xdslinterfaces=""
+ bridgeinterfaces=""
+ remaining=""
+ rc=0
+
+ # get list of bonding, vpn, and xdsl interfaces
+ for i in $interfaces; do
+ unset DEVICE TYPE
+ eval $(LANG=C grep -F "DEVICE=" ifcfg-$i)
+ eval $(LANG=C grep -F "TYPE=" ifcfg-$i)
+
+ if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi
+
+ if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then
+ vpninterfaces="$vpninterfaces $i"
+ continue
+ fi
+ if [ "$TYPE" = "IPSEC" ] || [ "$TYPE" = "IPIP" ] || [ "$TYPE" = "GRE" ]; then
+ vpninterfaces="$vpninterfaces $i"
+ continue
+ fi
+ if [ "$TYPE" = "Bridge" ]; then
+ bridgeinterfaces="$bridgeinterfaces $i"
+ continue
+ fi
+ if [ "$TYPE" = "xDSL" -o "$TYPE" = "Modem" ]; then
+ xdslinterfaces="$xdslinterfaces $i"
+ continue
+ fi
+
+ if [ "${DEVICE%%.*}" != "$DEVICE" -o "${DEVICE##vlan}" != "$DEVICE" ] ; then
+ vlaninterfaces="$vlaninterfaces $i"
+ continue
+ fi
+ remaining="$remaining $i"
+ done
+
+ for i in $vpninterfaces $xdslinterfaces $bridgeinterfaces $vlaninterfaces $remaining; do
+ unset DEVICE TYPE
+ (. ./ifcfg-$i
+ if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi
+
+ if ! check_device_down $DEVICE; then
+ action $"Shutting down interface $i: " ./ifdown $i boot
+ [ $? -ne 0 ] && rc=1
+ fi
+ )
+ done
+
+ action $"Shutting down loopback interface: " ./ifdown ifcfg-lo
+
+ sysctl -w net.ipv4.ip_forward=0 > /dev/null 2>&1
+
+ # IPv6 hook (post IPv4 stop)
+ if [ -x /etc/sysconfig/network-scripts/init.ipv6-global ]; then
+ /etc/sysconfig/network-scripts/init.ipv6-global stop post
+ fi
+
+ rm -f /var/lock/subsys/network
+ ;;
+status)
+ echo $"Configured devices:"
+ echo lo $interfaces
+
+ echo $"Currently active devices:"
+ echo $(/sbin/ip -o link show up | awk -F ": " '{ print $2 }')
+ ;;
+restart|force-reload)
+ cd "$CWD"
+ $0 stop
+ $0 start
+ rc=$?
+ ;;
+*)
+ echo $"Usage: $0 {start|stop|status|restart|force-reload}"
+ exit 2
+esac
+
+exit $rc