#!/bin/sh

#
# Setup address label from /etc/gai.conf
#
# Written by YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>, 2010.
#

IP=ip
DEFAULT_GAICONF=/etc/gai.conf
verbose=
debug=

function run ()
{
	if [ x"$verbose" != x"" ]; then
		echo "$@"
	fi
	if [ x"$debug" = x"" ]; then
		"$@"
	fi
}

function do_load_config ()
{
	file=$1; shift
	flush=1
	cat $file | while read command prefix label; do
		if [ x"$command" = x"#label" ]; then
			if [ ${flush} = 1 ]; then
				run ${IP} -6 addrlabel flush
				flush=0
			fi
			run ${IP} -6 addrlabel add prefix $prefix label $label
		fi
	done
}

function do_list_config ()
{
	${IP} -6 addrlabel list | while read p pfx l lbl; do
		echo label ${pfx} ${lbl}
	done
}

function help ()
{
	echo "Usage: $0 [-v] {--list | --config [ ${DEFAULT_GAICONF} ] | --default}"
	exit 1
}

TEMP=`getopt -o c::dlv -l config::,default,list,verbose -n gaiconf -- "$@"`

if [ $? != 0 ]; then
	echo "Terminating..." >&2
	exit 1
fi

TEMPFILE=`mktemp`

eval set -- "$TEMP"

while true ; do
	case "$1" in
		-c|--config)
			if [ x"$cmd" != x"" ]; then
				help
			fi
			case "$2" in
			"")	gai_conf="${DEFAULT_GAICONF}"
				shift 2
				;;
			*)	gai_conf="$2"
				shift 2
			esac
			cmd=config
			;;
		-d|--default)
			if [ x"$cmd" != x"" ]; then
				help
			fi
			gai_conf=${TEMPFILE}
			cmd=config
			;;
		-l|--list)
			if [ x"$cmd" != x"" ]; then
				help
			fi
			cmd=list
			shift
			;;
		-v)
			verbose=1
			shift
			;;
		--)
			shift;
			break
			;;
		*)
			echo "Internal error!" >&2
			exit 1
			;;
	esac
done

case "$cmd" in
	config)
		if [ x"$gai_conf" = x"${TEMPFILE}" ]; then
			sed -e 's/^[[:space:]]*//' <<END_OF_DEFAULT >${TEMPFILE}
				label ::1/128       0
				label ::/0          1
				label 2002::/16     2
				label ::/96         3
				label ::ffff:0:0/96 4
				label fec0::/10     5
				label fc00::/7      6
				label 2001:0::/32   7
END_OF_DEFAULT
		fi
		do_load_config "$gai_conf"
		;;
	list)
		do_list_config
		;;
	*)
		help
		;;
esac

rm -f "${TEMPFILE}"

exit 0

