#!/bin/sh

case "$1" in
    start)
        #workaround required for the debian 10 player that is behind a NATd VIP. during boot it may have identified this as a serial device while the VIP was in process of enumerating its devices (before it was fully set up).
        #by resetting the usb, the player will correctly identify it as a new ethernet device.
        grep -q ForwardingAddress /var/www/localhost/htdocs/daktronics/syscontrol/1.0/configuration/configuration;
        if [ $? -eq 0 ]; then
            logger "Configured for NAT"
            ifup usb0 2>&1 | logger
            if [ ! -e /dev/shm/iptables.rules ]; then
                logger "Generating iptables rules"
                /usr/local/sbin/networkd --nat
            fi

            local tries=10
            while [ $tries -gt 0 ]; do
                ip neigh show dev usb0 | grep -q REACHABLE;
                if [ $? -eq 1 ]; then
                    let tries-=1
                    if [ $tries -gt 0 ]; then
                        logger "Player not reachable. remaining tries $tries"
                        sleep 1;
                    else
                        logger "Player not reachable, resetting usb0"
                        echo 0 > /sys/devices/platform/musb-am35x.0/musb-hdrc.0/usb2/authorized;
                        echo 1 > /sys/devices/platform/musb-am35x.0/musb-hdrc.0/usb2/authorized;
                    fi
                else
                    logger "Player is reachable"
                    break;
                fi
            done
        fi
        
        #verify eth0 is up and has an ip
        local ip=`ifconfig | grep eth0 -A 1 | grep inet | awk -F: '{print $2}' | awk '{print $1}'`
        if [ -z "${ip}" ]; then
            logger "No eth0 ip. Toggling eth0 adapter."
            logger "ifconfig"
            ifconfig | logger
            logger "Toggle eth0 down"
            ifdown eth0 2>&1 | logger
            logger "Toggle eth0 up"
            ifup eth0 2>&1 | logger
        fi
        
        #always log adapter info
        logger "ifconfig"
        ifconfig | logger
        ;;
    *)
        echo "Usage: /etc/init.d/zverifynetworking {start}"
        exit 1
        ;;
esac

exit 0