# This module contains the code used by the snmpInfo CGI script to produce its # output in the form of HTML lists. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub get { local($v) = shift; local($c,$p,$t,$x); print "
#get v=\"$v\" instance=(@_)\n" if $D>2; if ($t = $mib{$v}) { if ($t eq 'g' || $t eq 't' || $t eq 'e') { $c = "&$v()"; print "
#get Group c=\"$c\"\n" if $D>2; $x = eval($c); print "
$v.@_\t$x\n" if $D>2; } elsif ($t eq 'v') { $c = "&$v(@_)"; print "
#get Variable c=\"$c\"\n" if $D>2; $x = eval($c); print "
#get x=$x\n" if $D>2; } elsif ($t eq 'sv') { ($p = $v) =~ s/[A-Z].*//; print "
#get Simple var p=\"$p\"\n" if $D>2; $x = &vvar($p,$v); print "
#get x=$x\n" if $D>2; } elsif ($t eq 'vv') { ($p = $v) =~ s/[A-Z].*//; print "
#get Vector var p=\"$p\"\n" if $D>2; $x = &vvar($p,$v,@_); print "
#get x=$x\n" if $D>2; } else { print "
#get t=$t unknown for v=\"$v\"\n" if $D>2; } } } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub snmp { &system; &interfaces; &at; &ip; &icmp; &tcp; &udp; &egp; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub system { # group. print "${G1}system${G2}\n"; print "
\n"; &sysDescr; &sysObjectID; &sysUpTime; &sysContact; &sysName; &sysLocation; &sysServices; print "
\n"; } sub sysDescr { print "
#sysDescr args=(@_)\n" if $D>2; local($d); if ($d = `uname -a`) { print "
#sysDescr uname -a gave $d" if $D>2; } elsif ($d = `hostname`) { print "
#sysDescr hostname gave $d" if $D>2; } else { $d = 'localhost'; } $d =~ s/\s+$//; print "
sysDescr
$d\n"; } sub sysUpTime { local($t,$x); if (($t = `uptime`) && (($d,$h,$m) = ($t =~ /(\d+) days,*\s*(\d+):(\d+)/))) { $x = (((($d * 24) + $h) * 60) + $m) * 60 * 100; } print "
sysUpTime
$x (${d}d${h}h${m}m)\n"; } sub sysContact { local($x) = &html(`cat sysContact`); print "
sysContact
$x\n"; } sub sysLocation { local($x) = &html(`cat sysLocation`); print "
sysLocation
$x\n"; } sub sysName { $sysName = &getname() unless $sysName; print "
sysName
$sysName\n"; } sub sysObjectID { print "
sysObjectID
snmp.html\n"; } sub sysServices { print "
sysServices
128\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub df { # group. print "${G1}df${G2}\n"; print "
\n"; &dftbl() unless defined $dfNumber; &dfNumber(); &dfTable(); print "
\n"; } sub dfNumber { &dftbl() unless defined $dfNumber; print "
dfNumber
$dfNumber\n"; } sub dfTable { # dl. local($i); print "
dfTable
\n"; print "
\n"; &dftbl() unless $dfNumber; for ($i=1; $i <= $dfNumber; $i++) { print "
#dfTable i=$i.\n" if $D>2; &dfEntry($i); } print "
\n"; } sub dfEntry { # entry. local($i) = @_; print "
dfEntry $i
\n"; print "
\n"; &vvar('df','dfIndex',$i); &vvar('df','dfPartition',$i); &vvar('df','dfTotalKB',$i); &vvar('df','dfUsedKB',$i); &vvar('df','dfFreeKB',$i); &vvar('df','dfFreePct',$i); &vvar('df','dfDirectory',$i); print "
\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Here's an implementation of a "user" dl. We deliver the info from the # passwd file as an SNMP dl. We suppress the encrypted password field, of # course. The rest of the info should generally be innocuous. Perhaps we can # also add some info returned by finger. sub usr { # group. print "${G1}usr${G2}\n"; print "
\n"; &usrtbl() unless defined $usrNumber; &usrNumber(); &usrTable(); print "
\n"; } sub usrNumber { &usrtbl() unless defined $usrNumber; print "
usrNumber
$usrNumber\n"; } sub usrTable { # dl. local($i); print "
usrTable
\n"; print "
\n"; &usrtbl() unless $usrNumber; for ($i=1; $i <= $usrNumber; $i++) { print "
#usrTable i=$i.\n" if $D>2; &usrEntry($i); } print "
\n"; } sub usrEntry { # entry. local($i) = @_; # local($u); # &vvar('usr','usrUid',$u); # return if $u < 10; print "
usrEntry $i
\n"; print "
\n"; &vvar('usr','usrIndex',$i); &vvar('usr','usrName',$i); &vvar('usr','usrUid',$i); &vvar('usr','usrGid',$i); &vvar('usr','usrDescr',$i); &vvar('usr','usrHome',$i); &vvar('usr','usrShell',$i); &vvar('usr','usrPlan',$i); print "
\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Here's a general-purpose routine to produce the html output for an # associative array variable. sub avar { local($p,$v,$i) = @_; local($f); $i = 1 unless $i; if ($f = $get{$p}) {eval("&$f") unless $cnt{$p}} print "
$v.$i
" . eval("\$${v}{$i}") . "\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Here's a general-purpose routine to produce the html output for a simple # variable. sub svar { local($p,$v) = @_; local($f,$x); if ($f = $get{$p}) {eval("&$f") unless $cnt{$p}} if (defined($V{$v})) { $x = $V{$v}; } else { $x = eval("\$${v}"); } print "
$v
$x\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # Here's a general-purpose routine to produce the html output for a variable # that has a single index. sub vvar { local($p,$v,$i) = @_; local($f); $i = 1 unless $i; if ($f = $get{$p}) {eval("&$f") unless $cnt{$p}} print "
$v.$i" if $fmt eq 'L'; # print "
$$v[$i]\n"; # Doesn't work witn perl4. # print "
${$v}[$i]\n"; # Doesn't work witn perl4. print "
" . eval("\$${v}[$i]") . "\n"; # Klunky, but works. } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub if {&interfaces}; sub interfaces { # group. print "
interfaces:\n"; print "
\n"; &iftbl() unless defined $ifNumber; &svar('if','ifNumber'); &ifTable(); print "
\n"; } sub ifTable { # dl. local($i); print "
ifTable:
\n"; print "
\n"; &iftbl() unless $ifNumber; for ($i=1; $i <= $ifNumber; $i++) { print "
#ifTable i=$i.\n" if $D>2; &ifEntry($i); } print "
\n"; } sub th {for (@_) {print "$_\n"}} sub td {for (@_) {print "$_\n"}} sub ifEntry { # entry. local($i) = @_; print "
ifEntry $i:
\n"; print "
\n"; &vvar('if','ifIndex',$i); &vvar('if','ifDescr',$i); &vvar('if','ifType',$i); &vvar('if','ifMtu',$i); &vvar('if','ifSpeed',$i); &vvar('if','ifPhysAddress',$i); &vvar('if','ifAdminStat',$i); &vvar('if','ifOperStat',$i); &vvar('if','ifLastChange',$i); &vvar('if','ifInOctets',$i); &vvar('if','ifInUcastPkts',$i); &vvar('if','ifInNUcastPkts',$i); &vvar('if','ifInDiscards',$i); &vvar('if','ifInErrors',$i); &vvar('if','ifInUnknownProtos',$i); &vvar('if','ifOutOctets',$i); &vvar('if','ifOutUcastPkts',$i); &vvar('if','ifOutNUcastPkts',$i); &vvar('if','ifOutDiscards',$i); &vvar('if','ifOutErrors',$i); &vvar('if','ifOutQLen',$i); print "
\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub at { # group. print "${G1}at${G2}\n"; print "
\n"; &atTable(); print "
\n"; } sub atTable { # dl. local($i); print "
atTable
\n"; print "
\n"; &iftbl() unless $ifNumber; for ($i=1; $i <= $ifNumber; $i++) { print "
#atTable i=$i.\n" if $D>2; &atEntry($i); } print "
\n"; } sub atEntry { # entry. local($i) = @_; print "
atEntry $i
\n"; print "
\n"; &atIfIndex($i); &atPhysAddress($i); &atNetAddress($i); print "
\n"; } sub atIfIndex { local($i) = $_[0] || 1; &attbl() unless $atNumber; print "
atIfIndex.$i
" . $atIfIndex{$i} . "\n"; } sub atPhysAddress { local($i) = $_[0] || 1; &attbl() unless $atNumber; print "
atPhysAddress.$i
" . $atPhysAddress{$i} . "\n"; } sub atNetAddress { local($i) = $_[0] || 1; &attbl() unless $atNumber; print "
atNetAddress.$i
" . $atNetAddress{$i} . "\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub ip { # group. print "${G1}ip${G2}\n"; print "
\n"; &svar('ip','ipForwarding'); &svar('ip','ipDefaultTTL'); &svar('ip','ipInReceives'); &svar('ip','ipInHdrErrors'); &svar('ip','ipInAddrErrors'); &svar('ip','ipForwDatagrams'); &svar('ip','ipInUnknownProtos'); &svar('ip','ipInDiscards'); &svar('ip','ipInDelivers'); &svar('ip','ipOutRequests'); &svar('ip','ipOutDiscards'); &svar('ip','ipOutNoRoutes'); &svar('ip','ipReasmTimeout'); &svar('ip','ipReasmRecords'); &svar('ip','ipReasmOKs'); &svar('ip','ipReasmFails'); &svar('ip','ipFragOKs'); &svar('ip','ipFragFails'); &svar('ip','ipFragCreates'); &svar('ip','ipAddrs'); &ipAddrTable(); &svar('ip','ipRoutes'); &ipRoutingTable(); print "
\n"; } sub ipInReceives { &iftbl() unless $ifNumber; print "
ipInReceives
$ipInReceives\n"; } sub ipOutRequests { &iftbl() unless $ifNumber; print "
ipOutRequests
$ipOutRequests\n"; } #sub ipForwarding {print "
ipForwarding
$ipForwarding\n"} #sub ipDefaultTTL {print "
ipDefaultTTL
$ipDefaultTTL\n"} #sub ipInHdrErrors {print "
ipInHdrErrors
$ipInHdrErrors\n"} #sub ipInAddrErrors {print "
ipInAddrErrors
$ipInAddrErrors\n"} #sub ipForwDatagrams {print "
ipForwDatagrams
$ipForwDatagrams\n"} #sub ipInUnknownProtos {print "
ipInUnknownProtos
$ipInUnknownProtos\n"} #sub ipInDiscards {print "
ipInDiscards
$ipInDiscards\n"} #sub ipInDelivers {print "
ipInDelivers
$ipInDelivers\n"} #sub ipOutDiscards {print "
ipOutDiscards
$ipOutDiscards\n"} #sub ipOutNoRoutes {print "
ipOutNoRoutes
$ipOutNoRoutes\n"} #sub ipReasmTimeout {print "
ipReasmTimeout
$ipReasmTimeout\n"} #sub ipReasmRecords {print "
ipReasmRecords
$ipReasmRecords\n"} #sub ipReasmOKs {print "
ipReasmOKs
$ipReasmOKs\n"} #sub ipReasmFails {print "
ipReasmFails
$ipReasmFails\n"} #sub ipFragOKs {print "
ipFragOKs
$ipFragOKs\n"} #sub ipFragFails {print "
ipFragFails
$ipFragFails\n"} #sub ipFragCreates {print "
ipFragCreates
$ipFragCreates\n"} # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub ipAddr { # group. print "
ipAddr
\n"; print "
\n"; &ipAddrTable(); print "
\n"; } sub ipAddrTable { # group. print "
ipAddrTable
\n"; print "
\n"; &ipadtbl() unless %ipAdEntAddr; print "
#ipAddrTable entries
\n" if $D>2; for $a (sort oidorder keys(%ipAdEntAddr)) { &ipAddrEntry($a); } print "
\n"; } sub ipAddrEntry { # entry. local($i) = @_; print "
ipAddrEntry $i
\n"; print "
\n"; &ipAdEntAddr($i); &ipAdEntIfIndex($i); &ipAdEntNetMask($i); &ipAdEntBcastAddr($i); print "
\n"; } sub ipAdEntAddr {local($a) = @_; print "
ipAdEntAddr
$ipAdEntAddr{$a}\n"} sub ipAdEntIfIndex {local($a) = @_; print "
ipAdEntIfIndex
$ipAdEntIfIndex{$a}\n"} sub ipAdEntNetMask {local($a) = @_; print "
ipAdEntNetMask
$ipAdEntNetMask{$a}\n"} sub ipAdEntBcastAddr {local($a) = @_; print "
ipAdEntBcastAddr
$ipAdEntBcastAddr{$a}\n"} # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub ipRoutingTable { # group. print "
ipRoutingTable
\n"; print "
\n"; &rttbl() unless $ipRoutes; print "
#ipRoutingTable $ipRoutes entries
\n" if $D>2; for $a (sort oidorder keys(%ipRouteDest)) { &ipRouteEntry($a); } print "
\n"; } sub ipRouteEntry { # entry. local($x) = @_; print "
ipRouteEntry $x
\n"; print "
\n"; &ipRouteDest($x); &ipRouteIfIndex($x); &ipRouteMetric1($x); &ipRouteMetric2($x); &ipRouteMetric3($x); &ipRouteMetric4($x); &ipRouteNextHop($x); &ipRouteType($x); &ipRouteProto($x); &ipRouteAge($x); print "
\n"; } sub ipRouteDest { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteDest.$a
" . $ipRouteDest{$a} . "\n"; } sub ipRouteIfIndex { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteIfIndex.$a
" . $ipRouteIfIndex{$a} . "\n"; } sub ipRouteMetric1 { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteMetric1.$a
" . $ipRouteMetric1{$a} . "\n"; } sub ipRouteMetric2 { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteMetric2.$a
" . $ipRouteMetric2{$a} . "\n"; } sub ipRouteMetric3 { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteMetric3.$a
" . $ipRouteMetric3{$a} . "\n"; } sub ipRouteMetric4 { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteMetric4.$a
" . $ipRouteMetric4{$a} . "\n"; } sub ipRouteNextHop { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteNextHop.$a
" . $ipRouteNextHop{$a} . "\n"; } sub ipRouteType { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteType.$a
" . $ipRouteType{$a} . "\n"; } sub ipRouteProto { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteProto.$a
" . $ipRouteProto{$a} . "\n"; } sub ipRouteAge { local($a) = @_; &rttbl() unless $ipRoutes; print "
ipRouteAge.$a
" . $ipRouteAge{$a} . "\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub icmp { # group. print "${G1}icmp${G2}\n"; print "
\n"; &icmpOutAddrMaskReps(); &icmpOutAddrMasks(); &icmpOutTimestampReps(); &icmpOutTimestamps(); &icmpOutEchoReps(); &icmpOutEchos(); &icmpOutRedirects(); &icmpOutSrcQuenchs(); &icmpOutParmProbs(); &icmpOutTimeExcds(); &icmpOutDestUnreachs(); &icmpOutErrors(); &icmpOutMsgs(); &icmpInAddrMaskReps(); &icmpInAddrMasks(); &icmpInTimestampReps(); &icmpInTimestamps(); &icmpInEchoReps(); &icmpInEchos(); &icmpInRedirects(); &icmpInSrcQuenchs(); &icmpInParmProbs(); &icmpInTimeExcds(); &icmpInDestUnreachs(); &icmpInErrors(); &icmpInMsgs(); print "
\n"; } sub icmpInMsgs {print "
icmpInMsgs
$icmpInMsgs\n"} sub icmpInErrors {print "
icmpInErrors
$icmpInErrors\n"} sub icmpInDestUnreachs {print "
icmpInDestUnreachs
$icmpInDestUnreachs\n"} sub icmpInTimeExcds {print "
icmpInTimeExcds
$icmpInTimeExcds\n"} sub icmpInParmProbs {print "
icmpInParmProbs
$icmpInParmProbs\n"} sub icmpInSrcQuenchs {print "
icmpInSrcQuenchs
$icmpInSrcQuenchs\n"} sub icmpInRedirects {print "
icmpInRedirects
$icmpInRedirects\n"} sub icmpInEchos {print "
icmpInEchos
$icmpInEchos\n"} sub icmpInEchoReps {print "
icmpInEchoReps
$icmpInEchoReps\n"} sub icmpInTimestamps {print "
icmpInTimestamps
$icmpInTimestamps\n"} sub icmpInTimestampReps {print "
icmpInTimestampReps
$icmpInTimestampReps\n"} sub icmpInAddrMasks {print "
icmpInAddrMasks
$icmpInAddrMasks\n"} sub icmpInAddrMaskReps {print "
icmpInAddrMaskReps
$icmpInAddrMaskReps\n"} sub icmpOutMsgs {print "
icmpOutMsgs
$icmpOutMsgs\n"} sub icmpOutErrors {print "
icmpOutErrors
$icmpOutErrors\n"} sub icmpOutDestUnreachs {print "
icmpOutDestUnreachs
$icmpOutDestUnreachs\n"} sub icmpOutTimeExcds {print "
icmpOutTimeExcds
$icmpOutTimeExcds\n"} sub icmpOutParmProbs {print "
icmpOutParmProbs
$icmpOutParmProbs\n"} sub icmpOutSrcQuenchs {print "
icmpOutSrcQuenchs
$icmpOutSrcQuenchs\n"} sub icmpOutRedirects {print "
icmpOutRedirects
$icmpOutRedirects\n"} sub icmpOutEchos {print "
icmpOutEchos
$icmpOutEchos\n"} sub icmpOutEchoReps {print "
icmpOutEchoReps
$icmpOutEchoReps\n"} sub icmpOutTimestamps {print "
icmpOutTimestamps
$icmpOutTimestamps\n"} sub icmpOutTimestampReps {print "
icmpOutTimestampReps
$icmpOutTimestampReps\n"} sub icmpOutAddrMasks {print "
icmpOutAddrMasks
$icmpOutAddrMasks\n"} sub icmpOutAddrMaskReps {print "
icmpOutAddrMaskReps
$icmpOutAddrMaskReps\n"} # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub tcp { # group. print "${G1}tcp${G2}\n"; print "
\n"; &tcpRtoAlgorithm(); &tcpRtoMin(); &tcpRtoMax(); &tcpMaxConn(); &tcpActiveOpens(); &tcpPassiveOpens(); &tcpAttemptFails(); &tcpEstabResets(); &tcpCurrEstab(); &tcpInSegs(); &tcpOutSegs(); &tcpRetransSegs(); &tcpConnTable(); print "
\n"; } sub tcpRtoAlgorithm {print "
tcpRtoAlgorithm
$tcpRtoAlgorithm\n"} sub tcpRtoMin {print "
tcpRtoMin
$tcpRtoMin\n"} sub tcpRtoMax {print "
tcpRtoMax
$tcpRtoMax\n"} sub tcpMaxConn {print "
tcpMaxConn
$tcpMaxConn\n"} sub tcpPassiveOpens {print "
tcpPassiveOpens
$tcpPassiveOpens\n"} sub tcpAttemptFails {print "
tcpAttemptFails
$tcpAttemptFails\n"} sub tcpEstabResets {print "
tcpEstabResets
$tcpEstabResets\n"} sub tcpInSegs {print "
tcpInSegs
$tcpInSegs\n"} sub tcpOutSegs {print "
tcpOutSegs
$tcpOutSegs\n"} sub tcpRetransSegs {print "
tcpRetransSegs
$tcpRetransSegs\n"} sub tcpConnTable { # dl. local($i); print "
tcpConnTable
\n"; print "
\n"; &tcpinfo() unless defined($tcpConnNumber); for $i (sort oidorder keys(%tcpConnTable)) { &tcpConnEntry($i); } print "
\n"; } sub tcpConnEntry { # entry. local($i) = @_; print "
tcpConnEntry $i
\n"; print "
\n"; &tcpConnState($i); &tcpConnLocalAddress($i); &tcpConnLocalPort($i); &tcpConnRemAddress($i); &tcpConnRemPort($i); print "
\n"; } sub tcpActiveOpens { &tcptbl() unless defined($tcpConnNumber); print "
tcpActiveOpens
$tcpActiveOpens\n"; } sub tcpCurrEstab { &tcptbl() unless defined($tcpConnNumber); print "
tcpCurrEstab
$tcpCurrEstab\n"; } sub tcpConnState { local($i) = $_[0] || 1; &tcptbl() if (!@tcpConnState); print "
tcpConnState.$i
" . $tcpConnState{$i} . "\n"; } sub tcpConnLocalAddress { local($i) = $_[0] || 1; &tcptbl() if (!@tcpConnLocalAddress); print "
tcpConnLocalAddress.$i
" . $tcpConnLocalAddress{$i} . "\n"; } sub tcpConnLocalPort { local($i) = $_[0] || 1; &tcptbl() if (!@tcpConnLocalPort); print "
tcpConnLocalPort.$i
" . $tcpConnLocalPort{$i} . "\n"; } sub tcpConnRemAddress { local($i) = $_[0] || 1; &tcptbl() if (!@tcpConnRemAddress); print "
tcpConnRemAddress.$i
" . $tcpConnRemAddress{$i} . "\n"; } sub tcpConnRemPort { local($i) = $_[0] || 1; &tcptbl() if (!@tcpConnRemPort); print "
tcpConnRemPort.$i
" . $tcpConnRemPort{$i} . "\n"; } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub udp { # group. print "${G1}udp${G2}\n"; print "
\n"; &udpInDatagrams(); &udpNoPorts(); &udpInErrors(); &udpOutDatagrams(); print "
\n"; } sub udpInDatagrams {print "
udpInDatagrams
$udpInDatagrams\n"} sub udpNoPorts {print "
udpNoPorts
$udpNoPorts\n"} sub udpInErrors {print "
udpInErrors
$udpInErrors\n"} sub udpOutDatagrams {print "
udpOutDatagrams
$udpOutDatagrams\n"} # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # sub egp { # group. print "${G1}egp${G2}\n"; print "
\n"; &egpTable(); print "
\n"; } sub egpTable { # group. print "
egpTable
\n"; print "
\n"; &rttbl() unless $egpNumber; print "
#egpTable $egpNumber entries
\n" if $D>2; for $a (sort oidorder keys(%egpDest)) { &egpEntry($a); } print "
\n"; } sub egpEntry { # entry. local($i) = @_; print "
egpEntry $i
\n"; print "
\n"; &egpInMsgs($i); &egpInErrors($i); &egpOutMsgs($i); &egpOutErrors($i); &egpNeighTable($i); &egpNeighEntry($i); &egpNeighState($i); &egpNeighAddr($i); print "
\n"; } sub egpInMsgs {print "
egpInMsgs
$egpInMsgs\n"} sub egpInErrors {print "
egpInErrors
$egpInErrors\n"} sub egpOutMsgs {print "
egpOutMsgs
$egpOutMsgs\n"} sub egpOutErrors {print "
egpOutErrors
$egpOutErrors\n"} sub egpNeighTable {print "
egpNeighTable
$egpNeighTable\n"} sub egpNeighEntry {print "
egpNeighEntry
$egpNeighEntry\n"} sub egpNeighState {print "
egpNeighState
$egpNeighState\n"} sub egpNeighAddr {print "
egpNeighAddr
$egpNeighAddr\n"} 1;