head	1.7;
access;
symbols
	RELENG_9_1_0_RELEASE:1.6.2.1.4.2
	RELENG_9_1:1.6.2.1.0.4
	RELENG_9_1_BP:1.6.2.1
	RELENG_9_0_0_RELEASE:1.6.2.1.2.1
	RELENG_9_0:1.6.2.1.0.2
	RELENG_9_0_BP:1.6.2.1
	RELENG_9:1.6.0.2
	RELENG_9_BP:1.6;
locks; strict;
comment	@# @;


1.7
date	2012.11.17.01.54.40;	author svnexp;	state Exp;
branches;
next	1.6;

1.6
date	2011.09.07.00.45.15;	author bz;	state Exp;
branches
	1.6.2.1;
next	1.5;

1.5
date	2011.06.06.12.21.42;	author bz;	state Exp;
branches;
next	1.4;

1.4
date	2011.06.02.14.25.27;	author bz;	state Exp;
branches;
next	1.3;

1.3
date	2011.05.30.17.27.48;	author bz;	state Exp;
branches;
next	1.2;

1.2
date	2011.05.30.08.40.59;	author bz;	state Exp;
branches;
next	1.1;

1.1
date	2011.05.29.21.24.20;	author bz;	state Exp;
branches;
next	;

1.6.2.1
date	2011.09.23.00.51.37;	author kensmith;	state Exp;
branches
	1.6.2.1.2.1
	1.6.2.1.4.1;
next	1.6.2.2;

1.6.2.2
date	2012.11.17.11.37.43;	author svnexp;	state Exp;
branches;
next	1.6.2.3;

1.6.2.3
date	2014.03.31.02.01.46;	author svnexp;	state Exp;
branches;
next	;

1.6.2.1.2.1
date	2011.11.11.04.20.22;	author kensmith;	state Exp;
branches;
next	1.6.2.1.2.2;

1.6.2.1.2.2
date	2012.11.17.08.37.39;	author svnexp;	state Exp;
branches;
next	;

1.6.2.1.4.1
date	2012.08.05.23.54.33;	author kensmith;	state Exp;
branches;
next	1.6.2.1.4.2;

1.6.2.1.4.2
date	2012.11.17.08.48.31;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.7
log
@Switching exporter and resync
@
text
@#!/bin/sh
#-
# Copyright (c) 2011 Nathan Whitehorn
# All rights reserved.
# Copyright (c) 2011 The FreeBSD Foundation
# All rights reserved.
#
# Portions of this software were developed by Bjoern Zeeb
# under sponsorship from the FreeBSD Foundation.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD: head/usr.sbin/bsdinstall/scripts/netconfig_ipv6 225429 2011-09-07 00:45:15Z bz $

#
# TODO: 
# - Add DHCPv6 support once FreeBSD ships with it.
# 

: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}

INTERFACE=$1
case "${INTERFACE}" in
"")	dialog --backtitle 'FreeBSD Installer' --title 'Network Configuration' \
	    --msgbox 'No interface specified for IPv6 configuration.' 0 0
	exit 1
	;;
esac

AGAIN=""
while : ; do
	MSG="Would you like to try stateless address autoconfiguration (SLAAC)${AGAIN}?"
	dialog --backtitle 'FreeBSD Installer' --title 'Network Configuration' \
	    --yesno "${MSG}" 0 0
	if [ $? -eq $DIALOG_OK ]; then
		if [ ! -z $BSDINSTALL_CONFIGCURRENT ]; then
			dialog --backtitle 'FreeBSD Installer' \
			    --infobox "Sending Router Solicitation ..." 0 0
			ifconfig ${INTERFACE} inet6 -ifdisabled accept_rtadv up
			rtsol -F $INTERFACE 2>> $BSDINSTALL_LOG
			if [ $? -ne 0 ]; then
				dialog --backtitle 'FreeBSD Installer' --msgbox "SLAAC failed." 0 0
				AGAIN=" again"
				continue
			fi
		fi
		echo ifconfig_${INTERFACE}_ipv6=\"inet6 accept_rtadv\" >> $BSDINSTALL_TMPETC/._rc.conf.net
		exit 0
	else
		break
	fi
done

ROUTER6=`netstat -Wrn -f inet6 | awk '/default/ {printf("%s\n", $2);}'`
ADDRS=`ifconfig ${INTERFACE} inet6 | \
awk  -v dfr="${ROUTER6}" '
BEGIN {
	n=0;
}
{
	if (/inet6/) {
		if (match($2, "^fe80:")) { next; };
		# For the moment ignore all but the first address; it might confuse the user.
		if (n > 0) { next; };
		n++;
		printf "\"IPv6 Address\" %d 0 \"%s/%s\" %d 16 50 0 0 ", n, $2, $4, n;
	}
}
END {
	if (n == 0) {
		n++;
		printf "\"IPv6 Address\" %d 0 \"\" %d 16 50 0 0 ", n, n;
	}
	n++;
	# Nasty trick adding a (hidden, same y) read-only field as a marker
	# to separate interface address(es) from the default router.
	printf "\"Default Router\" %d 0 \"%s\" %d 16 50 0 2 ", n, "DefaultRouter", n;
	printf "\"Default Router\" %d 0 \"%s\" %d 16 50 0 0 ", n, dfr, n;
}'`

exec 3>&1
IF_CONFIG=$(echo ${ADDRS} | xargs dialog --backtitle 'FreeBSD Installer' \
	--title 'Network Configuration' \
	--mixedform 'Static IPv6 Network Interface Configuration' 0 0 0 \
2>&1 1>&3)
if [ $? -eq $DIALOG_CANCEL ]; then exit 1; fi
exec 3>&-

echo ${IF_CONFIG} | tr ' ' '\n' | \
awk -v iface="${INTERFACE}" '
BEGIN {
	dfr=0;
	count=0;
}
{
	if (/^[[:space:]]+$/) {
		next;
	}
	if (/DefaultRouter/) {
		dfr=1;
		next;
	}
	if (dfr == 1) {
		printf("ipv6_defaultrouter=\"%s\"\n", $1);
		next;
	}
	if (count > 0) {
		# Ignore all but the first IP address for now.
		next;
	}
	count++;
	if (!match($1, "/")) {
		sub("$", "/64", $1);
	}
	printf("ifconfig_%s_ipv6=\"inet6 %s\"\n", iface, $1);
}' >> $BSDINSTALL_TMPETC/._rc.conf.net

if [ ! -z $BSDINSTALL_CONFIGCURRENT ]; then
	. $BSDINSTALL_TMPETC/._rc.conf.net
	ifconfig ${INTERFACE} `eval echo \\\$ifconfig_${INTERFACE}_ipv6`
	if [ -n "${ipv6_defaultrouter}" ]; then
		route delete -inet6 default
		route add -inet6 default ${ipv6_defaultrouter}
	fi
fi

@


1.6
log
@SVN rev 225429 on 2011-09-07 00:45:15Z by bz

Fix two problems:
1) if no default gateway is given the route command will fail
   and the script will abort with an error leading to an endless
   loop unless configuration is cancelled or changed. [1]
2) In the IPv6 case add -inet6 to not alter the legacy IP default
   route.

Reported by:	Oleg Ginzburg (olevole olevole.ru) [1]
Tested by:	Oleg Ginzburg (olevole olevole.ru) [1]
Approved by:	re (kib)
@
text
@d32 1
a32 1
# $FreeBSD$
@


1.6.2.1
log
@SVN rev 225736 on 2011-09-23 00:51:37Z by kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.6.2.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242902
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242902 | dteske | 2012-11-11 23:29:45 +0000 (Sun, 11 Nov 2012) | 10 lines
## SVN ##
## SVN ## Fix a regression introduced by SVN r211417 that saw the breakage of a feature
## SVN ## documented in usr.sbin/sysinstall/help/shortcuts.hlp (reproduced below):
## SVN ##
## SVN ## If /usr/sbin/sysinstall is linked to another filename, say
## SVN ## `/usr/local/bin/configPackages', then the basename will be used
## SVN ## as an implicit command name.
## SVN ##
## SVN ## Reviewed by:	adrian (co-mentor)
## SVN ## Approved by:	adrian (co-mentor)
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d32 1
a32 1
# $FreeBSD: stable/9/usr.sbin/bsdinstall/scripts/netconfig_ipv6 225429 2011-09-07 00:45:15Z bz $
@


1.6.2.3
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/263956
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@d4 1
a5 1
# Copyright (c) 2013 Devin Teske
d32 1
a32 10
# $FreeBSD: stable/9/usr.sbin/bsdinstall/scripts/netconfig_ipv6 263956 2014-03-31 01:04:40Z dteske $
#
############################################################ INCLUDES

BSDCFG_SHARE="/usr/share/bsdconfig"
. $BSDCFG_SHARE/common.subr || exit 1
f_dprintf "%s: loading includes..." "$0"
f_include $BSDCFG_SHARE/dialog.subr

############################################################ MAIN
d39 7
d64 1
a64 1
			err=$( rtsol -F $INTERFACE 2>&1 )
a65 1
				f_dprintf "%s" "$err"
a150 3
################################################################################
# END
################################################################################
@


1.6.2.1.4.1
log
@SVN rev 239080 on 2012-08-05 23:54:33Z by kensmith

Copy stable/9 to releng/9.1 as part of the 9.1-RELEASE release process.

Approved by:	re (implicit)
@
text
@@


1.6.2.1.4.2
log
@Switch importer
@
text
@d32 1
a32 1
# $FreeBSD: releng/9.1/usr.sbin/bsdinstall/scripts/netconfig_ipv6 225429 2011-09-07 00:45:15Z bz $
@


1.6.2.1.2.1
log
@SVN rev 227445 on 2011-11-11 04:20:22Z by kensmith

Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
cycle.

Approved by:	re (implicit)
@
text
@@


1.6.2.1.2.2
log
@Switch importer
@
text
@d32 1
a32 1
# $FreeBSD: releng/9.0/usr.sbin/bsdinstall/scripts/netconfig_ipv6 225429 2011-09-07 00:45:15Z bz $
@


1.5
log
@SVN rev 222747 on 2011-06-06 12:21:42Z by bz

Remove TODO which is not longer needed and the default.
@
text
@d145 4
a148 2
	route delete default
	route add default ${ipv6_defaultrouter}
@


1.4
log
@SVN rev 222619 on 2011-06-02 14:25:27Z by bz

Write the multi step netconfig to a temporary file and only move that
to the final name if netconfig was completely finished.  This fixes
reentrance problems even better than r222611.

Suggested by:	nwhitehorn
Reviewed by:	nwhitehorn
Sponsored by:	The FreeBSD Foundation
Sponsored by:	iXsystems
@
text
@a35 1
# - Add -R /sbin/resolvconf to rtsol once support is in tree.
@


1.3
log
@SVN rev 222502 on 2011-05-30 17:27:48Z by bz

Contrary to the rc.conf framework, when manualy enabling IPv6 we have
to -ifdiabled ourselves.

Sponsored by:	The FreeBSD Foundation
Sponsored by:	iXsystems
@
text
@d72 1
a72 1
		echo ifconfig_${INTERFACE}_ipv6=\"inet6 accept_rtadv\" >> $BSDINSTALL_TMPETC/rc.conf.net
d141 1
a141 1
}' >> $BSDINSTALL_TMPETC/rc.conf.net
d144 1
a144 1
	. $BSDINSTALL_TMPETC/rc.conf.net
@


1.2
log
@SVN rev 222482 on 2011-05-30 08:40:59Z by bz

While doing it right for current configuration, fix the entry for rc.conf
adding the missing mandatory "inet6" keyword.

Sponsored by:	The FreeBSD Foundation
Sponsored by:	iXsystems
@
text
@d64 1
a64 1
			ifconfig ${INTERFACE} inet6 accept_rtadv up
@


1.1
log
@SVN rev 222468 on 2011-05-29 21:24:20Z by bz

Split netconfig into three parts:
- netconfig - what auto will call which in turn will check for
  IPv4 and IPv6 to be available and ask the user to configure it
  by calling
- netconfig_ipv4 doing DHCP and static IPv4 addresses, and
- netconfig_ipv6 doing rtsol and static IPv6 addresses,
and then checking, querying and updating resolv.conf upon return.
Both DHCP and rtsol (in the future) might update resolv.conf already so
we seed ourselves from that file if available.

Reviewed by:	nwhitehorn
Sponsored by:	The FreeBSD Foundation
Sponsored by:	iXsystems
@
text
@d72 1
a72 1
		echo ifconfig_${INTERFACE}_ipv6=\"accept_rtadv\" >> $BSDINSTALL_TMPETC/rc.conf.net
@

