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-100
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 |
|
97 |
routes_ip6rd="2003::/3 via ::${relay} metric 2147483647" |
98 |
routes_ip6rd="::/0 via ::${relay} dev ${IFACE}" |
98 |
service_set_value "config_ip6rd_$IFVAR" "$config_ip6rd" |
99 |
service_set_value "config_ip6rd_$IFVAR" "$config_ip6rd" |
99 |
service_set_value "routes_ip6rd_$IFVAR" "$routes_ip6rd" |
100 |
service_set_value "routes_ip6rd_$IFVAR" "$routes_ip6rd" |
100 |
} |
101 |
} |
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() |