Mailing List Archive

svn commit: vpnc r490 - /branches/vpnc-nortel/vpnc-script /trunk/vpnc-script
Author: Antonio Borneo
Date: Sat Jan 14 08:55:16 2012
New Revision: 490

Log:
Add IPv6 support for Solaris (and maybe BSD)

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>

Modified:
branches/vpnc-nortel/vpnc-script
trunk/vpnc-script

Modified: branches/vpnc-nortel/vpnc-script
==============================================================================
--- branches/vpnc-nortel/vpnc-script (original)
+++ branches/vpnc-nortel/vpnc-script Sat Jan 14 08:55:16 2012
@@ -73,8 +73,10 @@
fi
if [ "$OS" = "SunOS" ]; then
route_syntax_interface="-interface"
+ route_syntax_plumb="plumb"
else
route_syntax_interface=""
+ route_syntax_plumb=""
fi

if [ -x /sbin/resolvconf ]; then # Optional tool on Debian, Ubuntu, Gentoo
@@ -107,10 +109,18 @@
fi

# If the netmask is provided, it contains the address _and_ netmask
- if [ -n "$INTERNAL_IP6_NETMASK" -a -n "$IPROUTE" ]; then
+ if [ -n "$IPROUTE" ]; then
+ if [ -n "$INTERNAL_IP6_NETMASK" ]; then
$IPROUTE -6 addr add $INTERNAL_IP6_NETMASK dev $TUNDEV
- elif [ -n "$INTERNAL_IP6_ADDRESS" -a -n "$IPROUTE" ]; then
+ elif [ -n "$INTERNAL_IP6_ADDRESS" ]; then
$IPROUTE -6 addr add $INTERNAL_IP6_ADDRESS/128 dev $TUNDEV
+ fi
+ else
+ if [ -n "$INTERNAL_IP6_NETMASK" ]; then
+ ifconfig "$TUNDEV" inet6 $route_syntax_plumb $INTERNAL_IP6_NETMASK $ifconfig_syntax_ptp $INTERNAL_IP6_ADDRESS mtu $MTU up
+ elif [ -n "$INTERNAL_IP6_ADDRESS" ]; then
+ ifconfig "$TUNDEV" inet6 $route_syntax_plumb $INTERNAL_IP6_ADDRESS/128 $ifconfig_syntax_ptp $INTERNAL_IP6_ADDRESS mtu $MTU up
+ fi
fi
}

@@ -118,6 +128,11 @@
case "$OS" in
NetBSD) # and probably others...
ifconfig "$TUNDEV" destroy
+ ;;
+ SunOS)
+ if [ -n "$INTERNAL_IP6_ADDRESS" ]; then
+ ifconfig "$TUNDEV" inet6 unplumb
+ fi
;;
esac
}
@@ -248,22 +263,25 @@
}

set_ipv6_default_route() {
- # FIXME
+ route add -inet6 default "$INTERNAL_IP6_ADDRESS" $route_syntax_interface
+ }
+
+ set_ipv6_network_route() {
+ NETWORK="$1"
+ NETMASK="$2"
+ route add -inet6 -net "$NETWORK/$NETMASK" "$INTERNAL_IP6_ADDRESS" $route_syntax_interface
:
}

- set_ipv6_network_route() {
- # FIXME
+ reset_ipv6_default_route() {
+ route $route_syntax_del -inet6 default "$INTERNAL_IP6_ADDRESS"
:
}

- reset_ipv6_default_route() {
- # FIXME
- :
- }
-
del_ipv6_network_route() {
- # FIXME
+ NETWORK="$1"
+ NETMASK="$2"
+ route $route_syntax_del -inet6 "$NETWORK/$NETMASK" "$INTERNAL_IP6_ADDRESS"
:
}

@@ -581,10 +599,10 @@
while [ $i -lt $CISCO_IPV6_SPLIT_INC ] ; do
eval NETWORK="\${CISCO_IPV6_SPLIT_INC_${i}_ADDR}"
eval NETMASKLEN="\${CISCO_IPV6_SPLIT_INC_${i}_MASKLEN}"
- if [ $NETMASKLEN -eq 128 ]; then
+ if [ $NETMASKLEN -eq 0 ]; then
+ reset_ipv6_default_route
+ else
del_ipv6_network_route "$NETWORK" "$NETMASKLEN"
- else
- reset_ipv6_default_route
fi
i=`expr $i + 1`
done

Modified: trunk/vpnc-script
==============================================================================
--- trunk/vpnc-script (original)
+++ trunk/vpnc-script Sat Jan 14 08:55:16 2012
@@ -73,8 +73,10 @@
fi
if [ "$OS" = "SunOS" ]; then
route_syntax_interface="-interface"
+ route_syntax_plumb="plumb"
else
route_syntax_interface=""
+ route_syntax_plumb=""
fi

if [ -x /sbin/resolvconf ]; then # Optional tool on Debian, Ubuntu, Gentoo
@@ -107,10 +109,18 @@
fi

# If the netmask is provided, it contains the address _and_ netmask
- if [ -n "$INTERNAL_IP6_NETMASK" -a -n "$IPROUTE" ]; then
+ if [ -n "$IPROUTE" ]; then
+ if [ -n "$INTERNAL_IP6_NETMASK" ]; then
$IPROUTE -6 addr add $INTERNAL_IP6_NETMASK dev $TUNDEV
- elif [ -n "$INTERNAL_IP6_ADDRESS" -a -n "$IPROUTE" ]; then
+ elif [ -n "$INTERNAL_IP6_ADDRESS" ]; then
$IPROUTE -6 addr add $INTERNAL_IP6_ADDRESS/128 dev $TUNDEV
+ fi
+ else
+ if [ -n "$INTERNAL_IP6_NETMASK" ]; then
+ ifconfig "$TUNDEV" inet6 $route_syntax_plumb $INTERNAL_IP6_NETMASK $ifconfig_syntax_ptp $INTERNAL_IP6_ADDRESS mtu $MTU up
+ elif [ -n "$INTERNAL_IP6_ADDRESS" ]; then
+ ifconfig "$TUNDEV" inet6 $route_syntax_plumb $INTERNAL_IP6_ADDRESS/128 $ifconfig_syntax_ptp $INTERNAL_IP6_ADDRESS mtu $MTU up
+ fi
fi
}

@@ -118,6 +128,11 @@
case "$OS" in
NetBSD) # and probably others...
ifconfig "$TUNDEV" destroy
+ ;;
+ SunOS)
+ if [ -n "$INTERNAL_IP6_ADDRESS" ]; then
+ ifconfig "$TUNDEV" inet6 unplumb
+ fi
;;
esac
}
@@ -248,22 +263,25 @@
}

set_ipv6_default_route() {
- # FIXME
+ route add -inet6 default "$INTERNAL_IP6_ADDRESS" $route_syntax_interface
+ }
+
+ set_ipv6_network_route() {
+ NETWORK="$1"
+ NETMASK="$2"
+ route add -inet6 -net "$NETWORK/$NETMASK" "$INTERNAL_IP6_ADDRESS" $route_syntax_interface
:
}

- set_ipv6_network_route() {
- # FIXME
+ reset_ipv6_default_route() {
+ route $route_syntax_del -inet6 default "$INTERNAL_IP6_ADDRESS"
:
}

- reset_ipv6_default_route() {
- # FIXME
- :
- }
-
del_ipv6_network_route() {
- # FIXME
+ NETWORK="$1"
+ NETMASK="$2"
+ route $route_syntax_del -inet6 "$NETWORK/$NETMASK" "$INTERNAL_IP6_ADDRESS"
:
}

@@ -581,10 +599,10 @@
while [ $i -lt $CISCO_IPV6_SPLIT_INC ] ; do
eval NETWORK="\${CISCO_IPV6_SPLIT_INC_${i}_ADDR}"
eval NETMASKLEN="\${CISCO_IPV6_SPLIT_INC_${i}_MASKLEN}"
- if [ $NETMASKLEN -eq 128 ]; then
+ if [ $NETMASKLEN -eq 0 ]; then
+ reset_ipv6_default_route
+ else
del_ipv6_network_route "$NETWORK" "$NETMASKLEN"
- else
- reset_ipv6_default_route
fi
i=`expr $i + 1`
done

_______________________________________________
vpnc-devel mailing list
vpnc-devel@unix-ag.uni-kl.de
https://lists.unix-ag.uni-kl.de/mailman/listinfo/vpnc-devel
http://www.unix-ag.uni-kl.de/~massar/vpnc/