home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
ibmtool.zip
/
info.c
< prev
next >
Wrap
Text File
|
1997-11-07
|
29KB
|
714 lines
/******************************************************************************/
/* */
/* FILE: INFO.C */
/* */
/* PURPOSE: This file contains the MAC Table retrieval and information */
/* window display code. */
/* */
/* FUNCTIONS: GetTable */
/* UpdateCommonChar */
/* CommonChar */
/* UpdateServiceChar */
/* ServiceChar */
/* UpdateServiceStatus */
/* ServiceStatus */
/* UpdateMCastList */
/* MulticastList */
/* Services */
/* UpdateMedia */
/* Media */
/* UpdateCCB */
/* CCBDisp */
/* UpdateStressScr */
/* ShowStressScr */
/* UpdateInfo */
/* */
/* GLOBAL DATA ACCESSED */
/* int CurrMenuOpt */
/* WINDOW Info */
/* */
/******************************************************************************/
#define INCL_SUB
#define INCL_BASE
#define INCL_DOS
#include <os2.h>
#include <stdio.h>
#include <stdarg.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "ndis.h"
#include "ibmtool.h"
#include "ioctl.h"
#include "intrface.h"
char VendorDesc[80];
BYTE *GetTable (int table)
{
char far *p;
BYTE *TablePtr;
IOCTLDATA IOData;
IOCTLDATA far *IODataPtr = &IOData;
switch (table)
{
case MSS: // Service Specific Status Table
IOData.ReqCode = COPY_DATA;
IOData.Length = sizeof (WORD);
IOData.SrcDataPtr = (void far *) MACMCC.CcSSp;
IOData.DestDataPtr = (void far *) &MACMSS.MssSize;
if (GenIoctl ((void far *) IODataPtr, hWedge))
return NULL;
IOData.ReqCode = COPY_DATA;
IOData.Length = MACMSS.MssSize;
IOData.SrcDataPtr = (void far *) MACMCC.CcSSp;
IOData.DestDataPtr = (void far *) &MACMSS;
TablePtr = (BYTE *) &MACMSS;
break;
case MSC: // Service Specific Characteristics Table
IOData.ReqCode = COPY_DATA;
IOData.Length = sizeof (WORD);
IOData.SrcDataPtr = (void far *) MACMCC.CcSCp;
IOData.DestDataPtr = (void far *) &MACMSC.MscSize;
TablePtr = (BYTE *) &MACMSC;
if (GenIoctl ((void far *) IODataPtr, hWedge))
return NULL;
IOData.ReqCode = COPY_DATA;
IOData.Length = MACMSC.MscSize;
IOData.SrcDataPtr = (void far *) MACMCC.CcSCp;
IOData.DestDataPtr = (void far *) &MACMSC;
TablePtr = (BYTE *) &MACMSC;
break;
case MMC: // Multicast Address Table
GetTable (MSC);
IOData.ReqCode = COPY_DATA;
IOData.Length = sizeof (MCASTBUF);
IOData.SrcDataPtr = (void far *) MACMSC.MscMCp;
IOData.DestDataPtr = (void far *) &MACMCBuff;
TablePtr = (BYTE *) &MACMCBuff;
break;
case MUD: // Upper Dispatch Table
IOData.ReqCode = COPY_DATA;
IOData.Length = sizeof (MACMUD);
IOData.SrcDataPtr = (void far *) MACMCC.CcUDp;
IOData.DestDataPtr = (void far *) &MACMUD;
TablePtr = (BYTE *) &MACMUD;
break;
case VENDOR: // Vendor Adapter Description
IOData.ReqCode = COPY_DATA;
IOData.Length = 58;
IOData.SrcDataPtr = (void far *) MACMSC.MscVenAdaptDesc;
IOData.DestDataPtr = (void far *) &VendorDesc;
break;
case MEDIA: // Media Specific Status Table
if (TokenRing)
{
IOData.ReqCode = COPY_DATA;
IOData.Length = sizeof (WORD);
IOData.SrcDataPtr = (void far *) MACMSS.MssM8Sp;
IOData.DestDataPtr = (void far *) &MAC8025.M85sSize;
if (GenIoctl ((void far *) IODataPtr, hWedge))
return NULL;
IOData.ReqCode = COPY_DATA;
IOData.Length = MAC8025.M85sSize;
IOData.SrcDataPtr = (void far *) MACMSS.MssM8Sp;
IOData.DestDataPtr = (void far *) &MAC8025;
}
else
{
IOData.ReqCode = COPY_DATA;
IOData.Length = sizeof (WORD);
IOData.SrcDataPtr = (void far *) MACMSS.MssM8Sp;
IOData.DestDataPtr = (void far *) &MAC8023.M83sSize;
if (GenIoctl ((void far *) IODataPtr, hWedge))
return NULL;
IOData.ReqCode = COPY_DATA;
IOData.Length = MAC8023.M83sSize;
IOData.SrcDataPtr = (void far *) MACMSS.MssM8Sp;
IOData.DestDataPtr = (void far *) &MAC8023;
}
break;
case MCB: // NDIS 2.02 Extension CCB Support Table
IOData.ReqCode = COPY_DATA;
IOData.Length = sizeof (CCB);
IOData.SrcDataPtr = (void far *) MACMSC.MscCCB;
IOData.DestDataPtr = (void far *) &MACCCB;
break;
} /* endswitch */
if (GenIoctl ((void far *) IODataPtr, hWedge))
return NULL;
if (table == VENDOR)
{
p = VendorDesc;
while (*p)
{
if (*p == 0x0A || *p == 0x0D) *p = '\0';
++p;
}
} /* endif */
return TablePtr;
}
void UpdateCommonChar ()
{
char UpLvlStr[15] = " ";
char LowLvlStr[15] = " ";
aprintf ( 1, 17, Info.HighAttr, "%d.%02d", MACMCC.CcNDISMjrVer, MACMCC.CcNDISMnrVer);
aprintf ( 1, 44, Info.HighAttr, "%2d.%-2d", MACMCC.CcMjrVer, MACMCC.CcMnrVer);
aprintf ( 1, 66, Info.HighAttr, MACMCC.CcName);
aprintf ( 2, 17, Info.HighAttr, "%d", MACMCC.CcModuleID);
aprintf ( 2, 44, Info.HighAttr, "%04X", MACMCC.CcDataSeg);
aprintf ( 2, 66, Info.HighAttr, "%d", MACMCC.CcBindFnc);
switch (MACMCC.CcUPLevel)
{
case 0xFF:
strcpy (UpLvlStr, "Not Specified");
break;
case 1:
strcpy (UpLvlStr, "MAC");
break;
case 2:
strcpy (UpLvlStr, "Data Link");
break;
case 3:
strcpy (UpLvlStr, "Network");
break;
case 4:
strcpy (UpLvlStr, "Transport");
break;
case 5:
strcpy (UpLvlStr, "Session");
break;
} /* endswitch */
switch (MACMCC.CcLPLevel)
{
case 0xFF:
strcpy (LowLvlStr, "Not Specified");
break;
case 0:
strcpy (LowLvlStr, "Physical");
break;
case 1:
strcpy (LowLvlStr, "MAC");
break;
case 2:
strcpy (LowLvlStr, "Data Link");
break;
case 3:
strcpy (LowLvlStr, "Network");
break;
case 4:
strcpy (LowLvlStr, "Transport");
break;
case 5:
strcpy (LowLvlStr, "Session");
break;
} /* endswitch */
aprintf ( 5, 32, Info.HighAttr, "%s", UpLvlStr);
aprintf ( 5, 55, Info.HighAttr, "%d", MACMCC.CcUIType);
aprintf ( 6, 32, Info.HighAttr, "%s", LowLvlStr);
aprintf ( 6, 55, Info.HighAttr, "%d", MACMCC.CcLIType);
aprintf ( 8, 53, Info.HighAttr, "%lp", MACMCC.CcSysReq);
aprintf ( 9, 53, Info.HighAttr, "%lp", MACMCC.CcSCp);
aprintf (10, 53, Info.HighAttr, "%lp", MACMCC.CcSSp);
aprintf (11, 53, Info.HighAttr, "%lp", MACMCC.CcUDp);
}
int CommonChar ()
{
ClearWindow (Info);
aprintf ( 1, 0, Info.Attr, " NDIS Version: Module Version: Module Name:");
aprintf ( 2, 0, Info.Attr, " Module ID: Module DS: Func Flags:");
aprintf ( 4, 0, Info.Attr, " Protocol Level Type of Interface");
aprintf ( 5, 0, Info.Attr, " Upper Boundary:");
aprintf ( 6, 0, Info.Attr, " Lower Boundary:");
aprintf ( 8, 0, Info.Attr, " System Request Dispatch Entry Point:");
aprintf ( 9, 0, Info.Attr, " Service-Specific Characteristics Table pointer:");
aprintf (10, 0, Info.Attr, " Service-Specific Statistics Table pointer:");
aprintf (11, 0, Info.Attr, " Upper Dispatch Table pointer:");
UpdateCommonChar ();
return SUCCESS;
}
void UpdateServiceChar ()
{
char str[50];
BYTE *p;
int i;
GetTable (MSC);
sprintf (str, "%02X %02X %02X", MACMSC.MscVenCode[0],
MACMSC.MscVenCode[1],
MACMSC.MscVenCode[2]);
aprintf ( 2, 22, Info.HighAttr, "%s", str);
aprintf ( 2, 54, Info.HighAttr, "%02X", MACMSC.MscVenAdapter);
aprintf ( 2, 74, Info.HighAttr, "%d", MACMSC.MscInterrupt);
aprintf ( 3, 22, Info.HighAttr, "%s", VendorDesc);
aprintf ( 5, 22, Info.HighAttr, "%-5s", MACMSC.MscType);
aprintf ( 5, 60, Info.HighAttr, "%ld", MACMSC.MscLinkSpd);
for (i=0; i<MACMSC.MscStnAdrSz; ++i)
sprintf (str + 3 * i, "%02X ", MACMSC.MscPermStnAdr[i]);
aprintf ( 6, 22, Info.HighAttr, "%s", str);
for (i=0; i<MACMSC.MscStnAdrSz; ++i)
sprintf (str + 3 * i, "%02X ", MACMSC.MscCurrStnAdr[i]);
aprintf ( 6, 60, Info.HighAttr, "%s", str);
p = (BYTE *) &MACMSC.MscCurrFncAdr;
for (i=0; i<4; ++i)
sprintf (str + 3 * i, "%02X ", *p++);
aprintf ( 7, 22, Info.HighAttr, "%s", str);
if (MACMCC.CcNDISMnrVer == 0x02)
aprintf ( 7, 60, Info.HighAttr, "%lp", MACMSC.MscCCB);
aprintf ( 9, 22, Info.HighAttr, "%-6d", MACMSC.MscMaxFrame);
aprintf ( 9, 52, Info.HighAttr, "%d", MACMSC.MscTxQDepth);
aprintf ( 9, 76, Info.HighAttr, "%d", MACMSC.MscMaxDataBlocks);
aprintf (10, 22, Info.HighAttr, "%-6ld", MACMSC.MscTBufCap);
aprintf (10, 52, Info.HighAttr, "%-6d ", MACMSC.MscTBlkSz);
aprintf (11, 22, Info.HighAttr, "%-6ld", MACMSC.MscRBufCap);
aprintf (11, 52, Info.HighAttr, "%-6d ", MACMSC.MscRBlkSz);
}
int ServiceChar ()
{
ClearWindow (Info);
aprintf ( 2, 0, Info.Attr, " IEEE Vendor Code: Vendor Adapter Code: Adapter IRQ:");
aprintf ( 3, 0, Info.Attr, " Vendor Adapter Desc:");
aprintf ( 5, 0, Info.Attr, " Type of MAC: Link Speed:");
aprintf ( 6, 0, Info.Attr, " Permanent Stn Addr: Current Stn Addr:");
aprintf ( 7, 0, Info.Attr, " Current Func Addr:");
if (MACMCC.CcNDISMnrVer == 0x02)
aprintf ( 7, 41, Info.Attr, "CCB Table Pointer:");
aprintf ( 9, 0, Info.Attr, " Maximum Frame Size: Xmit Queue Depth: Max Data Blocks:");
aprintf (10, 0, Info.Attr, " Transmit Buffer Cap: Transmit Block Size:");
aprintf (11, 0, Info.Attr, " Receive Buffer Cap: Receive Block Size:");
UpdateServiceChar ();
return SUCCESS;
}
void UpdateServiceStatus ()
{
BYTE cell[2] = " ";
char str[80], *p;
int i;
DWORD status;
GetTable (MSS);
strcpy (str, " ");
switch (MACMSS.MssStatus)
{
case HW_BUD_ERR:
strcat (str, "BUD ERROR");
break;
case HW_CFG_ERR:
strcat (str, "CFG ERROR");
break;
case HW_FAULT:
strcat (str, " FAULT");
break;
case HW_SOFT_ERR:
strcat (str, " SOFT ERROR");
break;
case HW_OK:
strcat (str, " OPERATIONAL");
break;
} /* endswitch */
if (!(MACMSS.MssStatus & MS_BOUND))
strcat (str, " NOT ");
strcat (str, " BOUND");
if (!(MACMSS.MssStatus & MS_OPEN))
strcat (str, " NOT");
strcat (str, " OPEN");
cell[1] = Info.Attr;
VioScrollUp (1, 10, 1, -1, -1, cell, 0);
aprintf ( 1, 10, Info.HighAttr, "%s", str);
aprintf ( 2, 10, Info.HighAttr, "%d", MACMSS.MssFilter);
aprintf ( 4, 25, Info.HighAttr, "%8lX", MACMSS.MssFR);
aprintf ( 4, 36, Info.HighAttr, "%8lX", MACMSS.MssFS);
aprintf ( 4, 47, Info.HighAttr, "%8lX", MACMSS.MssFRByt);
aprintf ( 4, 58, Info.HighAttr, "%8lX", MACMSS.MssFSByt);
aprintf ( 5, 25, Info.HighAttr, "%8lX", MACMSS.MssFRMC);
aprintf ( 5, 36, Info.HighAttr, "%8lX", MACMSS.MssFSMC);
aprintf ( 5, 47, Info.HighAttr, "%8lX", MACMSS.MssFRMCByt);
aprintf ( 5, 58, Info.HighAttr, "%8lX", MACMSS.MssFSMCByt);
aprintf ( 6, 25, Info.HighAttr, "%8lX", MACMSS.MssFRBC);
aprintf ( 6, 36, Info.HighAttr, "%8lX", MACMSS.MssFSBC);
aprintf ( 6, 47, Info.HighAttr, "%8lX", MACMSS.MssFRBCByt);
aprintf ( 6, 58, Info.HighAttr, "%8lX", MACMSS.MssFSBCByt);
aprintf ( 9, 14, Info.HighAttr, "%8lX", MACMSS.MssRFHW);
aprintf ( 9, 25, Info.HighAttr, "%8lX", MACMSS.MssRFCRC);
aprintf ( 9, 36, Info.HighAttr, "%8lX", MACMSS.MssRFLack);
aprintf ( 9, 47, Info.HighAttr, "%8lX", MACMSS.MssRFMin);
aprintf ( 9, 58, Info.HighAttr, "%8lX", MACMSS.MssRFMax);
aprintf ( 9, 69, Info.HighAttr, "%8lX", MACMSS.MssRFErr);
aprintf (10, 25, Info.HighAttr, "%8lX", MACMSS.MssSFHW);
aprintf (10, 58, Info.HighAttr, "%8lX", MACMSS.MssSFTime);
aprintf (12, 18, Info.HighAttr, "%8lX", MACMSS.MssDiagDT);
aprintf (12, 47, Info.HighAttr, "%8lX", MACMSS.MssClearDT);
aprintf (12, 68, Info.HighAttr, "%lp", MACMSS.MssM8Sp);
}
int ServiceStatus ()
{
ClearWindow (Info);
aprintf ( 1, 0, Info.Attr, " Status:");
aprintf ( 2, 0, Info.Attr, " Filter:");
aprintf ( 3, 0, Info.Attr, " Rx Frames Tx Frames Rx Bytes Tx Bytes");
aprintf ( 4, 0, Info.Attr, " Total:");
aprintf ( 5, 0, Info.Attr, " Multicast:");
aprintf ( 6, 0, Info.Attr, " Broadcast:");
aprintf ( 8, 0, Info.Attr, " Hardware CRC No Buffs < Min > Max General");
aprintf ( 9, 0, Info.Attr, " Rx Errors:");
aprintf (10, 0, Info.Attr, " Tx Hardware Errors: Tx Time-Out:");
aprintf (12, 0, Info.Attr, " Diags Last Run: ClrStats Last Run: Media Ptr:");
UpdateServiceStatus ();
return SUCCESS;
}
void UpdateMCastList ()
{
char str[80], *p;
USHORT i, j, line;
GetTable (MMC);
aprintf (2, 60, Info.HighAttr, "%2d", MACMCBuff.McbMax);
aprintf (3, 60, Info.HighAttr, "%2d", MACMCBuff.McbCnt);
for (i=0, line=5; i<MACMCBuff.McbCnt; ++i, ++line)
{
p = str;
for (j=0; j<MACMSC.MscStnAdrSz; ++j)
sprintf (p + 3 * j, "%02X ", MACMCBuff.McbAddrs[i].mAddr[j]);
++i;
if (i < MACMCBuff.McbCnt)
{
strcat (str, " ");
p = str + strlen (str) - 1;
for (j=0; j<MACMSC.MscStnAdrSz; ++j)
sprintf (p + 3 * j, "%02X ", MACMCBuff.McbAddrs[i].mAddr[j]);
}
if (MACMSC.MscStnAdrSz == ADDR_SIZE)
aprintf (line, 20, Info.HighAttr, "%s", str);
else
aprintf (line, (80 - strlen (str)) / 2, Info.HighAttr, "%s", str);
}
}
int MulticastList ()
{
ClearWindow (Info);
aprintf (2, 20, Info.Attr, "Maximum Number of Multicast Addresses");
aprintf (3, 20, Info.Attr, "Current Number of Multicast Addresses");
UpdateMCastList ();
return SUCCESS;
}
int Services ()
{
ClearWindow (Info);
aprintf ( 2, 5, Info.Attr, "Broadcast Addresses IBM Source Routing");
aprintf ( 3, 5, Info.Attr, "Multicast Addresses ResetMAC");
aprintf ( 4, 5, Info.Attr, "Functional/Group Addresses Open/Close Adapter");
aprintf ( 5, 5, Info.Attr, "Promiscuous Mode Interrupt Request");
aprintf ( 6, 5, Info.Attr, "Software Settable Stn Addr Source Routing Bridge");
aprintf ( 7, 5, Info.Attr, "Statistics Always Current GDT Virtual Addresses");
aprintf ( 8, 5, Info.Attr, "InitiateDiagnostics Mult. XferDatas for Single Ind.");
aprintf ( 9, 5, Info.Attr, "Loopback FrameSize norm 0 in RxLookahead");
aprintf (10, 5, Info.Attr, "Prim Rx Ind: ModifyOpenParms Support");
aprintf ( 2, 34, Info.HighAttr, "%s",
(MACMSC.MscService & BROADCAST_SUPP) ? "Yes" : "No");
aprintf ( 2, 74, Info.HighAttr, "%s",
(MACMSC.MscService & IBM_SOURCE_R_SUPP) ? "Yes" : "No");
aprintf ( 3, 34, Info.HighAttr, "%s",
(MACMSC.MscService & MULTICAST_SUPP) ? "Yes" : "No");
aprintf ( 3, 74, Info.HighAttr, "%s",
(MACMSC.MscService & RESET_MAC_SUPP) ? "Yes" : "No");
aprintf ( 4, 34, Info.HighAttr, "%s",
(MACMSC.MscService & FUNC_GROUP_ADDR_SUPP) ? "Yes" : "No");
aprintf ( 4, 74, Info.HighAttr, "%s",
(MACMSC.MscService & OPEN_ADAPTER_SUPP) ? "Yes" : "No");
aprintf ( 5, 34, Info.HighAttr, "%s",
(MACMSC.MscService & PROMISCUOUS_SUPP) ? "Yes" : "No");
aprintf ( 5, 74, Info.HighAttr, "%s",
(MACMSC.MscService & INTERRUPT_RQ_SUPP) ? "Yes" : "No");
aprintf ( 6, 34, Info.HighAttr, "%s",
(MACMSC.MscService & SET_STN_ADDR_SUPP) ? "Yes" : "No");
aprintf ( 6, 74, Info.HighAttr, "%s",
(MACMSC.MscService & SRC_RTNG_BRDG_SUPP) ? "Yes" : "No");
aprintf ( 7, 34, Info.HighAttr, "%s",
(MACMSC.MscService & STAT_ALWAYS_CURR) ? "Yes" : "No");
aprintf ( 7, 74, Info.HighAttr, "%s",
(MACMSC.MscService & GDT_ADDRESS_SUPP) ? "Yes" : "No");
aprintf ( 8, 34, Info.HighAttr, "%s",
(MACMSC.MscService & DIAGNOSTICS_SUPP) ? "Yes" : "No");
aprintf ( 8, 74, Info.HighAttr, "%s",
(MACMSC.MscService & MULTIPLE_XFER_DATA_SUPP) ? "Yes" : "No");
aprintf ( 9, 34, Info.HighAttr, "%s",
(MACMSC.MscService & LOOPBACK_SUPP) ? "Yes" : "No");
aprintf ( 9, 74, Info.HighAttr, "%s",
(MACMSC.MscService & RCVLK_FRAME_SIZE_ZERO) ? "Yes" : "No");
if (MACMSC.MscService & RECEIVECHAIN_MOSTLY)
aprintf (10, 24, Info.HighAttr, "%s", "ReceiveChain");
else
aprintf (10, 20, Info.HighAttr, "%s", "ReceiveLookahead");
aprintf (10, 74, Info.HighAttr, "%s",
(MACMSC.MscService & MODOPENPARMS_SUPP) ? "Yes" : "No");
return SUCCESS;
}
void UpdateMedia ()
{
GetTable (MEDIA);
if (TokenRing)
{
aprintf ( 3, 25, Info.HighAttr, "%s", (MAC8025.M85sRMask & M85Sb_RFCon) ? "1" : "0");
aprintf ( 3, 54, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFunrun) ? "1" : "0");
aprintf ( 3, 74, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFAbDlm) ? "1" : "0");
aprintf ( 4, 25, Info.HighAttr, "%s", (MAC8025.M85sRMask & M85Sb_RFCopy) ? "1" : "0");
aprintf ( 4, 54, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFLine) ? "1" : "0");
aprintf ( 4, 74, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFLost) ? "1" : "0");
aprintf ( 5, 54, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFToken) ? "1" : "0");
aprintf ( 7, 28, Info.HighAttr, "%04X", MAC8025.M85sVer);
aprintf ( 7, 69, Info.HighAttr, "%08lX", MAC8025.M85sFCS);
aprintf ( 8, 24, Info.HighAttr, "%08lX", MAC8025.M85sACerr);
aprintf ( 8, 69, Info.HighAttr, "%08lX", MAC8025.M85s5hbtt);
aprintf ( 9, 24, Info.HighAttr, "%08lX", MAC8025.M85sFcopyErr);
aprintf ( 9, 69, Info.HighAttr, "%08lX", MAC8025.M85sFsAbrtD);
aprintf (10, 24, Info.HighAttr, "%08lX", MAC8025.M85sFreqErr);
aprintf (10, 69, Info.HighAttr, "%08lX", MAC8025.M85sFsNrcv);
aprintf (11, 28, Info.HighAttr, "%04X", MAC8025.M85sRingUtilMeas);
aprintf (11, 69, Info.HighAttr, "%08lX", MAC8025.M85sFrNoBuf);
aprintf (12, 69, Info.HighAttr, "%08lX", MAC8025.M85sMonRegen);
}
else
{
aprintf ( 3, 16, Info.HighAttr, "%08lX", MAC8023.M83sRFAln);
aprintf ( 3, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSCols);
aprintf ( 3, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFColMx) ? "1" : "0");
aprintf ( 4, 16, Info.HighAttr, "%08lX", MAC8023.M83sRFOvrn);
aprintf ( 4, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSDfr);
aprintf ( 4, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFCrr ) ? "1" : "0");
aprintf ( 5, 23, Info.HighAttr, "%s", (MAC8023.M83sRMask & M83Sb_RFCRC ) ? "1" : "0");
aprintf ( 5, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSCol1);
aprintf ( 5, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFShrt ) ? "1" : "0");
aprintf ( 6, 23, Info.HighAttr, "%s", (MAC8023.M83sRMask & M83Sb_RFFE ) ? "1" : "0");
aprintf ( 6, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSColM);
aprintf ( 6, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFOpen ) ? "1" : "0");
aprintf ( 7, 23, Info.HighAttr, "%s", (MAC8023.M83sRMask & M83Sb_RFMaxSz) ? "1" : "0");
aprintf ( 7, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSHrtB);
aprintf ( 7, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFLong ) ? "1" : "0");
aprintf ( 8, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFRemFl) ? "1" : "0");
aprintf (10, 28, Info.HighAttr, "%04X", MAC8023.M83sVer);
aprintf (10, 69, Info.HighAttr, "%08lX", MAC8023.M83sSFColMx);
aprintf (11, 24, Info.HighAttr, "%08lX", MAC8023.M83sTotLCol);
aprintf (11, 69, Info.HighAttr, "%08lX", MAC8023.M83sTotCol);
aprintf (12, 24, Info.HighAttr, "%08lX", MAC8023.M83sJabber);
aprintf (12, 69, Info.HighAttr, "%08lX", MAC8023.M83sLostCS);
}
}
int Media ()
{
ClearWindow (Info);
if (MACMSS.MssM8Sp != NULL)
{
if (TokenRing)
{
aprintf ( 1, 0, Info.Attr, " Receive Fail Transmit Fail");
aprintf ( 2, 0, Info.Attr, " ──────────── ─────────────");
aprintf ( 3, 0, Info.Attr, " Receiver Congestion: UnderRun: Abort Delimiter:");
aprintf ( 4, 0, Info.Attr, " Frame Copy Error: Line Error: Frame Lost:");
aprintf ( 5, 0, Info.Attr, " Token Error:");
aprintf ( 7, 0, Info.Attr, " Version: FCS Error or Repeat FC Error:");
aprintf ( 8, 0, Info.Attr, " Access Control Errors: 5 Half-Bit Transition Errors:");
aprintf ( 9, 0, Info.Attr, " Frame Copy Errors: Frames Sent With Abort Delimiter:");
aprintf (10, 0, Info.Attr, " Frequency Errors: Frames Sent Not Received:");
aprintf (11, 0, Info.Attr, " Ring Util Measurement: Frames Recognized No Buffers:");
aprintf (12, 0, Info.Attr, " Active Monitor Regen Count:");
}
else
{
aprintf ( 1, 0, Info.Attr, " Receive Fail Frames Sent Transmit Fail");
aprintf ( 2, 0, Info.Attr, " ──────────── ─────────── ─────────────");
aprintf ( 3, 0, Info.Attr, " Align Error: After Collisions: Excess Collisions:");
aprintf ( 4, 0, Info.Attr, " Overrun: After Deferring: Carrier Check Fail:");
aprintf ( 5, 0, Info.Attr, " CRC Error: After 1 Collision: Short Circuit:");
aprintf ( 6, 0, Info.Attr, " Framing Error: Mult Collisions: Open Circuit:");
aprintf ( 7, 0, Info.Attr, " Size > Max: CD Heart Beat: Size > Max:");
aprintf ( 8, 0, Info.Attr, " Rem Fail to Defer:");
aprintf (10, 0, Info.Attr, " Version: Frames Not Sent Max Collisions:");
aprintf (11, 0, Info.Attr, " Total Late Collisions: Total Colls during Xmit Attempts:");
aprintf (12, 0, Info.Attr, " Jabber Errors: Lost Carrier Sense during Xmit:");
}
UpdateMedia ();
}
else
aprintf ( 6, 20, Info.Attr, "Media Specific Status Table Not Present");
return SUCCESS;
}
void UpdateCCB ()
{
char str[20];
int i;
aprintf ( 3, 46, Info.HighAttr, "%02X", MACCCB.CcbAdapterConfig);
for (i=0; i<10; ++i)
sprintf (str + i, "%c", (char) MACCCB.CcbMicroCodeLevel[i]);
aprintf ( 4, 46, Info.HighAttr, "%s", str);
aprintf ( 5, 46, Info.HighAttr, "%lp", MACCCB.CcbAdapterParmsAddr);
aprintf ( 6, 46, Info.HighAttr, "%lp", MACCCB.CcbAdapterMACAddr);
aprintf ( 7, 46, Info.HighAttr, "%04X", MACCCB.CcbSRAMAddress);
aprintf ( 8, 46, Info.HighAttr, "%04X", MACCCB.CcbBringUps);
aprintf ( 9, 46, Info.HighAttr, "%04X", MACCCB.CcbAdapterType);
}
int CCBDisp ()
{
ClearWindow (Info);
if (MACMCC.CcNDISMnrVer == 0x02)
{
aprintf ( 3, 0, Info.Attr, " Adapter Configuration:");
aprintf ( 4, 0, Info.Attr, " Microcode Level:");
aprintf ( 5, 0, Info.Attr, " Adapter Parms Address:");
aprintf ( 6, 0, Info.Attr, " Adapter MAC Address:");
aprintf ( 7, 0, Info.Attr, " SRAM Address:");
aprintf ( 8, 0, Info.Attr, " Bring Ups:");
aprintf ( 9, 0, Info.Attr, " Adapter Type:");
UpdateCCB ();
}
else
aprintf ( 6, 31, Info.Attr, "CCB Not Supported");
return SUCCESS;
}
void UpdateStressScr ()
{
char str[20];
int cnt;
cnt = sprintf (str, "%10ld", WedgeCommon->TotalRx);
VioWrtCharStrAtt (str, cnt, 6, 42, &Info.HighAttr, 0);
cnt = sprintf (str, "%10ld", WedgeCommon->TotalTx);
VioWrtCharStrAtt (str, cnt, 7, 42, &Info.HighAttr, 0);
cnt = sprintf (str, "%10ld", WedgeCommon->TotalRxErr);
VioWrtCharStrAtt (str, cnt, 8, 42, &Info.HighAttr, 0);
cnt = sprintf (str, "%10ld", WedgeCommon->TotalTxErr);
VioWrtCharStrAtt (str, cnt, 9, 42, &Info.HighAttr, 0);
cnt = sprintf (str, "%10ld", WedgeCommon->TotalTxNoRsrc);
VioWrtCharStrAtt (str, cnt, 10, 42, &Info.HighAttr, 0);
}
void ShowStressScr ()
{
char str[20];
int i;
ClearWindow (Info);
aprintf ( 1, 16, Info.Attr, "╔═════════════════════════════════════════════╗");
aprintf ( 2, 16, Info.Attr, "║ Running Stress Test ║");
if (WedgeCommon->RspMode == WORKSTATION)
{
for (i=0; i<WedgeCommon->StnAdrSz; ++i)
sprintf (str + 3 * i, "%02X ", WedgeCommon->ServerAddr[i]);
aprintf ( 3, 16, Info.Attr, "║ Stressing server: ║");
aprintf ( 3, 42, Info.HighAttr, "%s", str);
}
else
aprintf ( 3, 16, Info.Attr, "║ ║");
aprintf ( 4, 16, Info.Attr, "╟─────────────────────────────────────────────╢");
aprintf ( 5, 16, Info.Attr, "║ Frame Count: ║");
aprintf ( 5, 42, Info.HighAttr, "%10ld", WedgeCommon->StressCnt);
aprintf ( 6, 16, Info.Attr, "║ Received Frames: ║");
aprintf ( 7, 16, Info.Attr, "║ Transmitted Frames: ║");
aprintf ( 8, 16, Info.Attr, "║ Receive Data Errors: ║");
aprintf ( 9, 16, Info.Attr, "║ Transmit Errors: ║");
aprintf (10, 16, Info.Attr, "║ Tx Out of Resource: ║");
aprintf (11, 16, Info.Attr, "╚═════════════════════════════════════════════╝");
aprintf (12, 16, Info.Attr, " Press ^H to exit");
}
void UpdateInfo ()
{
switch (CurrMenuOpt)
{
case MSC:
UpdateServiceChar ();
break;
case MSS:
UpdateServiceStatus ();
break;
case MMC:
MulticastList ();
break;
case MEDIA:
UpdateMedia ();
break;
} /* endswitch */
}