Module Name: src
Committed By: christos
Date: Sun Dec 13 02:05:16 UTC 2015
Modified Files:
src/etc/rc.d: Makefile
Added Files:
src/etc/rc.d: ip6addrctl
Log Message:
Add ip6addrctl
To generate a diff of this commit:
cvs rdiff -u -r1.93 -r1.94 src/etc/rc.d/Makefile
cvs rdiff -u -r0 -r1.1 src/etc/rc.d/ip6addrctl
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/etc/rc.d/Makefile
diff -u src/etc/rc.d/Makefile:1.93 src/etc/rc.d/Makefile:1.94
--- src/etc/rc.d/Makefile:1.93 Mon Mar 30 06:58:37 2015
+++ src/etc/rc.d/Makefile Sat Dec 12 21:05:15 2015
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.93 2015/03/30 10:58:37 chopps Exp $
+# $NetBSD: Makefile,v 1.94 2015/12/13 02:05:15 christos Exp $
.include <bsd.own.mk>
@@ -22,8 +22,8 @@ CONFIGFILES=\
fsck fsck_root ftp_proxy ftpd \
gpio \
hostapd httpd \
- identd ifwatchd inetd ipfilter ipfs ipmon ipnat ipsec \
- irdaattach iscsi_target iscsid isdnd isibootd \
+ identd ifwatchd inetd ip6addrctl ipfilter ipfs ipmon ipnat \
+ ipsec irdaattach iscsi_target iscsid isdnd isibootd \
kdc \
ldconfig ldpd local lpd lvm \
makemandb mdnsd mixerctl modules mopd motd mountall \
Added files:
Index: src/etc/rc.d/ip6addrctl
diff -u /dev/null src/etc/rc.d/ip6addrctl:1.1
--- /dev/null Sat Dec 12 21:05:16 2015
+++ src/etc/rc.d/ip6addrctl Sat Dec 12 21:05:15 2015
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# $FreeBSD: head/etc/rc.d/ip6addrctl 270836 2014-08-30 07:08:10Z hrs $
+#
+
+# PROVIDE: ip6addrctl
+# REQUIRE: root bootconf mountcritlocal tty
+
+. /etc/rc.subr
+
+name="ip6addrctl"
+rcvar="ip6addrctl_enable"
+start_cmd="ip6addrctl_start"
+stop_cmd="ip6addrctl_stop"
+extra_commands="status prefer_ipv6 prefer_ipv4"
+status_cmd="ip6addrctl"
+prefer_ipv6_cmd="ip6addrctl_prefer_ipv6"
+prefer_ipv4_cmd="ip6addrctl_prefer_ipv4"
+config_file="/etc/ip6addrctl.conf"
+
+IP6ADDRCTL_CMD="/usr/sbin/ip6addrctl"
+
+ip6addrctl_prefer_ipv6()
+{
+ ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1
+ cat <<EOT | ${IP6ADDRCTL_CMD} install /dev/stdin
+ ::1/128 50 0
+ ::/0 40 1
+ ::ffff:0:0/96 35 4
+ 2002::/16 30 2
+ 2001::/32 5 5
+ fc00::/7 3 13
+ ::/96 1 3
+ fec0::/10 1 11
+ 3ffe::/16 1 12
+EOT
+}
+
+ip6addrctl_prefer_ipv4()
+{
+ ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1
+ cat <<EOT | ${IP6ADDRCTL_CMD} install /dev/stdin
+ ::1/128 50 0
+ ::/0 40 1
+ ::ffff:0:0/96 100 4
+ 2002::/16 30 2
+ 2001::/32 5 5
+ fc00::/7 3 13
+ ::/96 1 3
+ fec0::/10 1 11
+ 3ffe::/16 1 12
+EOT
+}
+
+ip6addrctl_start()
+{
+ # install the policy of the address selection algorithm.
+ case "${ip6addrctl_policy}" in
+ [Aa][Uu][Tt][Oo])
+ if [ -r "${config_file}" -a -s "${config_file}" ]; then
+ ${IP6ADDRCTL_CMD} flush >/dev/null 2>&1
+ ${IP6ADDRCTL_CMD} install "${config_file}"
+ else
+ if checkyesno ipv6_activate_all_interfaces; then
+ ip6addrctl_prefer_ipv6
+ elif [ -n "$(list_vars ifconfig_\*_ipv6)" ]; then
+ ip6addrctl_prefer_ipv6
+ else
+ ip6addrctl_prefer_ipv4
+ fi
+ fi
+ ;;
+ ipv4_prefer)
+ ip6addrctl_prefer_ipv4
+ ;;
+ ipv6_prefer)
+ ip6addrctl_prefer_ipv6
+ ;;
+ *)
+ warn "\$ip6addrctl_policy is invalid: ${ip6addrctl_policy}. " \
+ " \"ipv4_prefer\" is used instead."
+ ip6addrctl_prefer_ipv4
+ ;;
+ esac
+
+ if checkyesno ip6addrctl_verbose; then
+ echo 'Address selection policy table for IPv4 and IPv6:'
+ ${IP6ADDRCTL_CMD}
+ fi
+}
+
+ip6addrctl_stop()
+{
+ ip6addrctl flush >/dev/null 2>&1
+}
+
+load_rc_config $name
+run_rc_command "$1"