76 lines
1.4 KiB
Bash
Executable File
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"
|