ip6addrctl revision 246598
1#!/bin/sh 2# 3# $FreeBSD: stable/9/etc/rc.d/ip6addrctl 246598 2013-02-09 17:56:57Z ume $ 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="ip6addrctl_enable" 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 ::ffff:0:0/96 35 4 35 ip6addrctl add 2002::/16 30 2 36 ip6addrctl add 2001::/32 5 5 37 ip6addrctl add fc00::/7 3 13 38 ip6addrctl add ::/96 1 3 39 ip6addrctl add fec0::/10 1 11 40 ip6addrctl add 3ffe::/16 1 12 41 checkyesno ip6addrctl_verbose && ip6addrctl 42} 43 44ip6addrctl_prefer_ipv4() 45{ 46 afexists inet6 || return 0 47 48 ip6addrctl flush >/dev/null 2>&1 49 ip6addrctl add ::1/128 50 0 50 ip6addrctl add ::/0 40 1 51 ip6addrctl add ::ffff:0:0/96 100 4 52 ip6addrctl add 2002::/16 30 2 53 ip6addrctl add 2001::/32 5 5 54 ip6addrctl add fc00::/7 3 13 55 ip6addrctl add ::/96 1 3 56 ip6addrctl add fec0::/10 1 11 57 ip6addrctl add 3ffe::/16 1 12 58 checkyesno ip6addrctl_verbose && ip6addrctl 59} 60 61ip6addrctl_start() 62{ 63 afexists inet6 || return 0 64 65 # install the policy of the address selection algorithm. 66 case "${ip6addrctl_policy}" in 67 [Aa][Uu][Tt][Oo]) 68 if [ -r "${config_file}" -a -s "${config_file}" ]; then 69 ip6addrctl flush >/dev/null 2>&1 70 ip6addrctl install "${config_file}" 71 checkyesno ip6addrctl_verbose && ip6addrctl 72 else 73 if checkyesno ipv6_activate_all_interfaces; then 74 ip6addrctl_prefer_ipv6 75 else 76 ip6addrctl_prefer_ipv4 77 fi 78 fi 79 ;; 80 ipv4_prefer) 81 ip6addrctl_prefer_ipv4 82 ;; 83 ipv6_prefer) 84 ip6addrctl_prefer_ipv6 85 ;; 86 [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) 87 # Backward compatibility when ipv6_prefer=YES 88 ip6addrctl_prefer_ipv6 89 ;; 90 [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) 91 # Backward compatibility when ipv6_prefer=NO 92 ip6addrctl_prefer_ipv4 93 ;; 94 [Nn][Oo][Nn][Ee]) 95 ip6addrctl flush >/dev/null 2>&1 96 ;; 97 *) 98 warn "\$ip6addrctl_policy is invalid: ${ip6addrctl_policy}. " \ 99 " \"ipv4_prefer\" is used instead." 100 ip6addrctl_prefer_ipv4 101 ;; 102 esac 103} 104 105ip6addrctl_stop() 106{ 107 afexists inet6 || return 0 108 109 ip6addrctl flush >/dev/null 2>&1 110} 111 112load_rc_config $name 113run_rc_command "$1" 114