+++ /dev/null
-#!/bin/sh
-
-. /lib/functions.sh
-. /lib/functions/network.sh
-. /lib/mwan3/mwan3.sh
-
-LOG="logger -t mwan3[$$] -p"
-
-[ "$ACTION" = "connected" -o "$ACTION" = "disconnected" ] || exit 1
-[ -n "$INTERFACE" ] || exit 2
-
-if [ "$ACTION" = "connected" ]; then
- [ -n "$DEVICE" ] || exit 3
-fi
-
-config_load mwan3
-config_get_bool enabled globals 'enabled' '0'
-config_get local_source globals 'local_source' 'none'
-[ ${enabled} = "1" ] || exit 0
-[ ${local_source} = "none" ] || exit 0
-
-config_get enabled $INTERFACE enabled 0
-config_get online_metric $INTERFACE online_metric 0
-[ "$enabled" == "1" ] || exit 0
-
-if [ "$online_metric" = 0 ]; then
- $LOG notice "No online metric for interface "$INTERFACE" found"
- exit 0
-fi
-
-mwan3_add_failover_metric() {
- local iface="$1"
- local device="$2"
- local metric="$3"
-
- local route_args
-
- config_get family $iface family ipv4
-
- if [ "$family" == "ipv4" ]; then
- if ubus call network.interface.${iface}_4 status 1>/dev/null 2>&1; then
- network_get_gateway route_args ${iface}_4
- else
- network_get_gateway route_args $iface
- fi
-
- if [ -n "$route_args" -a "$route_args" != "0.0.0.0" ]; then
- route_args="via $route_args"
- else
- route_args=""
- fi
-
- $IP4 route add default $route_args dev $device proto static metric $metric 1>/dev/null 2>&1
- fi
-
- if [ "$family" == "ipv6" ]; then
- if ubus call network.interface.${iface}_6 status 1>/dev/null 2>&1; then
- network_get_gateway6 route_args ${iface}_6
- else
- network_get_gateway6 route_args $iface
- fi
-
- if [ -n "$route_args" -a "$route_args" != "::" ]; then
- route_args="via $route_args"
- else
- route_args=""
- fi
-
- $IP6 route add default $route_args dev $device proto static metric $metric 1>/dev/null 2>&1
- fi
-}
-
-mwan3_del_failover_metric() {
- local iface="$1"
- local device="$2"
- local metric="$3"
-
- config_get family $iface family ipv4
-
- if [ "$family" == "ipv4" ]; then
- $IP4 route del default dev $device proto static metric $metric 1>/dev/null 2>&1
- fi
-
- if [ "$family" == "ipv6" ]; then
- $IP6 route del default dev $device proto static metric $metric 1>/dev/null 2>&1
- fi
-}
-
-case "$ACTION" in
- connected)
- mwan3_add_failover_metric "$INTERFACE" "$DEVICE" "$online_metric"
- ;;
- disconnected)
- mwan3_del_failover_metric "$INTERFACE" "$DEVICE" "$online_metric"
- ;;
-esac
-
-exit 0
fi
}
}
-
-mwan3_online_metric_clean() {
- local iface="$1"
-
- local online_metric ifname
-
- config_get family $iface family ipv4
- config_get online_metric $iface online_metric ""
- ifname=$(uci_get_state network $iface ifname)
-
- if [ "$family" == "ipv4" ] \
- && [ "$online_metric" != "" ] \
- && [ "$ifname" != "" ]; then
- $IP4 route del default dev $ifname proto static metric $online_metric 1>/dev/null 2>&1
- fi
-
- if [ "$family" == "ipv6" ] \
- && [ "$online_metric" != "" ] \
- && [ "$ifname" != "" ]; then
- $IP6 route del default dev $ifname proto static metric $online_metric 1>/dev/null 2>&1
- fi
-}