aboutsummaryrefslogtreecommitdiffstats
path: root/sysconfig/network-scripts/network-functions-ipv6
diff options
context:
space:
mode:
authorBill Nottingham <notting@redhat.com>2001-01-29 21:28:15 +0000
committerBill Nottingham <notting@redhat.com>2001-01-29 21:28:15 +0000
commit9a44d5192982d82acb2ed25cd5ea34df74181d1f (patch)
treece1e534d68200dc0928048a01242d9088ae83797 /sysconfig/network-scripts/network-functions-ipv6
parent3835851978d0a389aa085bc3ce8c7bb9bf8fa355 (diff)
downloadinitscripts-9a44d5192982d82acb2ed25cd5ea34df74181d1f.tar
initscripts-9a44d5192982d82acb2ed25cd5ea34df74181d1f.tar.gz
initscripts-9a44d5192982d82acb2ed25cd5ea34df74181d1f.tar.bz2
initscripts-9a44d5192982d82acb2ed25cd5ea34df74181d1f.tar.xz
initscripts-9a44d5192982d82acb2ed25cd5ea34df74181d1f.zip
add ipv6 support (#23576)
Diffstat (limited to 'sysconfig/network-scripts/network-functions-ipv6')
-rw-r--r--sysconfig/network-scripts/network-functions-ipv6341
1 files changed, 341 insertions, 0 deletions
diff --git a/sysconfig/network-scripts/network-functions-ipv6 b/sysconfig/network-scripts/network-functions-ipv6
new file mode 100644
index 00000000..71c0f005
--- /dev/null
+++ b/sysconfig/network-scripts/network-functions-ipv6
@@ -0,0 +1,341 @@
+#!/bin/sh
+#
+# network-functions-ipv6
+#
+# Taken from:
+# (P) & (C) 1997-2000 Peter Bieringer <pb@bieringer.de>
+
+# DEBUG_IPV6 & 1 "set -x" mode
+# DEBUG_IPV6 & 2 prevents from executing any network configuration
+# DEBUG_IPV6 & 4 shows messages in the test section
+
+#DEBUG_IPV6=$[ 65535 - 1 -2 -4]
+DEBUG_IPV6=0
+
+# Return values
+# 0 = ok
+# 1 = error occurs
+# 2 = not enabled, i.e. no IPv6 kernel support or switched off by configuration
+
+##### Test for IPv6 capabilites
+
+function test_ipv6()
+{
+ if [ -z $DEBUG_IPV6 ] ; then DEBUG_IPV6=0; fi
+
+ if ! [ $[ $DEBUG_IPV6 & 4 ] = 0 ] ; then
+ echo " Tests for IPv6"
+ fi
+
+ # Test for IPv6 kernel
+ if ! [ $[ $DEBUG_IPV6 & 4 ] = 0 ] ; then
+ echo -n " Test kernel for IPv6..."
+ fi
+
+ if ! [ -f /proc/net/if_inet6 ]; then
+ echo "Do not found IPv6 in kernel, try to load module"
+ modprobe ipv6
+
+ if ! [ -f /proc/net/if_inet6 ]; then
+ if ! [ $[ $DEBUG_IPV6 & 4 ] = 0 ] ; then
+ echo "Not compiled for IPv6 - stop!"
+ else
+ echo "Kernel not compiled for IPv6 - stop!"
+ fi
+ return 2
+ fi
+ else
+ if ! [ $[ $DEBUG_IPV6 & 4 ] = 0 ] ; then
+ echo " Ok!"
+ fi
+ fi
+
+ # Test for IPv6 enabled needed binaries
+ if ! [ $[ $DEBUG_IPV6 & 4 ] = 0 ] ; then
+ echo n " Test binaries for IPv6 capability..."
+ fi
+
+ if ! ifconfig -? 2>&1 | grep -q "(IPv6)"; then
+ echo "'`which ifconfig`' (net-tools) not compiled for IPv6 - stop!"
+ return 2
+ fi
+
+ if ! route -? 2>&1 | grep -q "(IPv6)"; then
+ echo "'`which route`' (net-tools) not compiled for IPv6 - stop!"
+ return 2
+ fi
+
+ if ! [ $[ $DEBUG_IPV6 & 4 ] = 0 ] ; then
+ echo " Ok!"
+ fi
+
+ # Info about executing
+ if [ $[ $DEBUG_IPV6 > 0 ] = 1 ]; then
+ echo " Executing in DEBUG_IPV6 mode: $DEBUG_IPV6"
+ fi
+}
+
+##### Static route configuration
+
+# Display usage
+function ifup_ipv6_route_usage() {
+ echo $"Usage: $0 IPv6-network IPv6-gateway [device]"
+}
+
+# set route
+function ifup_ipv6_route() {
+ networkipv6=$1
+ gatewayipv6=$2
+ device=$3 # maybe empty
+
+ if [ -z $networkipv6 ]; then
+ echo $"Missing option IPv6-network'"
+ ifup_ipv6_route_usage
+ return 1
+ fi
+
+ if [ -z $gatewayipv6 ]; then
+ echo $"Missing option 'IPv6-gateway'"
+ ifup_ipv6_route_usage
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set -x
+
+ if [ -z $device ]; then
+ route -A inet6 add $networkipv6 gw $gatewayipv6
+ else
+ route -A inet6 add $networkipv6 gw $gatewayipv6 dev $device
+ fi
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set +x
+}
+
+# delete route
+function ifdown_ipv6_route() {
+ networkipv6=$1
+ gatewayipv6=$2
+ device=$3 # maybe empty
+
+ if [ -z $networkipv6 ]; then
+ echo $"Missing option IPv6-network'"
+ ifup_ipv6_route_usage
+ return 1
+ fi
+
+ if [ -z $gatewayipv6 ]; then
+ echo $"Missing option 'IPv6-gateway'"
+ ifup_ipv6_route_usage
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set -x
+
+ if [ -z $device ]; then
+ route -A inet6 del $networkipv6 gw $gatewayipv6
+ else
+ route -A inet6 del $networkipv6 gw $gatewayipv6 dev $device
+ fi
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set +x
+}
+
+
+##### tunnel configuration
+
+# Display usage
+function ifup_ipv6_tunnel_usage() {
+ echo $"Usage: $0 interfacename IPv4-tunneladdress IPv6-route"
+}
+
+## Configure tunnels up
+function ifup_ipv6_tunnel() {
+ device=$1
+ addressipv4tunnel=$2
+ routeipv6=$3
+
+ if [ -z $device ]; then
+ echo $"Missing option 'device'"
+ ifup_ipv6_tunnel_usage
+ return 1
+ fi
+
+ if [ -z $addressipv4tunnel ]; then
+ echo $"Missing option 'IPv4-tunneladdress'"
+ ifup_ipv6_tunnel_usage
+ return 1
+ fi
+
+ if [ -z $routeipv6 ]; then
+ echo $"Missing option 'IPv6-route'"
+ ifup_ipv6_tunnel_usage
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set -x
+
+ # enable IPv6-over-IPv4 tunnels
+ if ifconfig sit0 | grep -q "UP "; then
+ # already up, do nothing
+ true
+ else
+ # basic tunnel device to up
+ if [ $[ $DEBUG_IPV6 & 2 ] = 0 ] ; then
+ ifconfig sit0 up
+ fi
+ fi
+
+ if [ $[ $DEBUG_IPV6 & 2 ] = 0 ]; then
+ # Set up a tunnel
+ route -A inet6 add $routeipv6 gw ::$addressipv4tunnel dev sit0
+ fi
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set +x
+}
+
+## Configure tunnels down
+
+function ifdown_ipv6_tunnel() {
+ device=$1
+ addressipv4tunnel=$2
+ routeipv6=$3
+
+ if [ -z $device ]; then
+ echo $"Missing option 'device'"
+ ifup_ipv6_tunnel_usage
+ return 1
+ fi
+
+ if [ -z $addressipv4tunnel ]; then
+ echo $"Missing option 'IPv4-tunneladdress'"
+ ifup_ipv6_tunnel_usage
+ return 1
+ fi
+
+ if [ -z $routeipv6 ]; then
+ echo $"Missing option 'IPv6-route'"
+ ifup_ipv6_tunnel_usage
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set -x
+
+ if [ $[ $DEBUG_IPV6 & 2 ] = 0 ]; then
+ # Set up a tunnel
+ route -A inet6 del $routeipv6 gw ::$addressipv4tunnel dev sit0
+ fi
+
+ # disable IPv6-over-IPv4 tunnels (if no longer a tunnel is up)
+ if route -A inet6 -n | grep sit0 | grep -v -q "^::"; then
+ # existing routes, do nothing
+ true
+ else
+ # basic tunnel device to down
+ if [ $[ $DEBUG_IPV6 & 2 ] = 0 ] ; then
+ ifconfig sit0 down
+ fi
+ fi
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set +x
+}
+
+
+##### Interface configuration
+
+# Display usage
+function ifup_ipv6_usage() {
+ echo $"Usage: $0 interfacename IPv6-address IPv6-prefixlength"
+}
+
+## Configure interfaces up
+function ifup_ipv6_real() {
+ device=$1
+ address=$2
+ prefixlength=$3
+
+ if [ -z $device ]; then
+ echo $"Missing option 'device'"
+ ifup_ipv6_usage
+ return 1
+ fi
+
+ if [ -z $address ]; then
+ echo $"Missing option 'IPv6-address'"
+ ifup_ipv6_usage
+ return 1
+ fi
+
+ if [ -z $prefixlength ]; then
+ echo $"Missing option 'Prefixlength'"
+ ifup_ipv6_usage
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set -x
+
+ if [ $[ $DEBUG_IPV6 & 2 ] = 0 ]; then
+ ifconfig $device add $address/$length || return 2
+ fi
+
+ if [ $[ $DEBUG_IPV6 & 2 ] = 0 ]; then
+ route -A inet6 add $address/$prefixlength dev $device || return 2
+ fi
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set +x
+}
+
+
+## Configure interfaces down
+function ifdown_ipv6_real() {
+ device=$1
+ address=$2
+ prefixlength=$3
+
+ if [ -z $device ]; then
+ echo $"Missing option 'device'"
+ ifup_ipv6_usage
+ return 1
+ fi
+
+ if [ -z $address ]; then
+ echo $"Missing option 'IPv6-address'"
+ ifup_ipv6_usage
+ return 1
+ fi
+
+ if [ -z $prefixlength ]; then
+ echo $"Missing option 'Prefixlength'"
+ ifup_ipv6_usage
+ return 1
+ fi
+
+ # Run IPv6 test
+ test_ipv6 || return
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set -x
+
+
+ if [ $[ $DEBUG_IPV6 & 2 ] = 0 ]; then
+ route -A inet6 del $address/$prefixlength dev $device || return 2
+ fi
+ if [ $[ $DEBUG_IPV6 & 2 ] = 0 ]; then
+ ifconfig $device del $address/$length || return 2
+ fi
+
+ [ $[ $DEBUG_IPV6 & 1 ] = 0 ] || set +x
+}