- Fix a bug in ipv6_prefix_IF. It did not work with the 64-bit prefix
notation like 2001:db8:1:1. - Use eui64 flag in ifconfig(8) instead of network6_getladdr()[*] for interface indentifier part. Suggested by: ume [*] MFC after: 3 days
This commit is contained in:
parent
8207f478fc
commit
1c26ccaba0
@ -1052,16 +1052,12 @@ ifalias_af_common()
|
|||||||
#
|
#
|
||||||
ipv6_prefix_hostid_addr_common()
|
ipv6_prefix_hostid_addr_common()
|
||||||
{
|
{
|
||||||
local _if _action prefix laddr hostid j address
|
local _if _action prefix j
|
||||||
_if=$1
|
_if=$1
|
||||||
_action=$2
|
_action=$2
|
||||||
prefix=`get_if_var ${_if} ipv6_prefix_IF`
|
prefix=`get_if_var ${_if} ipv6_prefix_IF`
|
||||||
|
|
||||||
if [ -n "${prefix}" ]; then
|
if [ -n "${prefix}" ]; then
|
||||||
laddr=`network6_getladdr ${_if}`
|
|
||||||
hostid=${laddr#fe80::}
|
|
||||||
hostid=${hostid%\%*}
|
|
||||||
|
|
||||||
for j in ${prefix}; do
|
for j in ${prefix}; do
|
||||||
# The default prefixlen is 64.
|
# The default prefixlen is 64.
|
||||||
plen=${j#*/}
|
plen=${j#*/}
|
||||||
@ -1071,18 +1067,10 @@ ipv6_prefix_hostid_addr_common()
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
# Normalize the last part by removing ":"
|
# Normalize the last part by removing ":"
|
||||||
j=${j%:*}
|
j=${j%::*}
|
||||||
j=${j%:}
|
j=${j%:}
|
||||||
OIFS=$IFS; IFS=":"; set -- $j; nj=$#; IFS=$OIFS
|
${IFCONFIG_CMD} ${_if} inet6 $j:: \
|
||||||
OIFS=$IFS; IFS=":"; set -- $hostid; nh=$#; IFS=$OIFS
|
prefixlen $plen eui64 ${_action}
|
||||||
if [ $(($nj + $nh)) -eq 8 ]; then
|
|
||||||
address=$j\:$hostid
|
|
||||||
else
|
|
||||||
address=$j\::$hostid
|
|
||||||
fi
|
|
||||||
|
|
||||||
${IFCONFIG_CMD} ${_if} inet6 ${address} \
|
|
||||||
prefixlen $plen ${_action}
|
|
||||||
|
|
||||||
# if I am a router, add subnet router
|
# if I am a router, add subnet router
|
||||||
# anycast address (RFC 2373).
|
# anycast address (RFC 2373).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user