function paths(i,j, s) { if (i >= j) return i; s = ""; if (j > 8) { if (i >= 8) { s = s "I"; i -= 8; } else s = (s " "); } if (i >= 4) { s = s "L"; i -= 4; } else s = (s " "); if (i >= 2) { s = s "S"; i -= 2; } else s = (s " "); if (i >= 1) { s = s "P"; i -= 1; } else s = (s " "); return s; } function config(i, s) { if (i >= 4) return i; s = ""; if (i >= 2) { s = s "W"; i -= 2; } else s = (s " "); if (i >= 1) { s = s "H"; i -= 1; } else s = (s " "); return s; } function connection(i, f,s) { if (i >= 65536) return i; f = "%s%s"; s = ""; if (i >= 32768) { s = sprintf(f, s, "M-M"); f = "%s,%s"; i -= 32768; } if (i >= 16384) { s = sprintf(f, s, "M-S"); f = "%s,%s"; i -= 16384; } if (i >= 8192) { s = sprintf(f, s, "M-B"); f = "%s,%s"; i -= 8192; } if (i >= 4096) { s = sprintf(f, s, "M-A"); f = "%s,%s"; i -= 4096; } if (i >= 2048) { s = sprintf(f, s, "S-M"); f = "%s,%s"; i -= 2048; } if (i >= 1024) { s = sprintf(f, s, "S-S"); f = "%s,%s"; i -= 1024; } if (i >= 512) { s = sprintf(f, s, "S-B"); f = "%s,%s"; i -= 512; } if (i >= 256) { s = sprintf(f, s, "S-A"); f = "%s,%s"; i -= 256; } if (i >= 128) { s = sprintf(f, s, "B-M"); f = "%s,%s"; i -= 128; } if (i >= 64) { s = sprintf(f, s, "B-S"); f = "%s,%s"; i -= 64; } if (i >= 32) { s = sprintf(f, s, "B-B"); f = "%s,%s"; i -= 32; } if (i >= 16) { s = sprintf(f, s, "B-A"); f = "%s,%s"; i -= 16; } if (i >= 8) { s = sprintf(f, s, "A-M"); f = "%s,%s"; i -= 8; } if (i >= 4) { s = sprintf(f, s, "A-S"); f = "%s,%s"; i -= 4; } if (i >= 2) { s = sprintf(f, s, "A-B"); f = "%s,%s"; i -= 2; } if (i >= 1) { s = sprintf(f, s, "A-A"); f = "%s,%s"; i -= 1; } return s; } function binary_type(f) { if (f in binary) return binary[f]; return (f ? f : "unknown"); } function ecm_type(f) { if (f in ecm) return ecm[f]; return (f ? f : "unknown"); } function cf_type(f) { if (f in cf) return cf[f]; return (f ? f : "unknown"); } function hold_type(f) { if (f in hold) return hold[f]; return (f ? f : "unknown"); } function capability(i,j, f,s) { if (i >= j) return i; f = "%s%s"; s = ""; if (j > 8) { if (i >= 1024) { s = sprintf(f, s, "P2"); f = "%s,%s"; i -= 1024; } if (i >= 512) { s = sprintf(f, s, "P1"); f = "%s,%s"; i -= 512; } if (i >= 256) { s = sprintf(f, s, "P0"); f = "%s,%s"; i -= 256; } if (i >= 128) { s = sprintf(f, s, "<7>"); f = "%s,%s"; i -= 128; } if (i >= 64) { s = sprintf(f, s, "<6>"); f = "%s,%s"; i -= 64; } if (i >= 32) { s = sprintf(f, s, "<5>"); f = "%s,%s"; i -= 32; } if (i >= 16) { s = sprintf(f, s, "<4>"); f = "%s,%s"; i -= 16; } if (i >= 8) { s = sprintf(f, s, "<3>"); f = "%s,%s"; i -= 8; } } if (i >= 4) { s = sprintf(f, s, "T2"); f = "%s,%s"; i -= 4; } if (i >= 2) { s = sprintf(f, s, "T1"); f = "%s,%s"; i -= 2; } if (i >= 1) { s = sprintf(f, s, "T0"); f = "%s,%s"; i -= 1; } return s; } function cp_type(f) { if (f in cp) return cp[f]; return (f ? f : "unknown"); } function dup_type(f) { if (f in dup) return dup[f]; return (f ? f : "unknown"); } function port_type(f,s) { if (f in port) return port[f]; return (f ? f : s ? "U" : "unknown"); } function rm_type(f) { if (f in rm) return rm[f]; return (f ? f : "unknown"); } function class_type(f) { if (f in class) return class[f]; return (f ? f : "unknown"); } function order_type(f) { if (f in order) return order[f]; return (f ? f : "unknown"); } function status_type(f) { if (f in status) return status[f]; return (f ? f : "unknown"); } function pcps(i, s) { if (i >= 8) return i; s = ""; if (i >= 4) { s = s "P"; i -= 4; } else s = (s " "); if (i >= 2) { s = s "L"; i -= 2; } else s = (s " "); if (i >= 1) { s = s "C"; i -= 1; } else s = (s " "); return s; } function ce_type(f) { if (f in ce) return ce[f]; return (f ? f : "unknown"); } function pcs_type(f) { if (f in pcs) return pcs[f]; return (f ? f : "unknown"); } function pcm_type(f) { if (f in pcm) return pcm[f]; return (f ? f : "unknown"); } function wh_type(f) { if (f in wh) return wh[f]; return (f ? f : "unknown"); } function aclass_type(f) { if (f in aclass) return aclass[f]; return (f ? f : "unknown"); } BEGIN { binary[1] = "true"; binary[2] = "false"; ecm[1] = "out"; ecm[2] = "in"; ecm[3] = "trace"; ecm[4] = "leave"; ecm[5] = "path_test"; ecm[6] = "insert"; ecm[7] = "check"; ecm[8] = "deinsert"; cf[1] = "isolated"; cf[2] = "wrap_s"; cf[3] = "wrap_a"; cf[4] = "wrap_b"; cf[5] = "wrap_ab"; cf[6] = "thru"; hold[1] = "not-implemented"; hold[2] = "not-holding"; hold[3] = "holding-prm"; hold[4] = "holding-sec"; printf "%-10s%-17s|%-8s|%-11s|%-3s|%-7s|%s\n", "smtNumber=", smtNumber, "Versions", " MACs", "", "Config", ""; printf "%-3s %-23s|%-8s|%-11s|%-3s|%-3s %-3s|%s\n", "Idx", "Station ID", "Op Hi Lo", "Tot Non Mas", "Pth", "Cap", "Pol", "Connection Policy"; didone = 0; for (i in snmpFddiSMTIndex) { if (didone) printf "\n"; else didone = 1; printf "%-3s %-23s %2d %2d %2d %3d %3d %3d ", snmpFddiSMTIndex, snmpFddiSMTStationId, snmpFddiSMTOpVersionId, snmpFddiSMTHiVersionId, snmpFddiSMTLoVersionId, snmpFddiSMTMACCt, snmpFddiSMTNonMasterCt, snmpFddiSMTMasterCt; printf "%-3s %-3s %-3s %s\n", paths(snmpFddiSMTPathsAvailable,8), config(snmpFddiSMTConfigCapabilities), config(snmpFddiSMTConfigPolicy), connection(snmpFddiSMTConnectionPolicy); printf "\tnotify=%5d secs reporting=%-7s remote-disconnect=%s\n", snmpFddiSMTTNotify, binary_type(snmpFddiSMTStatusReporting), binary_type(snmpFddiSMTRemoteDisconnectFlag); printf "\tstates: ecm=%-9s cf=%-8s hold=%s\n", ecm_type(snmpFddiSMTECMState), cf_type(snmpFddiSMTCFState), hold_type(snmpFddiSMTHoldState); printf "\tstamps: msg=%-23s trans=%s\n", snmpFddiSMTMsgTimeStamp, snmpFddiSMTTransitionTimeStamp; if (snmpFddiSMTSetInformation || snmpFddiSMTLastSetStationId) printf "\tset: SMT=%-23s info=%s\n", snmpFddiSMTLastSetStationId, snmpFddiSMTSetInformation; } if (!didone && DIAGNOSTIC) printf "smtTable: %s\n", DIAGNOSTIC; printf "\n"; cp[1] = "unknown"; cp[2] = "primary"; cp[4] = "secondary"; cp[8] = "local"; cp[16] = "isolated"; dup[1] = "none"; dup[2] = "pass"; dup[3] = "fail"; port[0] = "A"; port[1] = "B"; port[2] = "S"; port[3] = "M"; rm[1] = "isolated"; rm[2] = "non_op"; rm[3] = "ring_op"; rm[4] = "detect"; rm[5] = "non_op_dup"; rm[6] = "ring_op_dup"; rm[7] = "directed"; rm[8] = "trace"; printf "%-10s%-15s|%-26s|%-19s|%s\n", "macNumber=", macNumber, " Frames", " Paths", ""; printf "%-3s %-3s %-17s|%-8s %-8s %-8s|%-5s %-8s %-4s|%s\n", "Idx", "SMT", "Address", " Total", "Errors", " Lost", "Avail", " Current", "Req", "Cap"; didone = 0; for (i in snmpFddiMACSMTIndex) { if (didone) printf "\n"; else didone = 1; printf "%-3s %-3s %-17s %8d %8d %8d %-5s %-8s %-4s %s\n", snmpFddiMACIndex, snmpFddiMACSMTIndex, snmpFddiMACSMTAddress, snmpFddiMACFrameCt, snmpFddiMACErrorCt, snmpFddiMACLostCt, paths(snmpFddiMACPathsAvailable,8), cp_type(snmpFddiMACCurrentPath), paths(snmpFddiMACPathsRequested,16), capability(snmpFddiMACFrameStatusCapabilities,2048); printf "\tgreatest-lb: t_max=%-11s tvx=%s\n", snmpFddiMACTMaxGreatestLowerBound, snmpFddiMACTVXGreatestLowerBound; printf "\tupstream: cur=%-17s old=%s\n", snmpFddiMACUpstreamNbr, snmpFddiMACOldUpstreamNbr; printf "\tdownstream: port=%-7s rm-state=%s\n", port_type(snmpFddiMACDownstreamPORTType,0), rm_type(snmpFddiMACRMTState); printf "\ttimers: req=%-11s neg=%-11s tvx=%s\n", snmpFddiMACTReq, snmpFddiMACTNeg, snmpFddiMACTvxValue; printf "\t max=%-11s min=%s\n", snmpFddiMACTMax, snmpFddiMACTMin; printf "\tdup-addrs: test=%-7s flag=%s\n", dup_type(snmpFddiMACDupAddrTest), binary_type(snmpFddiMACDaFlag); printf "\tmisc: cf-status=%-21s frame-cond=%s\n", capability(snmpFddiMACCurrentFrameStatus,8), binary_type(snmpFddiMACFrameMACCondition); } if (!didone && DIAGNOSTIC) printf "macTable: %s\n", DIAGNOSTIC; printf "\n"; class[1] = "local"; class[2] = "non-local"; printf "PATH Classes:\n"; printf "%-3s %-9s %s\n", "Idx", "Index", "Trace-MaxExpiration"; didone = 0; for (i in snmpFddiPATHClassSMTIndex) { didone = 1; printf "%-3s %-9s %s\n", snmpFddiPATHClassSMTIndex, class_type(snmpFddiPATHClassIndex), snmpFddiPATHClassTraceMaxExpiration; } if (!didone && DIAGNOSTIC) printf "pathClassTable: %s\n", DIAGNOSTIC; printf "\n"; order[1] = "unsup"; order[2] = "up"; order[3] = "down"; status[1] = "wrapped"; status[2] = "thru"; printf "PATH Config:\n"; printf "%-3s %-3s %-4s %-5s %-10s %-10s %s\n", "Idx", "SMT", "Type", "Order", " SBA", " SBA-OH", "Status"; didone = 0; for (i in snmpFddiPATHConfigSMTIndex) { didone = 1; printf "%-3s %-3s %-4s %-7s %10d %10d %s\n", snmpFddiPATHConfigIndex, snmpFddiPATHConfigSMTIndex, paths(snmpFddiPATHType,8), order_type(snmpFddiPATHPORTOrder), snmpFddiPATHSba, snmpFddiPATHSbaOverhead, status_type(snmpFddiPATHStatus); } if (!didone && DIAGNOSTIC) printf "pathConfigTable: %s\n", DIAGNOSTIC; printf "\n"; ce[1] = "isolated"; ce[2] = "insert_p"; ce[3] = "insert_s"; ce[4] = "insert_x"; ce[5] = "local"; pcs[1] = "disabled"; pcs[2] = "connecting"; pcs[3] = "standby"; pcs[4] = "active"; pcm[ 1] = "off"; pcm[ 2] = "break"; pcm[ 3] = "trace"; pcm[ 4] = "connect"; pcm[ 5] = "next"; pcm[ 6] = "signal"; pcm[ 7] = "join"; pcm[ 8] = "verify"; pcm[ 9] = "active"; pcm[10] = "maint"; wh[1] = "none"; wh[2] = "m-m"; wh[3] = "other"; printf "%-11s%-7s|%-8s|%-7s|%-8s|%-17s|%s\n", "portNumber=", portNumber, "Connect", "Remote", " CE", " Paths", ""; printf "%-3s %-3s %-4s %-5s|%-8s|%-7s|%-8s|%-5s %-5s %-5s|%s\n", "Idx", "SMT", "Type", "Neigh", "Policies", " MAC", " State", " Req", "Place", "Avail", "Loop Time"; didone = 0; for (i in snmpFddiPORTSMTIndex) { didone = 1; printf "%-3s %-3s %-4s %-5s %-8s %-7s %-8s %-5s %5d %-5s %10d\n", snmpFddiPORTIndex, snmpFddiPORTSMTIndex, port_type(snmpFddiPORTPCType,1), port_type(snmpFddiPORTPCNeighbor), pcps(snmpFddiPORTConnectionPolicies), binary_type(snmpFddiPORTRemoteMACIndicated), ce_type(snmpFddiPORTCEState), paths(snmpFddiPORTPathsRequested,16), snmpFddiPORTMACPlacement, paths(snmpFddiPORTAvailablePaths,8), snmpFddiPORTMACLoopTime; printf "\tstates: connect=%-10s pcm=%-7s withhold=%s\n", pcs_type(snmpFddiPORTConnectState), pcm_type(snmpFddiPORTPCMState), wh_type(snmpFddiPORTPCWithhold); printf "\tlem: count=%-10d reject-count=%-10d\n", snmpFddiPORTLemCt, snmpFddiPORTLemRejectCt; printf "\tbase-ler: count=%-10d reject-count=%-10d estimate=%02d\n", snmpFddiPORTBaseLerRejectCt, snmpFddiPORTBaseLerCt, snmpFddiPORTBaseLerEstimate; printf "\t stamp=%s\n", snmpFddiPORTBaseLerTimeStamp; printf "\tler: cutoff=%02d alarm=%02d estimate=%02d\n", snmpFddiPORTLerCutoff, snmpFddiPORTLerAlarm, snmpFddiPORTLerEstimate; printf "\t condition=%s\n", binary_type(snmpFddiPORTLerCondition); printf "\tmisc: bs_flag=%-7s lct-fails=%-10d tb_max=%s\n", binary_type(snmpFddiPORTBSFlag), snmpFddiPORTLCTFailCt, snmpFddiPORTTBMax; } if (!didone && DIAGNOSTIC) printf "portTable: %s\n", DIAGNOSTIC; printf "\n"; aclass[1] = "single"; aclass[2] = "dual"; aclass[3] = "concen"; printf "%-12s%-23s| Insertion\n", "Attachments=", attachmentNumber; printf "%-3s %-3s %-7s %-7s %-11s|%-7s %s\n", "Idx", "SMT", "Class", "Bypass", "Expire", "Status", "Policy"; didone = 0; for (i in snmpFddiATTACHMENTSMTIndex) { didone = 1; printf "%-3s %-3s %-7s %-7s %-11s", snmpFddiATTACHMENTIndex, snmpFddiATTACHMENTSMTIndex, aclass_type(snmpFddiATTACHMENTClass), binary_type(snmpFddiATTACHMENTOpticalBypassPresent), snmpFddiATTACHMENTIMaxExpiration; if (snmpFddiATTACHMENTOpticalBypassPresent) printf " %-8s %s", binary_type(snmpFddiATTACHMENTInsertedStatus), binary_type(snmpFddiATTACHMENTInsertPolicy); printf "\n"; } if (!didone && DIAGNOSTIC) printf "attachmentTable: %s\n", DIAGNOSTIC; printf "\n"; }