ip6addrctl revision 1.1
11.1Schristos#!/bin/sh 21.1Schristos# 31.1Schristos# $FreeBSD: head/etc/rc.d/ip6addrctl 270836 2014-08-30 07:08:10Z hrs $ 41.1Schristos# 51.1Schristos 61.1Schristos# PROVIDE: ip6addrctl 71.1Schristos# REQUIRE: root bootconf mountcritlocal tty 81.1Schristos 91.1Schristos. /etc/rc.subr 101.1Schristos 111.1Schristosname="ip6addrctl" 121.1Schristosrcvar="ip6addrctl_enable" 131.1Schristosstart_cmd="ip6addrctl_start" 141.1Schristosstop_cmd="ip6addrctl_stop" 151.1Schristosextra_commands="status prefer_ipv6 prefer_ipv4" 161.1Schristosstatus_cmd="ip6addrctl" 171.1Schristosprefer_ipv6_cmd="ip6addrctl_prefer_ipv6" 181.1Schristosprefer_ipv4_cmd="ip6addrctl_prefer_ipv4" 191.1Schristosconfig_file="/etc/ip6addrctl.conf" 201.1Schristos 211.1SchristosIP6ADDRCTL_CMD="/usr/sbin/ip6addrctl" 221.1Schristos 231.1Schristosip6addrctl_prefer_ipv6() 241.1Schristos{ 251.1Schristos ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1 261.1Schristos cat <<EOT | ${IP6ADDRCTL_CMD} install /dev/stdin 271.1Schristos ::1/128 50 0 281.1Schristos ::/0 40 1 291.1Schristos ::ffff:0:0/96 35 4 301.1Schristos 2002::/16 30 2 311.1Schristos 2001::/32 5 5 321.1Schristos fc00::/7 3 13 331.1Schristos ::/96 1 3 341.1Schristos fec0::/10 1 11 351.1Schristos 3ffe::/16 1 12 361.1SchristosEOT 371.1Schristos} 381.1Schristos 391.1Schristosip6addrctl_prefer_ipv4() 401.1Schristos{ 411.1Schristos ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1 421.1Schristos cat <<EOT | ${IP6ADDRCTL_CMD} install /dev/stdin 431.1Schristos ::1/128 50 0 441.1Schristos ::/0 40 1 451.1Schristos ::ffff:0:0/96 100 4 461.1Schristos 2002::/16 30 2 471.1Schristos 2001::/32 5 5 481.1Schristos fc00::/7 3 13 491.1Schristos ::/96 1 3 501.1Schristos fec0::/10 1 11 511.1Schristos 3ffe::/16 1 12 521.1SchristosEOT 531.1Schristos} 541.1Schristos 551.1Schristosip6addrctl_start() 561.1Schristos{ 571.1Schristos # install the policy of the address selection algorithm. 581.1Schristos case "${ip6addrctl_policy}" in 591.1Schristos [Aa][Uu][Tt][Oo]) 601.1Schristos if [ -r "${config_file}" -a -s "${config_file}" ]; then 611.1Schristos ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1 621.1Schristos ${IP6ADDRCTL_CMD} install "${config_file}" 631.1Schristos else 641.1Schristos if checkyesno ipv6_activate_all_interfaces; then 651.1Schristos ip6addrctl_prefer_ipv6 661.1Schristos elif [ -n "$(list_vars ifconfig_\*_ipv6)" ]; then 671.1Schristos ip6addrctl_prefer_ipv6 681.1Schristos else 691.1Schristos ip6addrctl_prefer_ipv4 701.1Schristos fi 711.1Schristos fi 721.1Schristos ;; 731.1Schristos ipv4_prefer) 741.1Schristos ip6addrctl_prefer_ipv4 751.1Schristos ;; 761.1Schristos ipv6_prefer) 771.1Schristos ip6addrctl_prefer_ipv6 781.1Schristos ;; 791.1Schristos *) 801.1Schristos warn "\$ip6addrctl_policy is invalid: ${ip6addrctl_policy}. " \ 811.1Schristos " \"ipv4_prefer\" is used instead." 821.1Schristos ip6addrctl_prefer_ipv4 831.1Schristos ;; 841.1Schristos esac 851.1Schristos 861.1Schristos if checkyesno ip6addrctl_verbose; then 871.1Schristos echo 'Address selection policy table for IPv4 and IPv6:' 881.1Schristos ${IP6ADDRCTL_CMD} 891.1Schristos fi 901.1Schristos} 911.1Schristos 921.1Schristosip6addrctl_stop() 931.1Schristos{ 941.1Schristos ip6addrctl flush >/dev/null 2>&1 951.1Schristos} 961.1Schristos 971.1Schristosload_rc_config $name 981.1Schristosrun_rc_command "$1" 99