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