#!/bin/sh . /lib/functions.sh _setup_macaddr() { uci -q get "network.$1_dev.macaddr" >/dev/null && return uci -q set "network.$1_dev.macaddr=$2" } _setup_macvlan() { uci -q get "network.$1_dev.ifname" >/dev/null && return # do not create macvlan for vlan local _ifname _ifname=$(uci -q get "network.$1.ifname") case "$_ifname" in eth*.*) return ;; esac uci -q batch <<-EOF set network.$1_dev=device set network.$1_dev.name=$1 set network.$1_dev.type=macvlan set network.$1_dev.ifname=$_ifname set network.$1.ifname=$1 EOF _macaddr=$(uci -q get "network.$1.macaddr") _setup_macaddr "$1" "${_macaddr:-auto$(date +%s)}" uci -q set "network.$1.type=macvlan" # legacy } _setup_multipath_off() { uci -q get "network.$1.multipath" >/dev/null && return uci -q set "network.$1.multipath=off" } _setup_wan_interface() { uci -q batch <<-EOF set network.$1=interface set network.$1.ifname=$2 set network.$1.proto=static set network.$1.ip4table=wan set network.$1.multipath=$3 set network.$1.defaultroute=0 commit network add_list firewall.@zone[1].network=$1 commit firewall EOF [ -n "$4" ] && uci -q set network.$1.type=$4 } uci -q batch </dev/null || \ uci -q batch <<-EOF set network.lan_rule=rule set network.lan_rule.lookup=lan set network.lan_rule.priority=100 EOF if [ "$(uci -q get network.vpn0.proto)" = "none" ]; then uci -q delete network.vpn0 fi config_load network config_foreach _setup_multipath_off interface # Add the lan as a named routing table if ! grep -s -q "lan" /etc/iproute2/rt_tables; then echo "50 lan" >> /etc/iproute2/rt_tables fi uci -q set network.lan.ip4table='lan' #uci -q set "network.lan.ip6assign=64" # Create WAN interfaces if [ "$(uci -q show network | grep wan1)" = "" ]; then if [ -d /sys/class/net/wan ]; then uci -q batch <<-EOF delete network.wan EOF _setup_wan_interface wan1 wan master macvlan _setup_wan_interface wan2 wan on macvlan _setup_macvlan wan1 _setup_macvlan wan2 elif [ -d /sys/class/net/eth1 ]; then if [ -d /sys/class/net/eth2 ]; then _setup_wan_interface wan1 eth1 master _setup_wan_interface wan2 eth2 on else _setup_wan_interface wan1 eth1 master macvlan _setup_wan_interface wan2 eth1 on macvlan _setup_macvlan wan1 _setup_macvlan wan2 fi else _setup_wan_interface wan1 eth0 master macvlan _setup_wan_interface wan2 eth0 on macvlan _setup_macvlan wan1 _setup_macvlan wan2 fi uci -q batch <<-EOF add network route6 set network.@route6[-1].interface='lan' set network.@route6[-1].target='::/0' commit network EOF rm -f /tmp/luci-indexcache fi exit 0