#!/bin/bash

# Nantian
STR_VID="1dfc"
STR_PIDS="0020,0021"
arr_usb=()
ARR_PIDS=()
HT_USB_NIC_METRIC_BASE=90000
FOUND_TARGET_DEVICE=0

# LOG SWITCHER
LOG_FILE=/tmp/reset_usb_nic_metric.log
#LOG_FILE=/dev/stdout


echo " ===== run reset usb nic metric =====" >> $LOG_FILE


	echo "$IFACE is up." >> $LOG_FILE
	IFS=$',' read -r -a ARR_PIDS <<< "$STR_PIDS"
	echo "PID_COUNT:${#ARR_PIDS[@]}" >> $LOG_FILE
	unset IFS
	fVid=$(udevadm info --query=all --path=/sys/class/net/$IFACE | grep 'ID_VENDOR_ID'| sed 's/.*=//')
	fPid=$(udevadm info --query=all --path=/sys/class/net/$IFACE | grep 'ID_MODEL_ID'| sed 's/.*=//')
	
	echo "$fVid $fPid" >> $LOG_FILE

	for pid in "${ARR_PIDS[@]}"; do
		echo "current pid item: $pid" >> $LOG_FILE

		if [[ "$STR_VID" == "$fVid" && "$pid" == "$fPid" ]]; then
			FOUND_TARGET_DEVICE=1
			echo "Found $fVid and $fPid !" >> $LOG_FILE
		fi
	done

	if [[ $FOUND_TARGET_DEVICE == 0 ]]; then
		echo "Not Found. exit" >> $LOG_FILE
		exit 0;
	fi	

	usb_no=$(echo $IFACE | awk -F'usb' '{print $2}')
	echo "$IFACE no:$usb_no" >> $LOG_FILE
	usb_metric=$(ip route show | grep "default via 192.168.7.1 dev $IFACE" | awk -F'metric ' '{print $2}')
	echo "$IFACE metric:$usb_metric" >> $LOG_FILE
	USBMETRIC_ASSIGN=$((usb_no + HT_USB_NIC_METRIC_BASE))
	USBMETRIC=$((usb_metric))
	if [[ "$USBMETRIC_ASSIGN" != "$USBMETRIC" ]]; then
		echo $(ip route show | grep "default via")
		sudo ip route del default via 192.168.7.1 dev $IFACE
		sleep 1
		sudo ip route add default via 192.168.7.1 dev $IFACE metric "$USBMETRIC_ASSIGN"
		echo $(ip route show | grep "default via")
	fi
