Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 475302 | Differences between
and this patch

Collapse All | Expand All

(-)ip6rd.sh.orig (-9 / +9 lines)
Lines 7-12 Link Here
7
ip6rd_depend()
7
ip6rd_depend()
8
{
8
{
9
	program ip
9
	program ip
10
	program ipv6calc
10
	after interface
11
	after interface
11
}
12
}
12
13
Lines 58-74 Link Here
58
	fi
59
	fi
59
	for addr in ${addrs}; do
60
	for addr in ${addrs}; do
60
		# Strip the subnet
61
		# Strip the subnet
61
		local ip="${addr%/*}" subnet="${addr#*/}"
62
		local ip="${addr%/*}" subnet="$(_ip6rd_inet_get_network ${addr%/*} ${ipv4mask})"
62
		# We don't work on private IPv4 addresses
63
		# We don't work on private IPv4 addresses
63
		if _ip6rd_inet_is_private_network "${ip}"
64
		if _ip6rd_inet_is_private_network "${ip}"
64
		then
65
		then
65
			continue
66
			continue
66
		fi
67
		fi
67
68
68
		local ip6= ip6_prefix="${prefix%::/*}" ip6_subnet="${prefix#*/}"
69
		local ip6 ip6_subnet
69
		ip6_subnet=$((ip6_subnet + (32-ipv4mask)))
70
		ip6=$(ipv6calc --in ipv4addr --out ipv6addr --action 6rd_local_prefix --6rd_prefix "${prefix}" --6rd_relay_prefix "${subnet}/${ipv4mask}" "${ip}")
70
		eval ip6="$(printf "${ip6_prefix}:%s::%s" \
71
		ip6_subnet=${ip6#*/}
71
		$(_ip6rd_prefix_shave_bits  ${ip} ${ipv4mask}) ${suffix})"
72
		ip6=${ip6%/*}
72
		veinfo "Derived IPv6 address: ${ip6}"
73
		veinfo "Derived IPv6 address: ${ip6}"
73
74
74
		# Now apply our IPv6 address to our config
75
		# Now apply our IPv6 address to our config
Lines 90-96 Link Here
90
	if [ "${IFACE}" != "sit0" ]; then
91
	if [ "${IFACE}" != "sit0" ]; then
91
		_tunnel add "${IFACE}" mode sit ttl 255 remote any local "${localip}"
92
		_tunnel add "${IFACE}" mode sit ttl 255 remote any local "${localip}"
92
	fi
93
	fi
93
	_tunnel 6rd dev "${IFACE}" 6rd-prefix "${prefix}"
94
	_tunnel 6rd dev "${IFACE}" 6rd-prefix "${prefix}" 6rd-relay_prefix "${subnet}/${ipv4mask}"
94
	eend $? || return 1
95
	eend $? || return 1
95
	_up
96
	_up
96
97
Lines 143-151 Link Here
143
_ip6rd_inet_get_network()
144
_ip6rd_inet_get_network()
144
{
145
{
145
	local a=$(_ip6rd_inet_atoi $1)
146
	local a=$(_ip6rd_inet_atoi $1)
146
	local net=$(( a & ( (1<<$2)-1 ) ))
147
	local net=$(( a & ( 0xffffffff << (32 - $2)) ))
147
	local cidr=$(( 32 - $2 ))
148
	echo $(_ip6rd_inet_itoa $net)
148
	echo $(_ip6rd_inet_itoa $(( (net << cidr ) )) )
149
}
149
}
150
150
151
_ip6rd_inet_is_private_network()
151
_ip6rd_inet_is_private_network()

Return to bug 475302