#
# Copyright © 2017 OpenWrt.org
#

. /lib/functions/system.sh
. /lib/functions/uci-defaults.sh

board_config_update

case "$(board_name)" in
barracuda-networks-inc-barracuda-ng-firewall-f12)
	ucidef_set_network_device_path "eth1" "pci0000:00/0000:00:14.0/0000:01:00.0"
	ucidef_set_network_device_path "eth2" "pci0000:00/0000:00:14.1/0000:02:00.0"
	ucidef_set_network_device_path "eth3" "pci0000:00/0000:00:13.0/0000:03:00.0"
	ucidef_set_network_device_path "eth4" "pci0000:00/0000:00:13.1/0000:04:00.0"
	ucidef_set_network_device_path "eth5" "pci0000:00/0000:00:13.2/0000:05:00.0"
	ucidef_set_interfaces_lan_wan "eth2 eth3 eth4 eth5" "eth1"
	;;
cisco-mx100-hw)
	ucidef_set_network_device_path "mgmt" "pci0000:00/0000:00:01.2/0000:03:00.3"
	ucidef_set_network_device_path "wan" "pci0000:00/0000:00:01.2/0000:03:00.2"
	ucidef_set_network_device_path "eth2" "pci0000:00/0000:00:01.2/0000:03:00.1"
	ucidef_set_network_device_path "eth3" "pci0000:00/0000:00:01.2/0000:03:00.0"
	ucidef_set_network_device_path "eth4" "pci0000:00/0000:00:01.0/0000:01:00.2"
	ucidef_set_network_device_path "eth5" "pci0000:00/0000:00:01.0/0000:01:00.1"
	ucidef_set_network_device_path "eth6" "pci0000:00/0000:00:01.0/0000:01:00.4"
	ucidef_set_network_device_path "eth7" "pci0000:00/0000:00:01.0/0000:01:00.3"
	ucidef_set_network_device_path "eth8" "pci0000:00/0000:00:01.1/0000:02:00.1"
	ucidef_set_network_device_path "eth9" "pci0000:00/0000:00:01.1/0000:02:00.0"
	ucidef_set_network_device_path "eth10" "pci0000:00/0000:00:01.1/0000:02:00.3"
	ucidef_set_network_device_path "eth11" "pci0000:00/0000:00:01.1/0000:02:00.2"
	ucidef_set_interfaces_lan_wan "mgmt eth2 eth3 eth4 eth5 eth6 eth7 eth8 eth9 eth10 eth11" "wan"
	;;
dell-emc-edge620)
	ucidef_set_interfaces_lan_wan "eth0 eth1 eth2 eth3 eth7" "eth6"
	;;
dfi-inc-adn553| \
dfi-inc-asl553)
	ucidef_set_network_device_path "eth0" "pci0000:00/0000:00:1c.0/0000:01:00.0"
	ucidef_set_network_device_path "eth1" "pci0000:00/0000:00:1d.0/0000:03:00.0"
	ucidef_set_network_device_path "eth2" "pci0000:00/0000:00:1c.6/0000:02:00.0"
	ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
	;;
gowin-solution-co-ltd-gw-mb-u01)
	ucidef_set_network_device_path "eth1" "pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:02.0/0000:04:00.0"
	ucidef_set_network_device_path "eth2" "pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:00.0/0000:03:00.0"
	ucidef_set_network_device_path "eth3" "pci0000:00/0000:00:1c.2/0000:07:00.0/0000:08:02.0/0000:0a:00.0"
	ucidef_set_network_device_path "eth4" "pci0000:00/0000:00:1c.2/0000:07:00.0/0000:08:00.0/0000:09:00.0"
	ucidef_set_network_device_path "poe"  "pci0000:00/0000:00:1c.2/0000:07:00.0/0000:08:06.0/0000:0b:00.0"

	sfp_device="pci0000:00/0000:00:1d.0"
	sfp_device_path="/sys/devices/$sfp_device"

	pci_count="$(ls -d $sfp_device_path/0000:*:00.* 2>/dev/null | wc -l)"
	if [ "$pci_count" -eq 2 ]; then
		sfp_port1="$(basename $sfp_device_path/0000:*:00.1)"
		sfp_port2="$(basename $sfp_device_path/0000:*:00.0)"

		ucidef_set_network_device_path "sfp1" "$sfp_device/$sfp_port1"
		ucidef_set_network_device_path "sfp2" "$sfp_device/$sfp_port2"
	elif [ "$pci_count" -eq 1 ]; then
		sfp_port="$(basename $sfp_device_path/0000:*:00.0)"

		ucidef_set_network_device_path_port "sfp1" "$sfp_device/$sfp_port" "1"
		ucidef_set_network_device_path_port "sfp2" "$sfp_device/$sfp_port" "0"
	fi

	ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4 poe" "sfp1 sfp2"
	;;
micro-computer-hk-tech-limited-ms-a2)
	ucidef_set_network_device_path "lan1" "pci0000:00/0000:00:03.2/0000:04:00.0"
	ucidef_set_network_device_path "lan2" "pci0000:00/0000:00:03.1/0000:03:00.0"
	ucidef_set_network_device_path "sfp1" "pci0000:00/0000:00:02.1/0000:05:00.0"
	ucidef_set_network_device_path "sfp2" "pci0000:00/0000:00:02.1/0000:05:00.1"
	ucidef_set_interface_lan "lan1 lan2 sfp1 sfp2"
	;;
mellanox-technologies-ltd-msn2100)
	ucidef_set_network_device_path "mgmt" "pci0000:00/0000:00:14.0"
	ucidef_set_interface_lan "mgmt "
	ucidef_set_interface_netdev_range "lan" "swp" "1" "16"
	;;
mellanox-technologies-ltd-msn2700)
	ucidef_set_network_device_path "mgmt0" "pci0000:00/0000:00:19.0"
	ucidef_set_network_device_path "mgmt1" "pci0000:00/0000:00:1c.6/0000:06:00.0"
	ucidef_set_interface_lan "mgmt0 mgmt1 "
	ucidef_set_interface_netdev_range "lan" "swp" "1" "32"
	;;
mellanox-technologies-ltd-msn3420)
	ucidef_set_network_device_path "mgmt" "pci0000:00/0000:00:1c.7/0000:09:00.0"
	ucidef_set_interface_lan "mgmt "
	ucidef_set_interface_netdev_range "lan" "swp" "1" "60"
	;;
mellanox-technologies-ltd-msn3700)
	ucidef_set_network_device_path "mgmt" "pci0000:00/0000:00:1c.7/0000:09:00.0"
	ucidef_set_interface_lan "mgmt "
	ucidef_set_interface_netdev_range "lan" "swp" "1" "32"
	;;
pc-engines-apu1|pc-engines-apu2|pc-engines-apu3)
	ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
	;;
pc-engines-apu5)
	ucidef_set_interfaces_lan_wan "eth1" "eth0"
	;;
pc-engines-apu4|pc-engines-apu6)
	ucidef_set_interfaces_lan_wan "eth1 eth2 eth3" "eth0"
	;;
roqos-roqos-core-rc10)
	ucidef_set_interfaces_lan_wan "eth1" "eth0"
	;;
sophos-sg-105r1|sophos-xg-105r1| \
sophos-sg-105wr1|sophos-xg-105wr1| \
sophos-sg-105r2|sophos-xg-105r2| \
sophos-sg-105wr2|sophos-xg-105wr2| \
sophos-sg-115r1|sophos-xg-115r1| \
sophos-sg-115wr1|sophos-xg-115wr1| \
sophos-sg-115r2|sophos-xg-115r2| \
sophos-sg-115wr2|sophos-xg-115wr2| \
sophos-xg-85*|sophos-xg-86*)
	ucidef_set_interfaces_lan_wan "eth0 eth2 eth3" "eth1"
	;;
sophos-sg-125r1|sophos-xg-125r1| \
sophos-sg-125wr1|sophos-xg-125wr1| \
sophos-sg-125r2|sophos-xg-125r2| \
sophos-sg-125wr2|sophos-xg-125wr2| \
sophos-sg-135r1|sophos-xg-135r1| \
sophos-sg-135wr1|sophos-xg-135wr1| \
sophos-sg-135r2|sophos-xg-135r2| \
sophos-sg-135wr2|sophos-xg-135wr2)
	ucidef_set_interfaces_lan_wan "eth0 eth2 eth3 eth4 eth5 eth6 eth7" "eth1"
	;;
sophos-sg-135r3|sophos-xg-135r3| \
sophos-sg-135wr3|sophos-xg-135wr3)
	ucidef_set_interfaces_lan_wan "eth0 eth1 eth2 eth3 eth5 eth7 eth8" "eth6"
	;;
sophos-sg-210r3|sophos-xg-210r3| \
sophos-sg-230r2|sophox-xg-230r2)
	ucidef_set_interfaces_lan_wan "eth0 eth2 eth3 eth4 eth5" "eth1"
	;;
supermicro-sys-e302-9d)
	ucidef_set_interface_lan "eth0 eth1 eth2 eth3 eth4 eth5 eth6 eth7"
	;;
traverse-technologies-geos)
	ucidef_set_interface_lan "eth0 eth1"
	ucidef_add_atm_bridge "0" "35" "llc" "bridged"
	ucidef_set_interface_wan "nas0" "dhcp"
	macaddr="$(cat /sys/class/net/eth0/address)" 2>/dev/null
	[ -n "$macaddr" ] && ucidef_set_interface_macaddr "wan" "$macaddr"
	;;
silicom-80500-0214-*)
        ucidef_set_network_device_path "wan0" "pci0000:00/0000:00:16.0/0000:03:00.0"
        ucidef_set_network_device_path "wan1" "pci0000:00/0000:00:16.0/0000:03:00.1"
        ucidef_set_network_device_path "media0" "pci0000:00/0000:00:17.0/0000:02:00.1"
        ucidef_set_network_device_path "media1" "pci0000:00/0000:00:17.0/0000:02:00.0"
        ucidef_set_network_device_path "eth0" "pci0000:00/0000:00:0c.0/0000:04:00.0"
        ucidef_set_network_device_path "eth1" "pci0000:00/0000:00:0e.0/0000:05:00.0"
        ucidef_set_network_device_path "eth2" "pci0000:00/0000:00:0f.0/0000:06:00.0"
        ucidef_set_network_device_path "eth3" "pci0000:00/0000:00:10.0/0000:07:00.0"
        ucidef_set_interfaces_lan_wan "eth0 eth1 eth2 eth3" "wan0"
        ;;
esac
board_config_flush

exit 0
