Net2/usr/src/contrib/isode/snmp/gawk-2.11/s-gawk/mib.fddi

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";
      }