#!/bin/sh

usage()
{
	echo "  bond-show <bond-id> "
	echo "		<bond-id>  --- 1~3"
	echo " example:"
	echo " 		bond-show 2"
	exit 0
}

[ $# -lt 1 ] && usage

proc_info="/proc/net/bonding/bond$1"

[ ! -e $proc_info ] && {
	echo "Invalid bond id"
	exit 0
}

active="active"
#
# [DNIRAX60-1019]
# BCM Kernel write speed as unsigned int.
# So -1 will be shown as 4294967295.
#
#no_link=-1
no_link=4294967295
slave_list=$(cat $proc_info | grep "Slave Interface" | awk -F ":" '{print $2}')
sum_speed=0
p_speed=0
p_status=""

[ ! -d /sys/devices/virtual/net/bond$1 ] && exit 1

bond_speed=$(cat /sys/class/net/bond$1/speed)
if [ $bond_speed -eq $no_link ]; then
    [ "$1" = "3" ] && echo "INACTIVE" > /tmp/BOND_status && rm -f /tmp/BOND_uptime
else
	[ "$1" = "3" ] && [ ! -f /tmp/BOND_uptime ] && cat /proc/uptime | awk '{printf "%d" ,$1}' > /tmp/BOND_uptime
    [ "$1" = "3" ] && echo $bond_speed"M/Full" > /tmp/BOND_status 
fi

for p in $slave_list
do
	p_status=$(cat /sys/class/net/bond$1/lower_$p/operstate)
	if [ "x$p_status" != "xup" ]; then
		echo "no"
        exit 0
	else
		p_speed=$(cat /sys/class/net/bond$1/lower_$p/speed)
		sum_speed=$(($sum_speed + $p_speed))
	fi
done

if [ $sum_speed -ne $bond_speed ]; then
    active="no"
else
    active="active"
fi

echo $active
