mirror of
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
synced 2024-11-15 22:15:13 +08:00
gaiconf: /etc/gai.conf configuration helper.
This tool reads /etc/gai.conf, configuration for getaddrinfo(3), and set up kernel parameter. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
parent
8a5179466a
commit
697af1fcc6
134
examples/gaiconf
Normal file
134
examples/gaiconf
Normal file
@ -0,0 +1,134 @@
|
||||
#!/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
|
||||
|
Loading…
Reference in New Issue
Block a user