aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ppp/ip-up.ipv6to44
-rw-r--r--ppp/ipv6-down55
-rw-r--r--ppp/ipv6-up99
-rwxr-xr-xsysconfig/network-scripts/ifup-ipv616
-rwxr-xr-xsysconfig/network-scripts/ifup-sit10
-rwxr-xr-xsysconfig/network-scripts/init.ipv6-global6
-rw-r--r--sysconfig/network-scripts/network-functions-ipv622
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