ip6addrctl revision 1.6
1dcae5b9eSmrg#!/bin/sh 2dcae5b9eSmrg# 3dcae5b9eSmrg# $NetBSD: ip6addrctl,v 1.6 2020/07/22 16:50:41 martin Exp $ 4dcae5b9eSmrg# FreeBSD: head/etc/rc.d/ip6addrctl 270836 2014-08-30 07:08:10Z hrs 5dcae5b9eSmrg# 6dcae5b9eSmrg 7dcae5b9eSmrg# PROVIDE: ip6addrctl 8dcae5b9eSmrg# REQUIRE: root bootconf MOUNTCRITLOCAL tty 9dcae5b9eSmrg 10dcae5b9eSmrg$_rc_subr_loaded . /etc/rc.subr 11dcae5b9eSmrg 12dcae5b9eSmrgname="ip6addrctl" 13dcae5b9eSmrgrcvar="ip6addrctl" 14dcae5b9eSmrgstart_cmd="ip6addrctl_start" 15dcae5b9eSmrgstop_cmd="ip6addrctl_stop" 16dcae5b9eSmrgextra_commands="status prefer_ipv6 prefer_ipv4" 17dcae5b9eSmrgstatus_cmd="ip6addrctl" 18dcae5b9eSmrgprefer_ipv6_cmd="ip6addrctl_prefer_ipv6" 19dcae5b9eSmrgprefer_ipv4_cmd="ip6addrctl_prefer_ipv4" 20dcae5b9eSmrgconfig_file="/etc/ip6addrctl.conf" 21dcae5b9eSmrg 22dcae5b9eSmrgIP6ADDRCTL_CMD="/usr/sbin/ip6addrctl" 23dcae5b9eSmrg 24dcae5b9eSmrgip6addrctl_prefer_ipv6() 25dcae5b9eSmrg{ 26dcae5b9eSmrg ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1 27dcae5b9eSmrg cat <<EOT | ${IP6ADDRCTL_CMD} install /dev/stdin 28dcae5b9eSmrg ::1/128 50 0 29dcae5b9eSmrg ::/0 40 1 30dcae5b9eSmrg ::ffff:0:0/96 35 4 31dcae5b9eSmrg 2002::/16 30 2 32dcae5b9eSmrg 2001::/32 5 5 33dcae5b9eSmrg fc00::/7 3 13 34dcae5b9eSmrg ::/96 1 3 35dcae5b9eSmrg fec0::/10 1 11 36dcae5b9eSmrg 3ffe::/16 1 12 37dcae5b9eSmrgEOT 38dcae5b9eSmrg} 39dcae5b9eSmrg 40dcae5b9eSmrgip6addrctl_prefer_ipv4() 41dcae5b9eSmrg{ 42dcae5b9eSmrg ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1 43dcae5b9eSmrg cat <<EOT | ${IP6ADDRCTL_CMD} install /dev/stdin 44dcae5b9eSmrg ::1/128 50 0 45dcae5b9eSmrg ::/0 40 1 46dcae5b9eSmrg ::ffff:0:0/96 100 4 47dcae5b9eSmrg 2002::/16 30 2 48dcae5b9eSmrg 2001::/32 5 5 49dcae5b9eSmrg fc00::/7 3 13 50dcae5b9eSmrg ::/96 1 3 51dcae5b9eSmrg fec0::/10 1 11 52dcae5b9eSmrg 3ffe::/16 1 12 53dcae5b9eSmrgEOT 54dcae5b9eSmrg} 55dcae5b9eSmrg 56dcae5b9eSmrgip6addrctl_start() 57dcae5b9eSmrg{ 58dcae5b9eSmrg # install the policy of the address selection algorithm. 59dcae5b9eSmrg case "${ip6addrctl_policy}" in 60dcae5b9eSmrg [Aa][Uu][Tt][Oo]) 61dcae5b9eSmrg if [ -r "${config_file}" -a -s "${config_file}" ]; then 62dcae5b9eSmrg ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1 63dcae5b9eSmrg ${IP6ADDRCTL_CMD} install "${config_file}" 64dcae5b9eSmrg else 65dcae5b9eSmrg ip6addrctl_prefer_ipv6 66dcae5b9eSmrg fi 67dcae5b9eSmrg ;; 68dcae5b9eSmrg ipv4_prefer) 69dcae5b9eSmrg ip6addrctl_prefer_ipv4 70dcae5b9eSmrg ;; 71dcae5b9eSmrg ipv6_prefer) 72dcae5b9eSmrg ip6addrctl_prefer_ipv6 73dcae5b9eSmrg ;; 74dcae5b9eSmrg *) 75dcae5b9eSmrg warn "\$ip6addrctl_policy is invalid: ${ip6addrctl_policy}. " \ 76dcae5b9eSmrg " \"ipv4_prefer\" is used instead." 77dcae5b9eSmrg ip6addrctl_prefer_ipv4 78dcae5b9eSmrg ;; 79dcae5b9eSmrg esac 80dcae5b9eSmrg 81dcae5b9eSmrg if checkyesno ip6addrctl_verbose; then 82dcae5b9eSmrg echo 'Address selection policy table for IPv4 and IPv6:' 83dcae5b9eSmrg ${IP6ADDRCTL_CMD} 84dcae5b9eSmrg fi 85dcae5b9eSmrg} 86dcae5b9eSmrg 87dcae5b9eSmrgip6addrctl_stop() 88dcae5b9eSmrg{ 89dcae5b9eSmrg ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1 90dcae5b9eSmrg} 91dcae5b9eSmrg 92dcae5b9eSmrgload_rc_config $name 93dcae5b9eSmrgrun_rc_command "$1" 94dcae5b9eSmrg