ip6addrctl revision 197139
180709Sjake#!/bin/sh
280709Sjake#
380709Sjake# $FreeBSD: head/etc/rc.d/ip6addrctl 197139 2009-09-12 22:13:41Z hrs $
480709Sjake#
580709Sjake
680709Sjake# PROVIDE: ip6addrctl
780709Sjake# REQUIRE: FILESYSTEMS
880709Sjake# BEFORE: netif
980709Sjake# KEYWORD: nojail
1080709Sjake
1180709Sjake. /etc/rc.subr
1280709Sjake
1380709Sjakename="ip6addrctl"
1481337Sobrienrcvar=`set_rcvar`
1580709Sjakestart_cmd="ip6addrctl_start"
1680709Sjakestop_cmd="ip6addrctl_stop"
1781337Sobrienextra_commands="status prefer_ipv6 prefer_ipv4"
1880709Sjakestatus_cmd="ip6addrctl"
1980709Sjakeprefer_ipv6_cmd="ip6addrctl_prefer_ipv6"
2080709Sjakeprefer_ipv4_cmd="ip6addrctl_prefer_ipv4"
2180709Sjake
2280709Sjakeip6addrctl_prefer_ipv6()
2380709Sjake{
2480709Sjake	ip6addrctl flush >/dev/null 2>&1
2580709Sjake	ip6addrctl add ::1/128		50	0
2680709Sjake	ip6addrctl add ::/0		40	1
2780709Sjake	ip6addrctl add 2002::/16	30	2
2880709Sjake	ip6addrctl add ::/96		20	3
29145153Smarius	ip6addrctl add ::ffff:0:0/96	10	4
30145153Smarius	checkyesno ip6addrctl_verbose && ip6addrctl
31145153Smarius}
32118239Speter
33118239Speterip6addrctl_prefer_ipv4()
3480709Sjake{
3580709Sjake	ip6addrctl flush >/dev/null 2>&1
3682910Sjake	ip6addrctl add ::ffff:0:0/96	50	0
3780709Sjake	ip6addrctl add ::1/128		40	1
3891783Sjake	ip6addrctl add ::/0		30	2
3984186Sjake	ip6addrctl add 2002::/16	20	3
4080709Sjake	ip6addrctl add ::/96		10	4
4180709Sjake	checkyesno ip6addrctl_verbose && ip6addrctl
4281381Sjake}
4381381Sjake
4480709Sjakeip6addrctl_start()
45166105Smarius{
4697001Sjake	if ifconfig lo0 inet6 >/dev/null 2>&1; then
47166105Smarius		# We have IPv6 support in kernel.
48166105Smarius
49166105Smarius		# install the policy of the address selection algorithm.
50166105Smarius		if [ -f /etc/ip6addrctl.conf ]; then
5180709Sjake			ip6addrctl flush >/dev/null 2>&1
5280709Sjake			ip6addrctl install /etc/ip6addrctl.conf
5389052Sjake			checkyesno ip6addrctl_verbose && ip6addrctl
54166105Smarius		else
5580709Sjake			if checkyesno ipv6_prefer; then
56163146Skmacy				ip6addrctl_prefer_ipv6
57163965Skmacy			else
58163146Skmacy				ip6addrctl_prefer_ipv4
59163146Skmacy			fi
60166105Smarius		fi
6180709Sjake	fi
6283756Sjake}
6383756Sjake
6483366Sjulianip6addrctl_stop()
6591360Sjake{
6680709Sjake	if ifconfig lo0 inet6 >/dev/null 2>&1; then
6791224Sjake		# We have IPv6 support in kernel.
6891224Sjake		ip6addrctl flush >/dev/null 2>&1
69182768Smarius	fi
70182768Smarius}
71182768Smarius
72182768Smariusload_rc_config $name
7381381Sjakerun_rc_command "$1"
74182768Smarius