diff options
author | Steven Barth <steven@midlink.org> | 2014-10-06 11:19:33 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2014-10-06 11:19:33 +0000 |
commit | bb492392747ea57deb54d4bbd52e5d5ce83a08a2 (patch) | |
tree | d3b010661d0368979d2616bbe8b98e6b3515ba89 /package/network/ipv6/odhcp6c/files/dhcpv6.script | |
parent | 415543620a1d6b57d9f561268ed93a12ad190b10 (diff) | |
download | master-187ad058-bb492392747ea57deb54d4bbd52e5d5ce83a08a2.tar.gz master-187ad058-bb492392747ea57deb54d4bbd52e5d5ce83a08a2.tar.bz2 master-187ad058-bb492392747ea57deb54d4bbd52e5d5ce83a08a2.zip |
odhcp6c: add route-workaround for broken IPv6-ISPs
Some ISP seem to only do stateful DHCPv6 and not sending RAs.
This is technically broken because plain DHCPv6 doesn't carry routes.
We work around here by faking a default route to the DHCPv6 server
if we do not receive a useful RA from the ISP.
This workaround can be turned off with: option fakeroutes 0
Signed-off-by: Steven Barth <steven@midlink.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42803 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/network/ipv6/odhcp6c/files/dhcpv6.script')
-rwxr-xr-x | package/network/ipv6/odhcp6c/files/dhcpv6.script | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.script b/package/network/ipv6/odhcp6c/files/dhcpv6.script index 5ab9a1eb63..37e67bfe52 100755 --- a/package/network/ipv6/odhcp6c/files/dhcpv6.script +++ b/package/network/ipv6/odhcp6c/files/dhcpv6.script @@ -26,6 +26,15 @@ setup_interface () { for prefix in $PREFIXES; do proto_add_ipv6_prefix "$prefix" + local entry="${prefix#*/}" + entry="${entry#*,}" + entry="${entry#*,}" + local valid="${entry%%,*}" + + if [ -z "$RA_ADDRESSES" -a -z "$RA_ROUTES" -a \ + -z "$RA_DNS" -a "$FAKE_ROUTES" = 1 ]; then + RA_ROUTES="::/0,$SERVER,$valid,4096" + fi done [ -n "$USERPREFIX" ] && proto_add_ipv6_prefix "$USERPREFIX" @@ -51,6 +60,11 @@ setup_interface () { local valid="${entry%%,*}" proto_add_ipv6_address "$addr" "$mask" "$preferred" "$valid" 1 + + if [ -z "$RA_ADDRESSES" -a -z "$RA_ROUTES" -a \ + -z "$RA_DNS" -a "$FAKE_ROUTES" = 1 ]; then + RA_ROUTES="::/0,$SERVER,$valid,4096" + fi done for entry in $RA_ROUTES; do |