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.
134 lines
2.0 KiB
134 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 |
|
|
|
|