lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

15-mwan3 (1824B)


      1 #!/bin/sh
      2 
      3 . /lib/functions.sh
      4 . /lib/functions/network.sh
      5 . /lib/mwan3/mwan3.sh
      6 
      7 config_load mwan3
      8 
      9 config_get enabled $INTERFACE enabled 0
     10 [ "$enabled" == "1" ] || exit 0
     11 
     12 [ "$ACTION" == "ifup" -o "$ACTION" == "ifdown" ] || exit 1
     13 [ -n "$INTERFACE" ] || exit 2
     14 
     15 if [ "$ACTION" == "ifup" ]; then
     16         [ -n "$DEVICE" ] || exit 3
     17 fi
     18 
     19 [ -x /usr/bin/ip ] || exit 4
     20 [ -x /usr/sbin/ipset ] || exit 5
     21 [ -x /usr/sbin/iptables ] || exit 6
     22 [ -x /usr/sbin/ip6tables ] || exit 7
     23 [ -x /usr/bin/logger ] || exit 8
     24 
     25 if [ "$ACTION" == "ifup" ]; then
     26 	config_get family $INTERFACE family ipv4
     27 	if [ "$family" = "ipv4" ]; then
     28 		ubus call network.interface.${INTERFACE}_4 status &>/dev/null
     29 		if [ "$?" -eq "0" ]; then
     30 			network_get_gateway gateway ${INTERFACE}_4
     31 		else
     32 			network_get_gateway gateway $INTERFACE
     33 		fi
     34 	elif [ "$family" = "ipv6" ]; then
     35 		ubus call network.interface.${INTERFACE}_6 status &>/dev/null
     36 		if [ "$?" -eq "0" ]; then
     37 			network_get_gateway6 gateway ${INTERFACE}_6
     38 		else
     39 			network_get_gateway6 gateway ${INTERFACE}
     40 		fi
     41 	fi
     42 
     43 	[ -n "$gateway" ] || exit 9
     44 fi
     45 
     46 $LOG notice "$ACTION interface $INTERFACE (${DEVICE:-unknown})"
     47 
     48 mwan3_set_connected_iptables
     49 
     50 case "$ACTION" in
     51 	ifup)
     52 		mwan3_set_general_rules
     53 		mwan3_set_general_iptables
     54 		mwan3_create_iface_rules $INTERFACE $DEVICE
     55 		mwan3_create_iface_iptables $INTERFACE $DEVICE
     56 		mwan3_create_iface_route $INTERFACE $DEVICE
     57 		mwan3_track $INTERFACE $DEVICE
     58 		mwan3_set_policies_iptables
     59 		mwan3_set_user_rules
     60 		mwan3_flush_conntrack $INTERFACE $DEVICE "ifup"
     61 	;;
     62 	ifdown)
     63 		mwan3_delete_iface_rules $INTERFACE
     64 		mwan3_delete_iface_iptables $INTERFACE
     65 		mwan3_delete_iface_route $INTERFACE
     66 		mwan3_delete_iface_ipset_entries $INTERFACE
     67 		mwan3_set_policies_iptables
     68 		mwan3_set_user_rules
     69 		mwan3_flush_conntrack $INTERFACE $DEVICE "ifdown"
     70 	;;
     71 esac
     72 
     73 exit 0