diff options
-rw-r--r-- | ppp/ip-up.ipv6to4 | 4 | ||||
-rw-r--r-- | ppp/ipv6-down | 55 | ||||
-rw-r--r-- | ppp/ipv6-up | 99 | ||||
-rwxr-xr-x | sysconfig/network-scripts/ifup-ipv6 | 16 | ||||
-rwxr-xr-x | sysconfig/network-scripts/ifup-sit | 10 | ||||
-rwxr-xr-x | sysconfig/network-scripts/init.ipv6-global | 6 | ||||
-rw-r--r-- | sysconfig/network-scripts/network-functions-ipv6 | 22 |
7 files changed, 176 insertions, 36 deletions
diff --git a/ppp/ip-up.ipv6to4 b/ppp/ip-up.ipv6to4 index 26f6f671..723554ff 100644 --- a/ppp/ip-up.ipv6to4 +++ b/ppp/ip-up.ipv6to4 @@ -9,7 +9,7 @@ # You will find more information on the initscripts-ipv6 homepage at # http://www.deepspace6.net/projects/initscripts-ipv6.html # -# Version 2005-09-22 +# Version: 2005-09-22 # # Calling parameters: # $1: interface name @@ -169,7 +169,7 @@ if [ "$IPV6TO4INIT" = "yes" ]; then ipv6_exec_ip -6 route add $line done fi - + # Cleanup autmatically generated autotunnel (not needed for 6to4) ipv6_del_route "::/96" "::" tun6to4 ipv6_del_addr_on_device tun6to4 "::$ipv4addr/128" diff --git a/ppp/ipv6-down b/ppp/ipv6-down index 1798a3d7..c1f5f5d0 100644 --- a/ppp/ipv6-down +++ b/ppp/ipv6-down @@ -1,8 +1,34 @@ -#!/bin/bash +#!/bin/sh +# +# ipv6-down +# +# Called by pppd after IPV6CP/down was finished +# # This file should not be modified -- make local changes to # /etc/ppp/ipv6-down.local instead +# +# +# Taken from: +# (P) & (C) 2001-2006 by Peter Bieringer <pb@bieringer.de> +# +# You will find more information on the initscripts-ipv6 homepage at +# http://www.deepspace6.net/projects/initscripts-ipv6.html +# +# RHL integration assistance by Pekka Savola <pekkas@netcore.fi> +# +# Calling parameters: +# $1: interface name +# $6: logical interface name (set by pppd option ipparam) +# +# Version 2006-08-02 +# +# Uses following information from /etc/sysconfig/network: +# NETWORKING_IPV6=yes|no: controls IPv6 initialization (global setting) +# +# Uses following information from /etc/sysconfig/network-scripts/ifcfg-$1: +# IPV6INIT=yes|no: controls IPv6 configuration for this interface +# -# Version: 2002-10-30 PATH=/sbin:/usr/sbin:/bin:/usr/bin export PATH @@ -10,26 +36,41 @@ export PATH LOGDEVICE=$6 REALDEVICE=$1 -[ -x /etc/sysconfig/network-scripts/ifdown-ipv6 ] || exit 0 [ -f /etc/sysconfig/network ] || exit 0 . /etc/sysconfig/network -[ "${NETWORKING_IPV6}" = "yes" ] || exit 0 cd /etc/sysconfig/network-scripts . network-functions -. network-functions-ipv6 -CONFIG=$1 +CONFIG=$LOGDEVICE [ -f "$CONFIG" ] || CONFIG=ifcfg-$CONFIG source_config +# Test whether IPv6 should be configured, else stop +[ "${NETWORKING_IPV6}" = "yes" ] || exit 0 + +[ -f /etc/sysconfig/network-scripts/network-functions-ipv6 ] || exit 1 +. /etc/sysconfig/network-scripts/network-functions-ipv6 + [ -x /etc/ppp/ipv6-down.local ] && /etc/ppp/ipv6-down.local "$@" -/etc/sysconfig/network-scripts/ifdown-ipv6 $REALDEVICE if [ "$IPV6_CONTROL_RADVD" = "yes" ]; then # Control running radvd ipv6_trigger_radvd down "$IPV6_RADVD_TRIGGER_ACTION" $IPV6_RADVD_PIDFILE fi +# IPv6 test, no module loaded, exit if system is not IPv6-ready +ipv6_test testonly || exit 0 + +# Test device status +ipv6_test_device_status $REALDEVICE +if [ $? != 0 -a $? != 11 ]; then + # device doesn't exist or other problem occurs + exit 1 +fi + +# Delete all current configured IPv6 addresses on this interface +ipv6_cleanup_device $REALDEVICE + exit 0 diff --git a/ppp/ipv6-up b/ppp/ipv6-up index 6f1f0463..8d545644 100644 --- a/ppp/ipv6-up +++ b/ppp/ipv6-up @@ -1,8 +1,38 @@ -#!/bin/bash +#!/bin/sh +# +# ipv6-up +# +# Called by pppd after IPV6CP/up was finished +# # This file should not be modified -- make local changes to # /etc/ppp/ipv6-up.local instead +# +# Taken from: +# (P) & (C) 2001-2006 by Peter Bieringer <pb@bieringer.de> +# +# You will find more information on the initscripts-ipv6 homepage at +# http://www.deepspace6.net/projects/initscripts-ipv6.html +# +# RHL integration assistance by Pekka Savola <pekkas@netcore.fi> +# +# Calling parameters: +# $1: interface name +# $6: logical interface name (set by pppd option ipparam) +# +# +# Version: 2006-08-02 +# +# Uses following information from "/etc/sysconfig/network": +# NETWORKING_IPV6=yes|no: controls IPv6 initialization (global setting) +# IPV6_DEFAULTDEV=<device>: controls default route (optional) +# +# Uses following information from "/etc/sysconfig/network-scripts/ifcfg-$1": +# IPV6INIT=yes|no: controls IPv6 configuration for this interface +# IPV6ADDR=<IPv6 address>[/<prefix length>]: specify primary static IPv6 address +# IPV6ADDR_SECONDARIES="<IPv6 address>[/<prefix length>] ..." (optional) +# IPV6_MTU=<MTU for IPv6>: controls IPv6 MTU for this link (optional) +# -# Version: 2002-10-30 PATH=/sbin:/usr/sbin:/bin:/usr/bin export PATH @@ -10,26 +40,77 @@ export PATH LOGDEVICE=$6 REALDEVICE=$1 -[ -x /etc/sysconfig/network-scripts/ifup-ipv6 ] || exit 0 [ -f /etc/sysconfig/network ] || exit 0 . /etc/sysconfig/network -[ "${NETWORKING_IPV6}" = "yes" ] || exit 0 cd /etc/sysconfig/network-scripts . network-functions . network-functions-ipv6 -CONFIG=$1 +CONFIG=$LOGDEVICE [ -f "$CONFIG" ] || CONFIG=ifcfg-$CONFIG source_config -/etc/sysconfig/network-scripts/ifup-ipv6 $REALDEVICE +# Test whether IPv6 configuration is enabled for this interface, else stop +[ "$IPV6INIT" = "yes" ] || exit 0 + +# Test whether IPv6 should be configured, else stop +[ "${NETWORKING_IPV6}" = "yes" ] || exit 0 + +[ -f /etc/sysconfig/network-scripts/network-functions-ipv6 ] || exit 1 +. /etc/sysconfig/network-scripts/network-functions-ipv6 + +# IPv6 test, module loaded, exit if system is not IPv6-ready +ipv6_test || exit 1 + +# Test device status +ipv6_test_device_status $REALDEVICE +if [ $? != 0 -a $? != 11 ]; then + # device doesn't exist or other problem occurs + exit 1 +fi + +# Setup IPv6 address on specified interface +if [ -n "$IPV6ADDR" ]; then + ipv6_add_addr_on_device $REALDEVICE $IPV6ADDR || exit 1 +fi + +# Set IPv6 MTU, if given +if [ -n "$IPV6_MTU" ]; then + ipv6_set_mtu $REALDEVICE $IPV6_MTU +fi -if [ "$IPV6_CONTROL_RADVD" = "yes" ]; then - # Control running radvd - ipv6_trigger_radvd up "$IPV6_RADVD_TRIGGER_ACTION" $IPV6_RADVD_PIDFILE +# Setup additional IPv6 addresses from list, if given +if [ -n "$IPV6ADDR_SECONDARIES" ]; then + for ipv6addr in $IPV6ADDR_SECONDARIES; do + ipv6_add_addr_on_device $REALDEVICE $ipv6addr + done fi +# Setup default IPv6 route through device +if [ "$IPV6_DEFAULTDEV" = "$LOGDEVICE" ]; then + ipv6_set_default_route "" "$REALDEVICE" "$REALDEVICE" +fi + +# Setup additional static IPv6 routes on specified interface, if given +if [ -f /etc/sysconfig/static-routes-ipv6 ]; then + LC_ALL=C grep -w "^$LOGDEVICE" /etc/sysconfig/static-routes-ipv6 | while read device args; do + ipv6_add_route $args $REALDEVICE + done +fi + +# Setup additional static IPv6 routes (newer config style) +if [ -f "/etc/sysconfig/network-scripts/route6-$DEVICE" ]; then + cat "/etc/sysconfig/network-scripts/route6-$DEVICE" | sed 's/#.*//g' | grep -v '^[[:space:]]*$' | while read line; do + ipv6_exec_ip -6 route add $line + done +fi + +if [ "$IPV6_CONTROL_RADVD" = "yes" ]; then + # Control running radvd + ipv6_trigger_radvd up "$IPV6_RADVD_TRIGGER_ACTION" $IPV6_RADVD_PIDFILE +fi + [ -x /etc/ppp/ipv6-up.local ] && /etc/ppp/ipv6-up.local "$@" exit 0 diff --git a/sysconfig/network-scripts/ifup-ipv6 b/sysconfig/network-scripts/ifup-ipv6 index 8762129f..8a960f69 100755 --- a/sysconfig/network-scripts/ifup-ipv6 +++ b/sysconfig/network-scripts/ifup-ipv6 @@ -4,14 +4,14 @@ # # # Taken from: -# (P) & (C) 2000-2005 by Peter Bieringer <pb@bieringer.de> +# (P) & (C) 2000-2006 by Peter Bieringer <pb@bieringer.de> # # You will find more information on the initscripts-ipv6 homepage at # http://www.deepspace6.net/projects/initscripts-ipv6.html # # RHL integration assistance by Pekka Savola <pekkas@netcore.fi> # -# Version 2005-09-22 +# Version: 2006-07-20 # # Note: if called (like normally) by /etc/sysconfig/network-scripts/ifup # exit codes aren't handled by "ifup" @@ -88,7 +88,7 @@ if [ $? != 0 -a $? != 11 ]; then fi # Setup IPv6 address on specified interface -if ! [ -z "$IPV6ADDR" ]; then +if [ -n "$IPV6ADDR" ]; then ipv6_add_addr_on_device $DEVICE $IPV6ADDR || exit 1 fi @@ -159,7 +159,7 @@ fi # Setup additional static IPv6 routes on specified interface, if given if [ -f /etc/sysconfig/static-routes-ipv6 ]; then - LC_ALL=C grep -w "^$DEVICE" /etc/sysconfig/static-routes-ipv6 2>/dev/null | while read device args; do + LC_ALL=C grep -w "^$DEVICE" /etc/sysconfig/static-routes-ipv6 | while read device args; do ipv6_add_route $args $DEVICE done fi @@ -212,7 +212,7 @@ if [ "$IPV6TO4INIT" = "yes" ]; then if [ -z "$IPV6TO4_RELAY" ]; then IPV6TO4_RELAY="192.88.99.1" fi - + # Check/generate relay address ipv6to4_relay="`ipv6_create_6to4_relay_address $IPV6TO4_RELAY`" if [ $? -ne 0 ]; then @@ -235,7 +235,7 @@ if [ "$IPV6TO4INIT" = "yes" ]; then if [ -n "$IPV6TO4_MTU" ]; then if [ $IPV6TO4_MTU -gt $tunnelmtu ]; then echo $"Warning: configured MTU '$IPV6TO4_MTU' for 6to4 exceeds maximum limit of '$tunnelmtu', ignored" - else + else tunnelmtu=$IPV6TO4_MTU fi fi @@ -255,7 +255,7 @@ if [ "$IPV6TO4INIT" = "yes" ]; then # Add static routes if [ -f /etc/sysconfig/static-routes-ipv6 ]; then - LC_ALL=C grep -w "^tun6to4" /etc/sysconfig/static-routes-ipv6 2>/dev/null | while read device network gateway; do + LC_ALL=C grep -w "^tun6to4" /etc/sysconfig/static-routes-ipv6 | while read device network gateway; do if [ -z "$network" ]; then continue fi @@ -264,7 +264,7 @@ if [ "$IPV6TO4INIT" = "yes" ]; then fi ipv6_add_route $network $gateway tun6to4 done - fi + fi # Setup additional static IPv6 routes (newer config style) if [ -f "/etc/sysconfig/network-scripts/route6-tun6to4" ]; then diff --git a/sysconfig/network-scripts/ifup-sit b/sysconfig/network-scripts/ifup-sit index 4fa78eb5..d884f026 100755 --- a/sysconfig/network-scripts/ifup-sit +++ b/sysconfig/network-scripts/ifup-sit @@ -11,7 +11,7 @@ # # RHL integration assistance by Pekka Savola <pekkas@netcore.fi> # -# Version 2003-09-08 +# Version: 2003-09-08 # # Uses following information from /etc/sysconfig/network: # NETWORKING_IPV6=yes|no: controls IPv6 initialization (global setting) @@ -100,10 +100,10 @@ fi if [ -n "$IPV6_DEFAULTDEV" -o -n "$IPV6_DEFAULTGW" ]; then ipv6_set_default_route "$IPV6_DEFAULTGW" "$IPV6_DEFAULTDEV" "$DEVICE" fi - -# Setup additional static IPv6 routes on specified interface, if given + +# Setup additional static IPv6 routes on specified interface, if given if [ -f /etc/sysconfig/static-routes-ipv6 ]; then - LC_ALL=C grep -w "^$DEVICE" /etc/sysconfig/static-routes-ipv6 2>/dev/null | while read device ipv6route args; do + LC_ALL=C grep -w "^$DEVICE" /etc/sysconfig/static-routes-ipv6 | while read device ipv6route args; do ipv6_add_route $ipv6route :: $DEVICE done fi @@ -111,6 +111,6 @@ fi # Setup additional static IPv6 routes (newer config style) if [ -f "/etc/sysconfig/network-scripts/route6-$REALDEVICE" ]; then cat "/etc/sysconfig/network-scripts/route6-$REALDEVICE" | sed 's/#.*//g' | grep -v '^[[:space:]]*$' | while read line; do - ipv6_exec_ip -6 route add $line + ipv6_exec_ip -6 route add $line done fi diff --git a/sysconfig/network-scripts/init.ipv6-global b/sysconfig/network-scripts/init.ipv6-global index 48187fc5..faec4d18 100755 --- a/sysconfig/network-scripts/init.ipv6-global +++ b/sysconfig/network-scripts/init.ipv6-global @@ -11,7 +11,7 @@ # # RHL integration assistance by Pekka Savola <pekkas@netcore.fi> # -# Version 2005-01-04 +# Version: 2005-01-04 # # Calling parameters: # $1: action (currently supported: start|stop|showsysctl) @@ -157,7 +157,7 @@ case $ACTION in echo "Usage: $0 $1 {pre|post}" ;; - esac + esac ;; restart|reload) @@ -180,5 +180,5 @@ case $ACTION in *) echo $"Usage: $0 {start|stop|reload|restart|showsysctl}" exit 1 - ;; + ;; esac diff --git a/sysconfig/network-scripts/network-functions-ipv6 b/sysconfig/network-scripts/network-functions-ipv6 index 5800274c..5b4e0f29 100644 --- a/sysconfig/network-scripts/network-functions-ipv6 +++ b/sysconfig/network-scripts/network-functions-ipv6 @@ -137,6 +137,11 @@ ipv6_log() { fi ;; 'syslog') + # note: logger resides in /usr/bin, but not used by default + if ! [ -x logger ]; then + echo $"ERROR: [ipv6_log] Syslog is chosen, but binary 'logger' doesn't exist or isn't executable" >/dev/stderr + return 3 + fi if [ -z "$txt_name" ]; then logger -p $facility.$priority $message else @@ -185,6 +190,16 @@ ipv6_test() { return 2 fi + if ! [ -x /sbin/ip ]; then + ipv6_log $"Utility 'ip' (package: iproute) doesn't exist or isn't executable - stop" crit $fn + return 2 + fi + + if ! [ -x /sbin/sysctl ]; then + ipv6_log $"Utility 'sysctl' (package: procps) doesn't exist or isn't executable - stop" crit $fn + return 2 + fi + return 0 } @@ -194,6 +209,7 @@ ipv6_test() { getversion_ipv6_functions() { local version_ipv6_functions="`cat /etc/sysconfig/network-scripts/network-functions-ipv6 | LC_ALL=C grep "^# Version:" | awk '{ print $3 }' | sed 's/-//g' | sed 's/[A-Za-z]*$//g'`" echo $version_ipv6_functions + return 0 } @@ -202,6 +218,8 @@ getversion_ipv6_functions() { # $*: <arguments...> # return code: result of execution ipv6_exec_ifconfig() { + local fn="ipv6_exec_ifconfig" + local options=$* LC_ALL=C /sbin/ifconfig $options @@ -614,7 +632,7 @@ ipv6_cleanup_6to4_device() { ipv6_del_addr_on_device ${dev} ${addr} done - # Get all IPv6 routes through given interface via a given gateway and remove them + # Get all IPv6 routes through given interface related to 6to4 and remove them ipv6_exec_ip -6 route show dev $device | LC_ALL=C grep "^2002:" | while read ipv6net dummy; do ipv6_del_route $ipv6net :: $device done @@ -698,7 +716,7 @@ ipv6_test_ipv6_addr_valid() { local address_implicit="`echo $testipv6addr_valid | awk -F/ '{ print $1 }'`" # Test for a valid format - if ! echo "$address_implicit" | LC_ALL=C egrep -q '^[[:xdigit:]:.]*$'; then + if ! echo "$address_implicit" | LC_ALL=C egrep -q '^[[:xdigit:]]|[:\.]*$'; then if [ "$modequiet" != "quiet" ]; then ipv6_log $"Given IPv6 address '$testipv6addr_valid' is not valid" err $fn fi |