. /lib/functions.sh
. /lib/functions/gl_util.sh

fix_ipq40xx_wan_vlan

sed -i "/multicast_to_unicast '0'/d" /etc/config/network

[ -z "`uci -q get network.wan.force_link`" ] && uci set network.wan.force_link='0' && uci commit network

has_secondwan && {
    if [ -z "`uci -q get network.secondwan.metric`"  ];then
        uci set network.secondwan.metric='15'
        uci commit network
    fi

    if [ -z "`uci -q get gl_mwan3.secondwan`"  ];then
        uci set gl_mwan3.secondwan='interface'
        uci set gl_mwan3.secondwan.track_proto='0'
        uci commit gl_mwan3
    fi
}

[ "$(uci -q get glconfig.general.inited)" = "1" ] && exit 0

uci -q batch <<-EOF
    set network.lan.isolate=0
    set network.lan.ipaddr='192.168.8.1'
    commit network
EOF

uci -q batch <<-EOF
    delete network.wan6.device
    set network.wan.ipv6='0'
    set network.wan6.ifname='@wan'
    set network.wan6.disabled='1'
    set network.tethering6='interface'
    set network.tethering6.ifname='@tethering'
    set network.tethering6.proto='dhcpv6'
    set network.tethering6.disabled='1'
    set network.wwan6='interface'
    set network.wwan6.ifname='@wwan'
    set network.wwan6.proto='dhcpv6'
    set network.wwan6.disabled='1'
    commit network
EOF

uci -q batch <<-EOF
    set dhcp.@dnsmasq[0].rebind_protection=0

    add dhcp domain
    set dhcp.@[-1].name='console.gl-inet.com'
    set dhcp.@[-1].ip="$(uci -q get network.lan.ipaddr)"
    commit dhcp
EOF

uci -q batch <<-EOF
    set firewall.@zone[1].input=DROP
    add_list firewall.@zone[1].network=wwan
    commit firewall
EOF


has_radio="$(get_radio)"

[ -n "$has_radio" ] && {
uci -q batch <<-EOF
    set network.guest=interface
    set network.guest.force_link='1'
    set network.guest.type='bridge'
    set network.guest.proto='static'
    set network.guest.ipaddr='192.168.9.1'
    set network.guest.netmask='255.255.255.0'
    set network.guest.ip6assign='60'
    set network.guest.multicast_querier='1'
    set network.guest.igmp_snooping='0'
    set network.guest.isolate='0'
    set network.guest.bridge_empty='1'
    set network.guest.disabled='1'

    set network.wwan=interface
    set network.wwan.proto='dhcp'
    commit network
EOF

uci -q batch <<-EOF
    set dhcp.guest=dhcp
    set dhcp.guest.interface=guest
    set dhcp.guest.start=100
    set dhcp.guest.limit=150
    set dhcp.guest.leasetime='12h'
    set dhcp.guest.dhcpv6=disabled
    set dhcp.guest.ra=disabled
    commit dhcp
EOF

uci -q batch <<-EOF
    add firewall zone
    set firewall.@[-1].name=guest
    set firewall.@[-1].network=guest
    set firewall.@[-1].forward=REJECT
    set firewall.@[-1].output=ACCEPT
    set firewall.@[-1].input=REJECT

    add firewall forwarding
    set firewall.@[-1].src=guest
    set firewall.@[-1].dest=wan

    add firewall rule
    set firewall.@[-1].name='Allow-DHCP'
    set firewall.@[-1].src=guest
    set firewall.@[-1].target=ACCEPT
    set firewall.@[-1].proto=udp
    set firewall.@[-1].dest_port='67-68'

    add firewall rule
    set firewall.@[-1].name='Allow-DNS'
    set firewall.@[-1].src=guest
    set firewall.@[-1].target=ACCEPT
    set firewall.@[-1].proto='tcp udp'
    set firewall.@[-1].dest_port=53
    commit firewall
EOF
} 

if [ -z "$has_radio" ]; then
uci -q batch <<-EOF
    delete mwan3.wwan
    delete mwan3.wwan_only
    delete mwan3.wwan_balance
    del_list mwan3.default_poli.use_member='wwan_only'

    delete mwan3.wwan6
    delete mwan3.wwan6_only
    delete mwan3.wwan6_balance
    del_list mwan3.default_poli_v6.use_member='wwan6_only'
    commit mwan3
EOF
echo "" > /etc/config/wireless
fi

has_secondwan && {
uci -q batch <<-EOF
    set network.secondwan="interface"
    set network.secondwan.ipv6="0"
    set network.secondwan.proto="dhcp"
    set network.secondwan.metric="15"
    set network.secondwan.force_link="0"

    set network.secondwan6="interface"
    set network.secondwan6.proto="dhcpv6"
    set network.secondwan6.ifname="@secondwan"
    set network.secondwan6.disabled="1"
    commit network

    set dhcp.secondwan="dhcp"
    set dhcp.secondwan.interface="secondwan"
    set dhcp.secondwan.ignore="1"
    commit dhcp

    add_list firewall.@zone[1].network="secondwan"
    commit firewall

    set mwan3.secondwan="interface"
    set mwan3.secondwan.enabled="1"
    set mwan3.secondwan.family="ipv4"
    set mwan3.secondwan.reliability="2"
    set mwan3.secondwan.count="1"
    set mwan3.secondwan.timeout="2"
    set mwan3.secondwan.interval="5"
    set mwan3.secondwan.down="3"
    set mwan3.secondwan.up="8"

    set mwan3.secondwan_only="member"
    set mwan3.secondwan_only.interface="secondwan"
    set mwan3.secondwan_only.metric="2"
    set mwan3.wwan_only.metric="3"
    set mwan3.tethering_only.metric="4"
    set mwan3.secondwan_only.weight="3"

    set mwan3.secondwan_balance="member"
    set mwan3.secondwan_balance.interface="secondwan"
    set mwan3.secondwan_balance.metric='1'
    set mwan3.secondwan_balance.weight="3"
    add_list mwan3.default_poli.use_member="secondwan_only"

    set mwan3.secondwan6="interface"
    set mwan3.secondwan6.enabled="1"
    set mwan3.secondwan6.family="ipv6"
    set mwan3.secondwan6.reliability="2"
    set mwan3.secondwan6.count="1"
    set mwan3.secondwan6.timeout="2"
    set mwan3.secondwan6.interval="5"
    set mwan3.secondwan6.down="3"
    set mwan3.secondwan6.up="8"

    set mwan3.secondwan6_only="member"
    set mwan3.secondwan6_only.interface="secondwan6"
    set mwan3.secondwan6_only.metric="2"
    set mwan3.wwan6_only.metric="3"
    set mwan3.tethering6_only.metric="4"
    set mwan3.secondwan6_only.weight="3"

    set mwan3.secondwan6_balance="member"
    set mwan3.secondwan6_balance.interface="secondwan6"
    set mwan3.secondwan6_balance.metric='1'
    set mwan3.secondwan6_balance.weight="3"
    add_list mwan3.default_poli_v6.use_member="secondwan6_only"
    commit mwan3

    uci set gl_mwan3.secondwan='interface'
    uci set gl_mwan3.secondwan.track_proto='0'
    uci commit gl_mwan3
EOF
    for track_ip in `uci -q get glconfig.general.track_ip`
    do
        uci add_list mwan3.secondwan.track_ip="$track_ip"
    done

    for track_ip in `uci -q get glconfig.general.track_ipv6`
    do
        uci add_list mwan3.secondwan6.track_ip="$track_ip"
    done

    uci commit mwan3
}

set_hnat_by_default



