#!/bin/sh
#-------------------------------------------------------------------------
#  Netgear System Software : Package Make File for SOAP AGENT 
#
#  Copyright 2019 Netgear Inc.
#  All Rights Reserved.
#
#  NETGEAR WIRELESS SYSTEM SOFTWARE @ NETGEAR
#  THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND
#  TRADE SECRETS OF NETGEAR INC.
#  USE, DISCLOSURE OR REPRODUCTION IS PROHIBITED WITHOUT
#  THE PRIOR EXPRESS WRITTEN PERMISSION OF NETGEAR INC.
#-------------------------------------------------------------------------

lock -n /tmp/ntgrlog_running || return

#Get VAP List from ifconfig
cd /sys/devices/virtual/net/

ath_interfaces=`ls ath[0-9] ath[0-9][0-9] -ld | awk {'print $9'}`

cd /sys/class/net

wifi_interfaces=`ls wifi[0-9] -ld | awk {'print $9'}`

cd /

mkdir -p /tmp/ntgrlog

NTGRLOG_FILE=/tmp/ntgrlog/ntgr_debug_cmd_log

dmesg >> $NTGRLOG_FILE
nvram show >> $NTGRLOG_FILE

for vap in $ath_interfaces
do
    operstate=`cat /sys/devices/virtual/net/$vap/operstate`
    if [ "$operstate" = "up" ]; then
        #Set Debug level for all the VAPs
        iwpriv $vap dbgLVL 0xC9E00018
    fi
done

echo "-----------------Version detail-----------" >> $NTGRLOG_FILE

cat /etc/version >> $NTGRLOG_FILE

dmesg -n1
num=0
while [ "$num" -lt 20 ]
do
    echo "---------------------------------------------------------> num is $num" > dev/console
    echo "-------------- iwconfig --------------" >> $NTGRLOG_FILE

    iwconfig >> $NTGRLOG_FILE

    echo "-------------- ifconfig --------------" >> $NTGRLOG_FILE

    ifconfig >> $NTGRLOG_FILE

    echo "-------------- arp --------------" >> $NTGRLOG_FILE

    cat /proc/net/arp  >> $NTGRLOG_FILE

    echo "-------------- route --------------" >> $NTGRLOG_FILE

    route -n >> $NTGRLOG_FILE

    echo "-------------- br-lan shomacs --------------" >> $NTGRLOG_FILE

    brctl showmacs br-lan >> $NTGRLOG_FILE

    echo "-------------- br-guest shomacs --------------" >> $NTGRLOG_FILE

    brctl showmacs br-guest >> $NTGRLOG_FILE

    echo "-------------- wlanconfig sta list --------------" >> $NTGRLOG_FILE

    for X in $ath_interfaces
    do
        echo "$X interface" >> $NTGRLOG_FILE

        wlanconfig $X list sta >> $NTGRLOG_FILE
    done

    echo "-------------- wifistats --------------" >> $NTGRLOG_FILE

    for X in 1 2 3 4 6 8 9 10 12 15 16 17
    do
        for Y in $wifi_interfaces
        do 
            echo "$Y interface $X stat" >> $NTGRLOG_FILE
            wifistats $Y $X >> $NTGRLOG_FILE
        done
    done 

    echo "-------------- iwpriv txrx_stats --------------" >> $NTGRLOG_FILE

    for X in $(seq 257 262)
    do 
        for Y in $ath_interfaces
        do
            echo "$Y interface $X stat" >> $NTGRLOG_FILE
            iwpriv $Y txrx_stats $X >> $NTGRLOG_FILE
        done
    done

    echo "-------------- apstats -r -i--------------" >> $NTGRLOG_FILE

    for X in $wifi_interfaces
    do 
        echo "$X interface" >> $NTGRLOG_FILE
        apstats -r -i $X >> $NTGRLOG_FILE
    done

    echo "-------------- apstats -c -i --------------" >> $NTGRLOG_FILE

    for X in $ath_interfaces
    do
        echo "$X interface" >> $NTGRLOG_FILE
        apstats -v -i $X >> $NTGRLOG_FILE
    done

    echo "-------------- td s2 --------------" >> $NTGRLOG_FILE

    (echo "td s2"; sleep 1) | hyt >> $NTGRLOG_FILE

    echo "-------------- hyctl show --------------" >> $NTGRLOG_FILE

    hyctl show >> $NTGRLOG_FILE

    echo "-------------- iptables -nvL --------------" >> $NTGRLOG_FILE

    iptables -L -v -n >> $NTGRLOG_FILE

    echo "-------------- uptime --------------" >> $NTGRLOG_FILE

    uptime >> $NTGRLOG_FILE

    echo "-------------- ps -w--------------" >> $NTGRLOG_FILE

    ps -w >> $NTGRLOG_FILE

    echo "-------------- top -b -n 1--------------" >> $NTGRLOG_FILE

    top -b -n 1 >> $NTGRLOG_FILE

    echo "-------------- free --------------" >> $NTGRLOG_FILE

    free >> $NTGRLOG_FILE

    echo "-------------- meminfo --------------" >> $NTGRLOG_FILE

    cat /proc/meminfo >> $NTGRLOG_FILE

    echo "-------------- mpstat --------------" >> $NTGRLOG_FILE

    mpstat -P ALL 5 1 >> $NTGRLOG_FILE

    echo "-------------- Channel Utilization ---------------" >> $NTGRLOG_FILE

    for radio in $wifi_interfaces
    do
        #Dump the channel utilization on each radio
        iwpriv $radio g_chanutil >> $NTGRLOG_FILE
    done

    echo "-------------- VAP Params --------------" >> $NTGRLOG_FILE

    for vap in $ath_interfaces
    do
        operstate=`cat /sys/devices/virtual/net/$vap/operstate`
        if [ "$operstate" = "up" ]; then
            #Dump the required VAP parameters
            iwpriv $vap get_ampdu >> $NTGRLOG_FILE
            iwpriv $vap get_amsdu >> $NTGRLOG_FILE
        fi
    done

    echo "-------------- IP Route --------------" >> $NTGRLOG_FILE
    ip route >> $NTGRLOG_FILE

    echo "-------------- Wireless status---------" >> $NTGRLOG_FILE
    cat /proc/net/wireless >> $NTGRLOG_FILE

    echo "------------ Packet details------------" >> $NTGRLOG_FILE
    cat /proc/net/dev >> $NTGRLOG_FILE

    echo "------------carrier status------------" >> $NTGRLOG_FILE

    for carrier in $ath_interfaces
    do
        cat /sys/devices/virtual/net/$carrier/carrier >> $NTGRLOG_FILE
    done

    echo "----------Softnet Status--------------" >> $NTGRLOG_FILE
    cat proc/net/softnet_stat >> $NTGRLOG_FILE

    sleep 5
    num=$((num + 1))
done

