small-package/luci-app-systools/root/usr/share/systools/full_ipv6.run

76 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
ipv6_disable_lan_server() {
uci -q batch <<-EOF >/dev/null
del dhcp.lan.ra
del dhcp.lan.ra_slaac
del dhcp.lan.ra_flags
del dhcp.lan.dhcpv6
del dhcp.lan.ndp
EOF
}
ipv6_dns_on() {
uci -q delete 'dhcp.@dnsmasq[0].filter_aaaa'
}
ipv6_relay_mode() {
uci -q batch <<-EOF >/dev/null
del network.wan6.auto
set dhcp.wan6=dhcp
set dhcp.wan6.interface='wan6'
set dhcp.wan6.ignore='1'
set dhcp.wan6.master='1'
set dhcp.wan6.ra='relay'
set dhcp.wan6.dhcpv6='relay'
set dhcp.wan6.ndp='relay'
set dhcp.lan.ra='relay'
del dhcp.lan.ra_slaac
del dhcp.lan.ra_flags
set dhcp.lan.dhcpv6='relay'
set dhcp.lan.ndp='relay'
EOF
ipv6_dns_on
}
ipv6_pppoe_mode() {
ipv6_disable_lan_server
ipv6_dns_on
}
is_lan_gateway() {
[ "$(uci -q get network.lan.defaultroute)" = "0" ] && return 1
[ "$(uci -q get network.lan.proto)" = "dhcp" ] && return 0
[ "$(uci -q get network.lan.proto)" = "static" ] || return 1
[ -n "$(uci -q get network.lan.gateway)" ]
}
is_wan_pppoe() {
[ "$(uci -q get network.wan.proto)" = "pppoe" ]
}
if is_lan_gateway; then
echo "Single-Port Router (LAN Gateway) mode"
ipv6_pppoe_mode
elif is_wan_pppoe; then
echo "PPPoE mode"
ipv6_pppoe_mode
uci -q delete network.wan.ipv6
else
echo "DHCP-Client mode"
ipv6_relay_mode
fi
uci -q batch <<-EOF >/dev/null
commit dhcp
commit network
EOF
/etc/init.d/odhcpd reload
/etc/init.d/dnsmasq reload
/etc/init.d/network reload
echo "Done"