4 .
/lib
/functions
/network.sh
6 .
/usr
/share
/libubox
/jshn.sh
8 [ "$ACTION" == "ifup" -o "$ACTION" == "ifdown" ] ||
exit 1
9 [ -n "$INTERFACE" ] ||
exit 2
11 if [ "$ACTION" == "ifup" ]; then
12 [ -n "$DEVICE" ] ||
exit 3
16 mwan3_set_connected_iptables
20 config_get enabled
$INTERFACE enabled
0
21 config_get initial_state
$INTERFACE initial_state
"online"
22 [ "$enabled" == "1" ] ||
exit 0
24 if [ "$ACTION" == "ifup" ]; then
25 config_get family
$INTERFACE family ipv4
26 if [ "$family" = "ipv4" ]; then
27 ubus call network.interface.
${INTERFACE}_4 status
&>/dev
/null
28 if [ "$?" -eq "0" ]; then
29 network_get_gateway gateway
${INTERFACE}_4
30 network_get_ipaddr src_ip
${INTERFACE}_4
32 network_get_gateway gateway
$INTERFACE
33 network_get_ipaddr src_ip
${INTERFACE}
35 elif [ "$family" = "ipv6" ]; then
36 ubus call network.interface.
${INTERFACE}_6 status
&>/dev
/null
37 if [ "$?" -eq "0" ]; then
38 network_get_gateway6 gateway
${INTERFACE}_6
39 network_get_ipaddr6 src_ip
${INTERFACE}_6
41 network_get_gateway6 gateway
${INTERFACE}
42 network_get_ipaddr6 src_ip
${INTERFACE}
46 [ -n "$gateway" ] ||
exit 9
49 if [ "$initial_state" = "offline" ]; then
50 json_load
"$(ubus call mwan3 status '{"section
":"interfaces
"}')"
51 json_select
"interfaces"
52 json_select
"${INTERFACE}"
53 json_get_var running running
54 json_get_var status status
61 $LOG notice
"Execute "$ACTION" event on interface $INTERFACE (${DEVICE:-unknown})"
65 mwan3_set_general_rules
66 mwan3_set_general_iptables
67 mwan3_create_iface_iptables
$INTERFACE $DEVICE
68 mwan3_create_iface_rules
$INTERFACE $DEVICE
69 mwan3_create_iface_route
$INTERFACE $DEVICE
70 if [ ${running} -eq 1 -a "${status}" = "online" ]; then
71 $LOG notice
"Starting tracker on interface $INTERFACE (${DEVICE:-unknown})"
72 mwan3_set_iface_hotplug_state
$INTERFACE "online"
73 mwan3_track
$INTERFACE $DEVICE "online" "$src_ip"
74 mwan3_set_policies_iptables
76 mwan3_flush_conntrack
$INTERFACE $DEVICE "ifup"
78 $LOG notice
"Starting tracker on interface $INTERFACE (${DEVICE:-unknown})"
79 mwan3_set_iface_hotplug_state
$INTERFACE "offline"
80 mwan3_track
$INTERFACE $DEVICE "unknown" "$src_ip"
84 mwan3_set_iface_hotplug_state
$INTERFACE "offline"
85 mwan3_delete_iface_ipset_entries
$INTERFACE
86 mwan3_track_signal
$INTERFACE $DEVICE
87 mwan3_set_policies_iptables
89 mwan3_flush_conntrack
$INTERFACE $DEVICE "ifdown"