mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 15:31:19 +00:00 
			
		
		
		
	 697af1fcc6
			
		
	
	
		697af1fcc6
		
	
	
	
	
		
			
			This tool reads /etc/gai.conf, configuration for getaddrinfo(3), and set up kernel parameter. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
		
			
				
	
	
		
			135 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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
 | |
| 
 |