Blame network-scripts/init.ipv6-global

Packit Service 18eaa3
#!/bin/bash
Packit Service 18eaa3
#
Packit Service 18eaa3
# init.ipv6-global
Packit Service 18eaa3
#
Packit Service 18eaa3
#
Packit Service 18eaa3
# Taken from: init.ipv6-global
Packit Service 18eaa3
# (P) & (C) 2001-2005 by Peter Bieringer <pb@bieringer.de>
Packit Service 18eaa3
#
Packit Service 18eaa3
#  You will find more information on the initscripts-ipv6 homepage at
Packit Service 18eaa3
#   http://www.deepspace6.net/projects/initscripts-ipv6.html
Packit Service 18eaa3
#
Packit Service 18eaa3
# RHL integration assistance by Pekka Savola <pekkas@netcore.fi>
Packit Service 18eaa3
#
Packit Service 18eaa3
# Version: 2005-01-04
Packit Service 18eaa3
#
Packit Service 18eaa3
# Calling parameters:
Packit Service 18eaa3
#  $1: action (currently supported: start|stop|showsysctl)
Packit Service 18eaa3
#  $2: position for start|stop (currently supported: pre|post)
Packit Service 18eaa3
#
Packit Service 18eaa3
# Called by hooks from /etc/[rc.d/]init.d/network
Packit Service 18eaa3
#
Packit Service 18eaa3
# Uses following information from /etc/sysconfig/network:
Packit Service 18eaa3
#  IPV6FORWARDING=yes|no: controls global IPv6 forwarding (default: no)
Packit Service 18eaa3
#  IPV6_AUTOCONF=yes|no: controls global automatic IPv6 configuration
Packit Service 18eaa3
#   (default: yes if IPV6FORWARDING=no, no if IPV6FORWARDING=yes)
Packit Service 18eaa3
#  IPV6_AUTOTUNNEL=yes|no: controls automatic IPv6 tunneling (default: no)
Packit Service 18eaa3
#  IPV6_DEFAULTGW=<ipv6address[%interface]> [optional]
Packit Service 18eaa3
#  IPV6_DEFAULTDEV=<interface> [optional]
Packit Service 18eaa3
#
Packit Service 18eaa3
Packit Service 18eaa3
. /etc/sysconfig/network
Packit Service 18eaa3
Packit Service 18eaa3
cd /etc/sysconfig/network-scripts
Packit Service 18eaa3
. ./network-functions
Packit Service 18eaa3
Packit Service 18eaa3
# Get action and hook position
Packit Service 18eaa3
ACTION="$1"
Packit Service 18eaa3
POSITION="$2"
Packit Service 18eaa3
Packit Service 18eaa3
[ -f /etc/sysconfig/network-scripts/network-functions-ipv6 ] || exit 1
Packit Service 18eaa3
. /etc/sysconfig/network-scripts/network-functions-ipv6
Packit Service 18eaa3
Packit Service 18eaa3
# Initialize IPv6, depending on caller option
Packit Service 18eaa3
case $ACTION in
Packit Service 18eaa3
start)
Packit Service 18eaa3
    case $POSITION in
Packit Service 18eaa3
    pre)
Packit Service 18eaa3
        # IPv6 test, module loaded, exit if system is not IPv6-ready
Packit Service 18eaa3
        ipv6_test || exit 1
Packit Service 18eaa3
Packit Service 18eaa3
        if [ "$IPV6FORWARDING" = "yes" ]; then
Packit Service 18eaa3
            ipv6_global_forwarding=1
Packit Service 18eaa3
            ipv6_global_auto=0
Packit Service 18eaa3
        else
Packit Service 18eaa3
            ipv6_global_forwarding=0
Packit Service 18eaa3
            if [ "$IPV6_AUTOCONF" = "no" ]; then
Packit Service 18eaa3
                ipv6_global_auto=0
Packit Service 18eaa3
            else
Packit Service 18eaa3
                ipv6_global_auto=1
Packit Service 18eaa3
            fi
Packit Service 18eaa3
        fi
Packit Service 18eaa3
Packit Service 18eaa3
        if [ ! "$IPV6_SET_SYSCTLS" = "no" ]; then
Packit Service 18eaa3
            # Reset IPv6 sysctl switches for "all", "default" and still existing devices
Packit Service 18eaa3
            for i in /proc/sys/net/ipv6/conf/* ; do
Packit Service 18eaa3
                interface=${i##*/}
Packit Service 18eaa3
                sinterface=${interface/.//}
Packit Service 18eaa3
                # Host/Router behaviour for the interface
Packit Service 18eaa3
                /sbin/sysctl -e -w net.ipv6.conf.$sinterface.forwarding=$ipv6_global_forwarding >/dev/null 2>&1
Packit Service 18eaa3
Packit Service 18eaa3
                # Autoconfiguration and redirect handling for Hosts
Packit Service 18eaa3
                /sbin/sysctl -e -w net.ipv6.conf.$sinterface.accept_ra=$ipv6_global_auto >/dev/null 2>&1
Packit Service 18eaa3
                /sbin/sysctl -e -w net.ipv6.conf.$sinterface.accept_redirects=$ipv6_global_auto >/dev/null 2>&1
Packit Service 18eaa3
            done
Packit Service 18eaa3
        fi
Packit Service 18eaa3
        ;;
Packit Service 18eaa3
Packit Service 18eaa3
    post)
Packit Service 18eaa3
        # IPv6 test, module loaded, exit if system is not IPv6-ready
Packit Service 18eaa3
        ipv6_test || exit 1
Packit Service 18eaa3
Packit Service 18eaa3
        if [ "$IPV6_AUTOTUNNEL" = "yes" ]; then
Packit Service 18eaa3
            ipv6_enable_autotunnel
Packit Service 18eaa3
            # autotunnel interface doesn't require a MTU setup
Packit Service 18eaa3
        fi
Packit Service 18eaa3
Packit Service 18eaa3
        ## Add some routes which should never appear on the wire
Packit Service 18eaa3
        # Unreachable IPv4-only addresses, normally blocked by source address selection
Packit Service 18eaa3
        /sbin/ip route add unreach    ::ffff:0.0.0.0/96
Packit Service 18eaa3
        # Unreachable IPv4-mapped addresses
Packit Service 18eaa3
        /sbin/ip route add unreach    ::0.0.0.0/96
Packit Service 18eaa3
        # Unreachable 6to4: IPv4 multicast, reserved, limited broadcast
Packit Service 18eaa3
        /sbin/ip route add unreach    2002:e000::/19
Packit Service 18eaa3
        # Unreachable 6to4: IPv4 loopback
Packit Service 18eaa3
        /sbin/ip route add unreach    2002:7f00::/24
Packit Service 18eaa3
        # Unreachable 6to4: IPv4 private (RFC 1918)
Packit Service 18eaa3
        /sbin/ip route add unreach    2002:0a00::/24
Packit Service 18eaa3
        /sbin/ip route add unreach    2002:ac10::/28
Packit Service 18eaa3
        /sbin/ip route add unreach    2002:c0a8::/32
Packit Service 18eaa3
        # Unreachable 6to4: IPv4 private (APIPA / DHCP link-local)
Packit Service 18eaa3
        /sbin/ip route add unreach    2002:a9fe::/32
Packit Service 18eaa3
        # Unreachable IPv6: 6bone test addresses
Packit Service 18eaa3
        /sbin/ip route add unreach    3ffe:ffff::/32
Packit Service 18eaa3
Packit Service 18eaa3
        # Set default route for autotunnel, if specified
Packit Service 18eaa3
        if [ "$IPV6_DEFAULTDEV" = "sit0" -a "$IPV6_AUTOTUNNEL" = "yes" ]; then
Packit Service 18eaa3
            if [ -n "$IPV6_DEFAULTGW" ]; then
Packit Service 18eaa3
                ipv6_set_default_route $IPV6_DEFAULTGW $IPV6_DEFAULTDEV sit0
Packit Service 18eaa3
            elif [ -n "$IPV6_DEFAULTDEV" ]; then
Packit Service 18eaa3
                ipv6_set_default_route "" $IPV6_DEFAULTDEV sit0
Packit Service 18eaa3
            fi
Packit Service 18eaa3
        fi
Packit Service 18eaa3
        ;;
Packit Service 18eaa3
Packit Service 18eaa3
    *)
Packit Service 18eaa3
        echo "Usage: $0 $1 {pre|post}"
Packit Service 18eaa3
        ;;
Packit Service 18eaa3
Packit Service 18eaa3
    esac
Packit Service 18eaa3
    ;;
Packit Service 18eaa3
Packit Service 18eaa3
stop)
Packit Service 18eaa3
    case $POSITION in
Packit Service 18eaa3
    pre)
Packit Service 18eaa3
        ;;
Packit Service 18eaa3
Packit Service 18eaa3
    post)
Packit Service 18eaa3
        # IPv6 test, no module loaded, exit if system is not IPv6-ready
Packit Service 18eaa3
        ipv6_test testonly || exit 0
Packit Service 18eaa3
Packit Service 18eaa3
        if [ ! "$IPV6_SET_SYSCTLS" = "no" ]; then
Packit Service 18eaa3
            for i in /proc/sys/net/ipv6/conf/* ; do
Packit Service 18eaa3
                interface=${i##*/}
Packit Service 18eaa3
                sinterface=${interface/.//}
Packit Service 18eaa3
                # Assume Host behaviour
Packit Service 18eaa3
                /sbin/sysctl -e -w net.ipv6.conf.$sinterface.forwarding=0 >/dev/null 2>&1
Packit Service 18eaa3
Packit Service 18eaa3
                # Disable autoconfiguration and redirects
Packit Service 18eaa3
                /sbin/sysctl -e -w net.ipv6.conf.$sinterface.accept_ra=0 >/dev/null 2>&1
Packit Service 18eaa3
                /sbin/sysctl -e -w net.ipv6.conf.$sinterface.accept_redirects=0 >/dev/null 2>&1
Packit Service 18eaa3
            done
Packit Service 18eaa3
        fi
Packit Service 18eaa3
Packit Service 18eaa3
        # Cleanup still existing tunnel devices
Packit Service 18eaa3
        ipv6_cleanup_tunnel_devices
Packit Service 18eaa3
Packit Service 18eaa3
        # Shut down generic tunnel interface now
Packit Service 18eaa3
        if ipv6_test_device_status sit0 ; then
Packit Service 18eaa3
            /sbin/ip link set sit0 down
Packit Service 18eaa3
        fi
Packit Service 18eaa3
        ;;
Packit Service 18eaa3
Packit Service 18eaa3
    *)
Packit Service 18eaa3
        echo "Usage: $0 $1 {pre|post}"
Packit Service 18eaa3
        ;;
Packit Service 18eaa3
Packit Service 18eaa3
    esac
Packit Service 18eaa3
    ;;
Packit Service 18eaa3
Packit Service 18eaa3
*)
Packit Service 18eaa3
    echo $"Usage: $0 {start|stop|reload|restart|showsysctl}"
Packit Service 18eaa3
    exit 1
Packit Service 18eaa3
    ;;
Packit Service 18eaa3
esac