ip6addrctl revision 225736
1#!/bin/sh 2# 3# $FreeBSD: stable/9/etc/rc.d/ip6addrctl 212579 2010-09-13 19:55:40Z hrs $ 4# 5 6# PROVIDE: ip6addrctl 7# REQUIRE: FILESYSTEMS 8# BEFORE: netif 9# KEYWORD: nojail 10 11. /etc/rc.subr 12. /etc/network.subr 13 14name="ip6addrctl" 15rcvar=`set_rcvar` 16start_cmd="ip6addrctl_start" 17stop_cmd="ip6addrctl_stop" 18extra_commands="status prefer_ipv6 prefer_ipv4" 19status_cmd="ip6addrctl" 20prefer_ipv6_cmd="ip6addrctl_prefer_ipv6" 21prefer_ipv4_cmd="ip6addrctl_prefer_ipv4" 22config_file="/etc/ip6addrctl.conf" 23 24set_rcvar_obsolete ipv6_enable ipv6_activate_all_interfaces 25set_rcvar_obsolete ipv6_prefer ip6addrctl_policy 26 27ip6addrctl_prefer_ipv6() 28{ 29 afexists inet6 || return 0 30 31 ip6addrctl flush >/dev/null 2>&1 32 ip6addrctl add ::1/128 50 0 33 ip6addrctl add ::/0 40 1 34 ip6addrctl add 2002::/16 30 2 35 ip6addrctl add ::/96 20 3 36 ip6addrctl add ::ffff:0:0/96 10 4 37 checkyesno ip6addrctl_verbose && ip6addrctl 38} 39 40ip6addrctl_prefer_ipv4() 41{ 42 afexists inet6 || return 0 43 44 ip6addrctl flush >/dev/null 2>&1 45 ip6addrctl add ::ffff:0:0/96 50 0 46 ip6addrctl add ::1/128 40 1 47 ip6addrctl add ::/0 30 2 48 ip6addrctl add 2002::/16 20 3 49 ip6addrctl add ::/96 10 4 50 checkyesno ip6addrctl_verbose && ip6addrctl 51} 52 53ip6addrctl_start() 54{ 55 afexists inet6 || return 0 56 57 # install the policy of the address selection algorithm. 58 case "${ip6addrctl_policy}" in 59 [Aa][Uu][Tt][Oo]) 60 if [ -r "${config_file}" -a -s "${config_file}" ]; then 61 ip6addrctl flush >/dev/null 2>&1 62 ip6addrctl install "${config_file}" 63 checkyesno ip6addrctl_verbose && ip6addrctl 64 else 65 if checkyesno ipv6_activate_all_interfaces; then 66 ip6addrctl_prefer_ipv6 67 else 68 ip6addrctl_prefer_ipv4 69 fi 70 fi 71 ;; 72 ipv4_prefer) 73 ip6addrctl_prefer_ipv4 74 ;; 75 ipv6_prefer) 76 ip6addrctl_prefer_ipv6 77 ;; 78 [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) 79 # Backward compatibility when ipv6_prefer=YES 80 ip6addrctl_prefer_ipv6 81 ;; 82 [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) 83 # Backward compatibility when ipv6_prefer=NO 84 ip6addrctl_prefer_ipv4 85 ;; 86 *) 87 warn "\$ip6addrctl_policy is invalid: ${ip6addrctl_policy}. " \ 88 " \"ipv4_prefer\" is used instead." 89 ip6addrctl_prefer_ipv4 90 ;; 91 esac 92} 93 94ip6addrctl_stop() 95{ 96 afexists inet6 || return 0 97 98 ip6addrctl flush >/dev/null 2>&1 99} 100 101load_rc_config $name 102run_rc_command "$1" 103