You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
2.0 KiB
135 lines
2.0 KiB
#!/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
|
|
|