Adding Support for Verizon CR1000A

Yes, I'm pretty sure it'll just work, it's compiled against musl, and links to libubox and libubus which should be present on OpenWRT. We might need to fudge linking paths a bit in the ELF, but it's not a problem.

Here's how it's used, you just pipe config into the binary and it sets up the LAN for you:

#!/bin/sh /etc/rc.common

START=20

DIAG_FIFO=/tmp/rtl9303_diag.fifo

. /usr/sbin/qos/qos_defs.sh

set_static_l2_table_entry()
{
	lan_mac=`uci get hal.system.mac_address_eth`
	if [ "$lan_mac" != "" ]; then
		# untag
		echo "l2-table add mac-ucast 1 $lan_mac port 27" > $DIAG_FIFO
		echo "l2-table set mac-ucast 1 $lan_mac port 27 static" > $DIAG_FIFO

		# vlan id 10
		echo "l2-table add mac-ucast 10 $lan_mac port 27" > $DIAG_FIFO
		echo "l2-table set mac-ucast 10 $lan_mac port 27 static" > $DIAG_FIFO

		# vlan id 20
		echo "l2-table add mac-ucast 20 $lan_mac port 27" > $DIAG_FIFO
		echo "l2-table set mac-ucast 20 $lan_mac port 27 static" > $DIAG_FIFO

		# vlan id 30
		echo "l2-table add mac-ucast 30 $lan_mac port 27" > $DIAG_FIFO
		echo "l2-table set mac-ucast 30 $lan_mac port 27 static" > $DIAG_FIFO

		echo "l2-table set port-move sttc-port-move learn state enable" > $DIAG_FIFO
		echo "l2-table set port-move sttc-port-move action drop" > $DIAG_FIFO
	fi
}
enable_eee_mode()
{
	echo "eee set port 8 state enable" > $DIAG_FIFO
	echo "eee set port 20 state enable" > $DIAG_FIFO
	echo "eee set port 24 state enable" > $DIAG_FIFO
	echo "eee set port 25 state enable" > $DIAG_FIFO
	echo "eee set port 27 state enable" > $DIAG_FIFO
}

set_ether_led(){
	#10G Lan LED
	echo "port set phy-mmd-reg port 8 mmd-addr 0x1E  mmd-reg 0xc430 data 0xC0C0" > /tmp/rtl9303_diag.fifo
	echo "port set phy-mmd-reg port 8 mmd-addr 0x1E  mmd-reg 0xc431 data 0x20" > /tmp/rtl9303_diag.fifo
	#2.5G Lan LED
	echo "port set phy-mmd-reg port 20 mmd-addr 0x1F  mmd-reg 0xd032 data 0x24" > /tmp/rtl9303_diag.fifo
	echo "port set phy-mmd-reg port 20 mmd-addr 0x1F  mmd-reg 0xd034 data 0x3" > /tmp/rtl9303_diag.fifo
	echo "port set phy-mmd-reg port 24 mmd-addr 0x1F  mmd-reg 0xd032 data 0x24" > /tmp/rtl9303_diag.fifo
	echo "port set phy-mmd-reg port 24 mmd-addr 0x1F  mmd-reg 0xd034 data 0x3" > /tmp/rtl9303_diag.fifo
}

boot() {
	mkfifo $DIAG_FIFO
	tail -f $DIAG_FIFO | /usr/bin/usrApp&
	sleep 2

	echo "port set port all state disable" > $DIAG_FIFO

	# Clean up vlan table and l2 table for caching
	# echo "vlan destroy all restore-default-vlan" > $DIAG_FIFO
	echo "l2-table del all" > $DIAG_FIFO
	sleep 2


	# Create vlan-table vid is 1 for untag
	# vid 0 will untag in ingress, then need to use acl command to tag vid 0
	util_ethernet_cli createvlan 0
	util_ethernet_cli setvlan 0 member all
	util_ethernet_cli setvlan 0 untag-port 27

	util_ethernet_cli setvlan 1 member all
	util_ethernet_cli setvlan 1 untag-port all
	util_ethernet_cli setvlanpvidinnerport 1
	util_ethernet_cli setpvidmode untag-only

	# Guest wifi
	util_ethernet_cli createvlan 10
	util_ethernet_cli setvlan 10 member all

	# Zenreach AP
	util_ethernet_cli createvlan 20
	util_ethernet_cli setvlan 20 member all

	# IoT wifi
	util_ethernet_cli createvlan 30
	util_ethernet_cli setvlan 30 member all
	
	#switch internal proirity to queue
	util_ethernet_cli set_internal_pri_to_queue 0 1 1 0 2 2 3 3 4 4 5 5 6 6 7 7
	
	#Strict
	util_ethernet_cli set_scheduler sp
	
	#acl filter vlan 10
	#acl set pbit 1, dscp 8 and internal priority 1
	util_ethernet_cli set_acl_rule entry $GUEST_ENTRY_BASE vid 10 pbit_action 1 dscp_action 8 queue 1

	set_static_l2_table_entry

	enable_eee_mode

	echo "port set port all state enable" > $DIAG_FIFO
	set_ether_led

}