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"

Reply via email to