#!./tclnm

set targets "
	nm-hx
	nm-hx1
	nm-sa
	nm-sc
	nm-e01
	nm-e04
	nm-e07
	nm-e10
	nm-b0s
	nm-b03
	nm-a02
	nm-a05
	nm-g01
	nm-d
	nm-spt
	"

snmp default pdu prefix \
	.iso.org.dod.internet.private.enterprises.synoptics.products

set p [snmp mkpdu -l {
    .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.0
    series3000.s3000Ethernet.s3000EnetConcentrator.s3EnetConcFrmsRxOk.0
    series3000.s3000Ethernet.s3000EnetConcentrator.s3EnetConcOctetsRxOk.0
    series3000.s3000Ethernet.s3000EnetConcentrator.s3EnetConcMcastFrmsRxOk.0
    series3000.s3000Ethernet.s3000EnetConcentrator.s3EnetConcBcastFrmsRxOk.0
    series3000.s3000Ethernet.s3000EnetConcentrator.s3EnetConcColls.0
    }]

foreach i $targets {
    set s($i) [snmp open $i]
    snmp get $s($i) -mf "" -v -P $p o($i)
}
sleep 2

curses initscr
curses noecho
stdscr -m 0 0 addstr "[format "%-8s %2s %5s %8s %5s %5s %5s %3s" \
    nmm dt frm b mcast bcast coll pct]"

while {1} {
    set l 1
    foreach i $targets {
    snmp get $s($i) -mf "" -v -P $p v
	set dt [expr ([lindex $v 0]-[lindex $o($i) 0])/100]
	set fr [expr ([lindex $v 1]-[lindex $o($i) 1])/$dt]
	set by [expr ([lindex $v 2]-[lindex $o($i) 2])/$dt]
	set mc [expr ([lindex $v 3]-[lindex $o($i) 3])/$dt]
	set br [expr ([lindex $v 4]-[lindex $o($i) 4])/$dt]
	set co [expr ([lindex $v 5]-[lindex $o($i) 5])/$dt]
	stdscr -m $l 0 addstr "[format "%-8s %2d %5d %8d %5d %5d %5d %3d" \
	    $i $dt $fr $by $mc $br $co [expr $by/12500]]"
	set o($i) $v
	incr l
	stdscr refresh
    }
    sleep 15
}
