#!/bin/ash
Z_WAN_IF="eth0"
Z_WAN2_IF="eth2"
Z_WAN2_MAC="A0:63:91:B8:86:BC"
Z_TABLE="200"
Z_WAIT=5
Z_COUNT=0
# Create interface if it doesn't exist
if [ $(ip link | grep "${Z_WAN_IF}" | grep UP | wc -l) -gt 0 ]; then
if [ $(ip link | grep "${Z_WAN2_IF}" | wc -l) -lt 1 ]; then
ip link add link ${Z_WAN_IF} ${Z_WAN2_IF} type macvlan
if [ $? -ne 0 ]; then exit; fi
ifconfig ${Z_WAN2_IF} hw ether "${Z_WAN2_MAC}"
if [ $? -ne 0 ]; then exit; fi
# Wait for interface
Z_COUNT=0
while [ ${Z_COUNT} -lt ${Z_WAIT} ]; do
if [ $(ip link | grep "${Z_WAN2_IF}" | wc -l) -eq 1 ]; then
break;
fi
sleep 1
Z_COUNT=$(expr ${Z_COUNT} + 1)
done
fi
fi
if [ $(ip link | grep "${Z_WAN2_IF}" | grep UP | wc -l) -eq 1 ] && [ -z "${1}" ]; then
Z_WAN_IP="$(ip addr | grep "${Z_WAN_IF}" -A2 | grep inet | grep "/24" | cut -d' ' -f6 | cut -d'/' -f1)"
if [ "${Z_WAN_IP}" == "" ]; then exit; fi
if [ $(ip route show table ${Z_TABLE} | grep "${Z_WAN2_IF}" | wc -l) -eq 0 ]; then
Z_COUNT=0
while [ ${Z_COUNT} -lt ${Z_WAIT} ]; do
Z_WAN2_IP="$(ip addr | grep "${Z_WAN2_IF}" -A2 | grep inet | grep "/24" | cut -d' ' -f6 | cut -d'/' -f1)"
if [ "${Z_WAN2_IP}" != "" ]; then break; fi
Z_COUNT=$(expr ${Z_COUNT} + 1)
sleep 1
done
if [ "${Z_WAN2_IP}" == "" ]; then exit; fi
Z_WAN2_GATEWAY="$(echo ${Z_WAN2_IP} | cut -d'.' -f1,2,3).254"
ip route flush table ${Z_TABLE}
ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table ${Z_TABLE} ${ROUTE} ; done
ip route add default via ${Z_WAN2_GATEWAY} dev ${Z_WAN2_IF} src ${Z_WAN2_IP} table ${Z_TABLE}
ip rule add fwmark ${Z_TABLE} table ${Z_TABLE}
ip route flush cache
fi
iptables -A OUTPUT -o eth2 -j MARK --set-mark ${Z_TABLE}
# Set WAN2 Flag for Free Wifi
iptables -t mangle -A PREROUTING -i wlan1-1 -j MARK --set-mark ${Z_TABLE}
# Set WAN2 Flag for Zefie Server
iptables -t mangle -A PREROUTING -m mac --mac-source 1C:75:08:11:83:96 -j MARK --set-mark ${Z_TABLE}
exit 0;
fi
Comments