X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/tripe/blobdiff_plain/152a2182891fe22eb16f2de6b05574d7b041df5f..HEAD:/svc/tripe-ifup.in diff --git a/svc/tripe-ifup.in b/svc/tripe-ifup.in index 032142c5..63b5b2d6 100644 --- a/svc/tripe-ifup.in +++ b/svc/tripe-ifup.in @@ -46,11 +46,16 @@ fi peer=$1 ifname=$2 family=$3; shift 3 ## Parse the address family. +case "$family" in + INET) ipsz=20 ;; + INET6) ipsz=40 ;; + *) echo >&2 "$0: unknown address family $family"; exit 1 ;; +esac case "$family,$#" in - INET,1) addr=$1 port=4070 ;; - INET,2) addr=$1 port=$2 ;; - INET,*) echo >&2 "$0: bad INET address"; exit 1 ;; - *) echo >&2 "$0: unknown address family $family"; exit 1 ;; + INET,1 | INET6,1) addr=$1 port=4070 ;; + INET,2 | INET6,2) addr=$1 port=$2 ;; + INET,* | INET6,*) echo >&2 "$0: bad $family address"; exit 1 ;; + *) echo >&2 "$0: unknown address family $family"; exit 1 ;; esac ###-------------------------------------------------------------------------- @@ -119,9 +124,6 @@ case $have6,$# in try ip addr add "$a" dev "$ifname" haveaddr6=t done - case ${r6addr+set} in - set) try ip route add $r6addr proto static dev "$ifname" ;; - esac ;; esac @@ -137,13 +139,25 @@ case $haveaddr4,$haveaddr6 in mtu=$P_MTU;; *) pathmtu=$(pathmtu "$addr") - mtu=$(expr "$pathmtu" - 29 - $A_BULK_OVERHEAD) + mtu=$(( $pathmtu - $ipsz - 9 - $A_BULK_OVERHEAD )) ;; esac try ip link set dev "$ifname" up mtu "$mtu" ;; esac +###-------------------------------------------------------------------------- +### Set the peer IPv6 address if any. + +## IPv6 point-to-point links seem broken in Linux. Attach the local and +## remote addresses by hand. +set -- $l6addr +case $have6,$#,${r6addr+set} in + t,[1-9]*,set) + try ip route add $r6addr proto static dev "$ifname" + ;; +esac + ###-------------------------------------------------------------------------- ### Set up routing.