1697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明#!/bin/sh 2697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 3697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明# 4697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明# Setup address label from /etc/gai.conf 5697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明# 6697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明# Written by YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>, 2010. 7697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明# 8697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 9697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明IP=ip 10697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明DEFAULT_GAICONF=/etc/gai.conf 11697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明verbose= 12697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明debug= 13697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 14697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明function run () 15697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明{ 16697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 if [ x"$verbose" != x"" ]; then 17697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 echo "$@" 18697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 fi 19697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 if [ x"$debug" = x"" ]; then 20697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 "$@" 21697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 fi 22697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明} 23697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 24697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明function do_load_config () 25697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明{ 26697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 file=$1; shift 27697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 flush=1 28697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 cat $file | while read command prefix label; do 29697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 if [ x"$command" = x"#label" ]; then 30697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 if [ ${flush} = 1 ]; then 31697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 run ${IP} -6 addrlabel flush 32697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 flush=0 33697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 fi 34697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 run ${IP} -6 addrlabel add prefix $prefix label $label 35697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 fi 36697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 done 37697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明} 38697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 39697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明function do_list_config () 40697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明{ 41697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ${IP} -6 addrlabel list | while read p pfx l lbl; do 42697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 echo label ${pfx} ${lbl} 43697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 done 44697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明} 45697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 46697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明function help () 47697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明{ 48697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 echo "Usage: $0 [-v] {--list | --config [ ${DEFAULT_GAICONF} ] | --default}" 49697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 exit 1 50697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明} 51697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 52697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明TEMP=`getopt -o c::dlv -l config::,default,list,verbose -n gaiconf -- "$@"` 53697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 54697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明if [ $? != 0 ]; then 55697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 echo "Terminating..." >&2 56697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 exit 1 57697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明fi 58697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 59697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明TEMPFILE=`mktemp` 60697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 61697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明eval set -- "$TEMP" 62697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 63697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明while true ; do 64697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 case "$1" in 65697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 -c|--config) 66697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 if [ x"$cmd" != x"" ]; then 67697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 help 68697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 fi 69697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 case "$2" in 70697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 "") gai_conf="${DEFAULT_GAICONF}" 71697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 shift 2 72697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 73697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 *) gai_conf="$2" 74697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 shift 2 75697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 esac 76697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 cmd=config 77697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 78697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 -d|--default) 79697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 if [ x"$cmd" != x"" ]; then 80697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 help 81697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 fi 82697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 gai_conf=${TEMPFILE} 83697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 cmd=config 84697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 85697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 -l|--list) 86697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 if [ x"$cmd" != x"" ]; then 87697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 help 88697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 fi 89697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 cmd=list 90697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 shift 91697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 92697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 -v) 93697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 verbose=1 94697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 shift 95697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 96697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 --) 97697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 shift; 98697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 break 99697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 100697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 *) 101697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 echo "Internal error!" >&2 102697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 exit 1 103697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 104697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 esac 105697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明done 106697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 107697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明case "$cmd" in 108697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 config) 109697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 if [ x"$gai_conf" = x"${TEMPFILE}" ]; then 110697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 sed -e 's/^[[:space:]]*//' <<END_OF_DEFAULT >${TEMPFILE} 111697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 label ::1/128 0 112697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 label ::/0 1 113697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 label 2002::/16 2 114697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 label ::/96 3 115697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 label ::ffff:0:0/96 4 116697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 label fec0::/10 5 117697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 label fc00::/7 6 118697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 label 2001:0::/32 7 119697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明END_OF_DEFAULT 120697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 fi 121697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 do_load_config "$gai_conf" 122697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 123697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 list) 124697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 do_list_config 125697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 126697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 *) 127697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 help 128697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ;; 129697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明esac 130697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 131697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明rm -f "${TEMPFILE}" 132697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 133697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明exit 0 134697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 135