#!/bin/sh
|
|
|
|
. /lib/functions.sh
|
|
. /lib/mwan3/mwan3.sh
|
|
. /lib/functions/network.sh
|
|
|
|
[ "$ACTION" = "ifup" -o "$ACTION" = "ifdown" ] || exit 1
|
|
[ -n "$INTERFACE" ] || exit 2
|
|
|
|
if [ "$ACTION" = "ifup" ]; then
|
|
[ -n "$DEVICE" ] || exit 3
|
|
fi
|
|
|
|
config_load mwan3
|
|
config_get_bool enabled globals 'enabled' '0'
|
|
[ ${enabled} -gt 0 ] || exit 0
|
|
|
|
config_get local_source globals local_source 'none'
|
|
[ "${local_source}" = "none" ] && {
|
|
exit 0
|
|
}
|
|
|
|
[ "${local_source}" = "$INTERFACE" ] || {
|
|
exit 0
|
|
}
|
|
|
|
mwan3_lock
|
|
src_ip=$(uci_get_state mwan3 globals src_ip)
|
|
[ "${src_ip}" != "" ] && {
|
|
ip route del default via "${src_ip}" dev lo 1>/dev/null 2>&1
|
|
ip addr del "${src_ip}/32" dev lo 1>/dev/null 2>&1
|
|
}
|
|
|
|
sleep 1
|
|
|
|
[ "$ACTION" = "ifup" ] && {
|
|
network_get_ipaddr src_ip "${local_source}"
|
|
if [ "${src_ip}" = "" ]; then
|
|
$LOG warn "Unable to set source ip for own initiated traffic (${local_source})"
|
|
else
|
|
ip addr add "${src_ip}/32" dev lo
|
|
ip route add default via "${src_ip}" dev lo
|
|
uci_toggle_state mwan3 globals src_ip "${src_ip}"
|
|
fi
|
|
}
|
|
mwan3_unlock
|
|
|
|
exit 0
|