From fd9d65dd43fedbba9988ba1b2cd98437ffab1492 Mon Sep 17 00:00:00 2001 From: itojun <> Date: Sun, 2 Jan 2000 05:14:52 +0000 Subject: [PATCH] ipv6 autoconf on hosts (non-routers). to do this, 1. in sysctl.conf, add these lines: net.inet6.ip6.forwarding=0 net.inet6.ip6.accept_rtadv=1 2. in hostname.foo, add rtsol specifying two or more interfaces with "rtsol" may result in strange behavior - ipv6 spec does not permit multi-interface node to be autoconfig'ed. --- src/etc/netstart | 18 +++++++++++++++++- src/etc/sysctl.conf | 5 +++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/etc/netstart b/src/etc/netstart index 66191565..b2630d00 100644 --- a/src/etc/netstart +++ b/src/etc/netstart @@ -1,6 +1,6 @@ #!/bin/sh - # -# $OpenBSD: netstart,v 1.55 2000/01/02 04:38:17 todd Exp $ +# $OpenBSD: netstart,v 1.56 2000/01/02 05:14:52 itojun Exp $ # Returns true if $1 contains only alphanumerics isalphanumeric() { @@ -53,6 +53,8 @@ if ifconfig lo0 inet6 >/dev/null 2>&1; then # disallow "internal" addresses to appear on the wire. route add -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject route add -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject + + rtsolif="" else ip6kernel=NO fi @@ -95,6 +97,9 @@ for hn in /etc/hostname.*; do ifconfig $if $name $mask $bcaddr $ext1 $ext2 down cmd="dhclient $if" ;; + "rtsol") + rtsolif="$rtsolif $if" + ;; "up") # The only one of these guaranteed to be set is $if # the remaining ones exist so that media controls work @@ -143,6 +148,17 @@ for hn in /etc/hostname.*; do eval "$cmd" done < /etc/hostname.$if done + +if [ "$ip6kernel" = "YES" -a "x$rtsolif" != "x" ]; then + fw=`sysctl -n net.inet6.ip6.forwarding` + ra=`sysctl -n net.inet6.ip6.accept_rtadv` + if [ "x$fw" = "x0" -a "x$ra" = "x1" ]; then + rtsol $rtsolif + else + echo "WARNING: inconsistent config - check /etc/sysctl.conf for IPv6 autoconf" + fi +fi + for bn in /etc/bridgename.*; do # Strip off /etc/bridgename. prefix if=${bn#/etc/bridgename.} diff --git a/src/etc/sysctl.conf b/src/etc/sysctl.conf index 6e794543..0b06eb5c 100644 --- a/src/etc/sysctl.conf +++ b/src/etc/sysctl.conf @@ -1,9 +1,10 @@ -# $OpenBSD: sysctl.conf,v 1.14 1999/12/30 19:38:42 provos Exp $ +# $OpenBSD: sysctl.conf,v 1.15 2000/01/02 05:14:52 itojun Exp $ # This files contains a list of sysctl options the user wants set at # boot time. # ie. #net.inet.ip.forwarding=1 # 1=Permit forwarding (routing) of packets -#net.inet.ip6.forwarding=1 # 1=Permit forwarding (routing) of packets +#net.inet6.ip6.forwarding=1 # 1=Permit forwarding (routing) of packets +#net.inet6.ip6.accept_rtadv=1 # 1=Permit IPv6 autoconf (forwarding must be 0) #net.inet.tcp.rfc1323=0 # 0=disable TCP RFC1323 extensions (for if tcp is slow) #net.inet.esp.enable=1 # 1=Enable the ESP IPSec protocol #net.inet.ah.enable=1 # 1=Enable the AH IPSec protocol