| 1 | #!/bin/sh |
|---|
| 2 | # |
|---|
| 3 | # ifup-sit |
|---|
| 4 | # |
|---|
| 5 | # |
|---|
| 6 | # Taken from: |
|---|
| 7 | # (P) & (C) 2000-2003 by Peter Bieringer <pb@bieringer.de> |
|---|
| 8 | # |
|---|
| 9 | # You will find more information on the initscripts-ipv6 homepage at |
|---|
| 10 | # http://www.deepspace6.net/projects/initscripts-ipv6.html |
|---|
| 11 | # |
|---|
| 12 | # RHL integration assistance by Pekka Savola <pekkas@netcore.fi> |
|---|
| 13 | # |
|---|
| 14 | # Version: 2003-09-08 |
|---|
| 15 | # |
|---|
| 16 | # Uses following information from /etc/sysconfig/network: |
|---|
| 17 | # IPV6_DEFAULTDEV=<device>: controls default route (optional) |
|---|
| 18 | # IPV6_DEFAULTGW=<address>: controls default route (optional) |
|---|
| 19 | # |
|---|
| 20 | # Uses following information from /etc/sysconfig/network-scripts/ifcfg-$1: |
|---|
| 21 | # DEVICE=<device> |
|---|
| 22 | # IPV6INIT=yes|no: controls IPv6 configuration for this interface |
|---|
| 23 | # IPV6_MTU=<MTU for IPv6>: controls IPv6 MTU for this link (optional) |
|---|
| 24 | # |
|---|
| 25 | # For static tunnels |
|---|
| 26 | # IPV6TUNNELIPV4=<IPv4 address>: IPv4 address of remote tunnel endpoint |
|---|
| 27 | # IPV6TUNNELIPV4LOCAL=<IPv4 address>: (optional) local IPv4 address of tunnel |
|---|
| 28 | # IPV6ADDR=<IPv6 address>[/<prefix length>]: (optional) local IPv6 address of a numbered tunnel |
|---|
| 29 | # IPV6ADDR_SECONDARIES="<IPv6 address>[/<prefix length>] ..." (optional) additional local IPv6 addresses |
|---|
| 30 | # |
|---|
| 31 | |
|---|
| 32 | |
|---|
| 33 | . /etc/sysconfig/network |
|---|
| 34 | |
|---|
| 35 | cd /etc/sysconfig/network-scripts |
|---|
| 36 | . ./network-functions |
|---|
| 37 | |
|---|
| 38 | CONFIG=$1 |
|---|
| 39 | [ -f "$CONFIG" ] || CONFIG=ifcfg-$CONFIG |
|---|
| 40 | source_config |
|---|
| 41 | |
|---|
| 42 | # IPv6 don't need aliases anymore, config is skipped |
|---|
| 43 | REALDEVICE=`echo ${DEVICE} | sed 's/:.*//g'` |
|---|
| 44 | [ "$DEVICE" != "$REALDEVICE" ] && exit 0 |
|---|
| 45 | |
|---|
| 46 | # Test whether IPv6 configuration is enabled for this interface, else stop |
|---|
| 47 | [ "$IPV6INIT" = "yes" ] || exit 0 |
|---|
| 48 | |
|---|
| 49 | [ -f /etc/sysconfig/network-scripts/network-functions-ipv6 ] || exit 1 |
|---|
| 50 | . /etc/sysconfig/network-scripts/network-functions-ipv6 |
|---|
| 51 | |
|---|
| 52 | |
|---|
| 53 | # IPv6 test, module loaded, exit if system is not IPv6-ready |
|---|
| 54 | ipv6_test || exit 1 |
|---|
| 55 | |
|---|
| 56 | # Generic tunnel device sit0 is not supported here |
|---|
| 57 | if [ "$DEVICE" = "sit0" ]; then |
|---|
| 58 | echo $"Device '$DEVICE' isn't supported here, use IPV6_AUTOTUNNEL setting and restart (IPv6) networking" |
|---|
| 59 | exit 1 |
|---|
| 60 | fi |
|---|
| 61 | |
|---|
| 62 | if [ -z "$IPV6TUNNELIPV4" ]; then |
|---|
| 63 | echo $"Missing remote IPv4 address of tunnel, configuration is not valid" |
|---|
| 64 | exit 1 |
|---|
| 65 | fi |
|---|
| 66 | |
|---|
| 67 | # Test device status |
|---|
| 68 | ipv6_test_device_status $DEVICE |
|---|
| 69 | if [ $? = 0 ]; then |
|---|
| 70 | # device is already up |
|---|
| 71 | echo $"Device '$DEVICE' is already up, please shutdown first" |
|---|
| 72 | exit 1 |
|---|
| 73 | fi |
|---|
| 74 | |
|---|
| 75 | # Create tunnel |
|---|
| 76 | ipv6_add_tunnel_device $DEVICE $IPV6TUNNELIPV4 "" $IPV6TUNNELIPV4LOCAL || exit 1 |
|---|
| 77 | |
|---|
| 78 | # Set IPv6 MTU, if given |
|---|
| 79 | if [ -n "$IPV6_MTU" ]; then |
|---|
| 80 | ipv6_set_mtu $DEVICE $IPV6_MTU |
|---|
| 81 | fi |
|---|
| 82 | |
|---|
| 83 | # Apply local IPv6 address, if given (numbered tunnel) |
|---|
| 84 | if [ -n "$IPV6ADDR" ]; then |
|---|
| 85 | ipv6_add_addr_on_device $DEVICE $IPV6ADDR |
|---|
| 86 | fi |
|---|
| 87 | |
|---|
| 88 | # Setup additional IPv6 addresses from list, if given |
|---|
| 89 | if [ -n "$IPV6ADDR_SECONDARIES" ]; then |
|---|
| 90 | for ipv6addr in $IPV6ADDR_SECONDARIES; do |
|---|
| 91 | ipv6_add_addr_on_device $DEVICE $ipv6addr |
|---|
| 92 | done |
|---|
| 93 | fi |
|---|
| 94 | |
|---|
| 95 | # Setup default IPv6 route, check are done by function |
|---|
| 96 | if [ -n "$IPV6_DEFAULTDEV" -o -n "$IPV6_DEFAULTGW" ]; then |
|---|
| 97 | ipv6_set_default_route "$IPV6_DEFAULTGW" "$IPV6_DEFAULTDEV" "$DEVICE" |
|---|
| 98 | fi |
|---|
| 99 | |
|---|
| 100 | # Setup additional static IPv6 routes on specified interface, if given |
|---|
| 101 | if [ -f /etc/sysconfig/static-routes-ipv6 ]; then |
|---|
| 102 | LC_ALL=C grep -w "^$DEVICE" /etc/sysconfig/static-routes-ipv6 | while read device ipv6route args; do |
|---|
| 103 | ipv6_add_route $ipv6route :: $DEVICE |
|---|
| 104 | done |
|---|
| 105 | fi |
|---|
| 106 | |
|---|
| 107 | # Setup additional static IPv6 routes (newer config style) |
|---|
| 108 | if [ -f "/etc/sysconfig/network-scripts/route6-$REALDEVICE" ]; then |
|---|
| 109 | cat "/etc/sysconfig/network-scripts/route6-$REALDEVICE" | sed 's/#.*//g' | grep -v '^[[:space:]]*$' | while read line; do |
|---|
| 110 | ipv6_exec_ip -6 route add $line |
|---|
| 111 | done |
|---|
| 112 | fi |
|---|