View | Details | Raw Unified | Return to bug 174225 | Differences between
and this patch

Collapse All | Expand All

(-)network.subr (+44 lines)
Lines 562-567 Link Here
562
	fi
562
	fi
563
563
564
	ifalias_up ${_if} inet6 && _ret=0
564
	ifalias_up ${_if} inet6 && _ret=0
565
	ipv6_addrs_common ${_if} alias && _ret=0
565
	ipv6_prefix_hostid_addr_common ${_if} alias && _ret=0
566
	ipv6_prefix_hostid_addr_common ${_if} alias && _ret=0
566
	ipv6_accept_rtadv_up ${_if} && _ret=0
567
	ipv6_accept_rtadv_up ${_if} && _ret=0
567
568
Lines 684-689 Link Here
684
	return $_ret
685
	return $_ret
685
}
686
}
686
687
688
689
ipv6_addrs_common()
690
{
691
	local _ret _if _action _ip6prefix _ip6prefixes
692
	local _ip6addr _prefixlen
693
	local _range _ip6net _ip6low _ip6high
694
	_ret=1
695
	_if=$1
696
	_action=$2
697
698
# get the prefixes from ipv6_addrs_IF variable
699
	_ip6prefixes=`get_if_var $_if ipv6_addrs_IF`
700
	for _ip6prefix in ${_ip6prefixes}; do
701
		_ip6addr=${_ip6prefix%%/*}
702
		_prefixlen=${_ip6prefix##*/}
703
		_range=${_ip6addr##*:}
704
		_ip6net=${_ip6addr%:*}
705
		_ip6low=${_range%-*}
706
		_ip6high=${_range#*-}
707
708
# If deleting an alias, set _prefixlen to null string.
709
		if [ "${_action}" = "-alias" ]; then
710
			_prefixlen=""
711
		else
712
			_prefixlen="prefixlen $_prefixlen"
713
		fi
714
715
		_ip6high=$(("0x${_ip6high}"))
716
		_ip6count=$(("0x${_ip6low}"))
717
		while [ "${_ip6count}" -le "${_ip6high}"  ]; do
718
            # Re-uses the _ip6addr variable from above
719
			_ip6addr=$(printf "%x" "${_ip6count}")
720
			eval "ifconfig ${_if} inet6 ${_ip6net}:${_ip6addr} ${_prefixlen} ${_action}"
721
			_ip6count=$((${_ip6count}+1))
722
			_ret=0
723
		done
724
	done
725
726
	return $_ret
727
}
728
729
730
687
# ifalias_up if af
731
# ifalias_up if af
688
#	Configure aliases for network interface $if.
732
#	Configure aliases for network interface $if.
689
#	It returns 0 if at least one alias was configured or
733
#	It returns 0 if at least one alias was configured or

Return to bug 174225