Blame examples/gaiconf

Packit d3f73b
#!/bin/sh
Packit d3f73b
Packit d3f73b
#
Packit d3f73b
# Setup address label from /etc/gai.conf
Packit d3f73b
#
Packit d3f73b
# Written by YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>, 2010.
Packit d3f73b
#
Packit d3f73b
Packit d3f73b
IP=ip
Packit d3f73b
DEFAULT_GAICONF=/etc/gai.conf
Packit d3f73b
verbose=
Packit d3f73b
debug=
Packit d3f73b
Packit d3f73b
function run ()
Packit d3f73b
{
Packit d3f73b
	if [ x"$verbose" != x"" ]; then
Packit d3f73b
		echo "$@"
Packit d3f73b
	fi
Packit d3f73b
	if [ x"$debug" = x"" ]; then
Packit d3f73b
		"$@"
Packit d3f73b
	fi
Packit d3f73b
}
Packit d3f73b
Packit d3f73b
function do_load_config ()
Packit d3f73b
{
Packit d3f73b
	file=$1; shift
Packit d3f73b
	flush=1
Packit d3f73b
	cat $file | while read command prefix label; do
Packit d3f73b
		if [ x"$command" = x"#label" ]; then
Packit d3f73b
			if [ ${flush} = 1 ]; then
Packit d3f73b
				run ${IP} -6 addrlabel flush
Packit d3f73b
				flush=0
Packit d3f73b
			fi
Packit d3f73b
			run ${IP} -6 addrlabel add prefix $prefix label $label
Packit d3f73b
		fi
Packit d3f73b
	done
Packit d3f73b
}
Packit d3f73b
Packit d3f73b
function do_list_config ()
Packit d3f73b
{
Packit d3f73b
	${IP} -6 addrlabel list | while read p pfx l lbl; do
Packit d3f73b
		echo label ${pfx} ${lbl}
Packit d3f73b
	done
Packit d3f73b
}
Packit d3f73b
Packit d3f73b
function help ()
Packit d3f73b
{
Packit d3f73b
	echo "Usage: $0 [-v] {--list | --config [ ${DEFAULT_GAICONF} ] | --default}"
Packit d3f73b
	exit 1
Packit d3f73b
}
Packit d3f73b
Packit d3f73b
TEMP=`getopt -o c::dlv -l config::,default,list,verbose -n gaiconf -- "$@"`
Packit d3f73b
Packit d3f73b
if [ $? != 0 ]; then
Packit d3f73b
	echo "Terminating..." >&2
Packit d3f73b
	exit 1
Packit d3f73b
fi
Packit d3f73b
Packit d3f73b
TEMPFILE=`mktemp`
Packit d3f73b
Packit d3f73b
eval set -- "$TEMP"
Packit d3f73b
Packit d3f73b
while true ; do
Packit d3f73b
	case "$1" in
Packit d3f73b
		-c|--config)
Packit d3f73b
			if [ x"$cmd" != x"" ]; then
Packit d3f73b
				help
Packit d3f73b
			fi
Packit d3f73b
			case "$2" in
Packit d3f73b
			"")	gai_conf="${DEFAULT_GAICONF}"
Packit d3f73b
				shift 2
Packit d3f73b
				;;
Packit d3f73b
			*)	gai_conf="$2"
Packit d3f73b
				shift 2
Packit d3f73b
			esac
Packit d3f73b
			cmd=config
Packit d3f73b
			;;
Packit d3f73b
		-d|--default)
Packit d3f73b
			if [ x"$cmd" != x"" ]; then
Packit d3f73b
				help
Packit d3f73b
			fi
Packit d3f73b
			gai_conf=${TEMPFILE}
Packit d3f73b
			cmd=config
Packit d3f73b
			;;
Packit d3f73b
		-l|--list)
Packit d3f73b
			if [ x"$cmd" != x"" ]; then
Packit d3f73b
				help
Packit d3f73b
			fi
Packit d3f73b
			cmd=list
Packit d3f73b
			shift
Packit d3f73b
			;;
Packit d3f73b
		-v)
Packit d3f73b
			verbose=1
Packit d3f73b
			shift
Packit d3f73b
			;;
Packit d3f73b
		--)
Packit d3f73b
			shift;
Packit d3f73b
			break
Packit d3f73b
			;;
Packit d3f73b
		*)
Packit d3f73b
			echo "Internal error!" >&2
Packit d3f73b
			exit 1
Packit d3f73b
			;;
Packit d3f73b
	esac
Packit d3f73b
done
Packit d3f73b
Packit d3f73b
case "$cmd" in
Packit d3f73b
	config)
Packit d3f73b
		if [ x"$gai_conf" = x"${TEMPFILE}" ]; then
Packit d3f73b
			sed -e 's/^[[:space:]]*//' <<END_OF_DEFAULT >${TEMPFILE}
Packit d3f73b
				label ::1/128       0
Packit d3f73b
				label ::/0          1
Packit d3f73b
				label 2002::/16     2
Packit d3f73b
				label ::/96         3
Packit d3f73b
				label ::ffff:0:0/96 4
Packit d3f73b
				label fec0::/10     5
Packit d3f73b
				label fc00::/7      6
Packit d3f73b
				label 2001:0::/32   7
Packit d3f73b
END_OF_DEFAULT
Packit d3f73b
		fi
Packit d3f73b
		do_load_config "$gai_conf"
Packit d3f73b
		;;
Packit d3f73b
	list)
Packit d3f73b
		do_list_config
Packit d3f73b
		;;
Packit d3f73b
	*)
Packit d3f73b
		help
Packit d3f73b
		;;
Packit d3f73b
esac
Packit d3f73b
Packit d3f73b
rm -f "${TEMPFILE}"
Packit d3f73b
Packit d3f73b
exit 0
Packit d3f73b