home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ibmtool.zip / info.c < prev    next >
Text File  |  1997-11-07  |  29KB  |  714 lines

  1. /******************************************************************************/
  2. /*                                                                            */
  3. /*      FILE: INFO.C                                                          */
  4. /*                                                                            */
  5. /*   PURPOSE: This file contains the MAC Table retrieval and information      */
  6. /*            window display code.                                            */
  7. /*                                                                            */
  8. /* FUNCTIONS: GetTable                                                        */
  9. /*            UpdateCommonChar                                                */
  10. /*            CommonChar                                                      */
  11. /*            UpdateServiceChar                                               */
  12. /*            ServiceChar                                                     */
  13. /*            UpdateServiceStatus                                             */
  14. /*            ServiceStatus                                                   */
  15. /*            UpdateMCastList                                                 */
  16. /*            MulticastList                                                   */
  17. /*            Services                                                        */
  18. /*            UpdateMedia                                                     */
  19. /*            Media                                                           */
  20. /*            UpdateCCB                                                       */
  21. /*            CCBDisp                                                         */
  22. /*            UpdateStressScr                                                 */
  23. /*            ShowStressScr                                                   */
  24. /*            UpdateInfo                                                      */
  25. /*                                                                            */
  26. /* GLOBAL DATA ACCESSED                                                       */
  27. /*      int     CurrMenuOpt                                                   */
  28. /*      WINDOW  Info                                                          */
  29. /*                                                                            */
  30. /******************************************************************************/
  31.  
  32. #define INCL_SUB
  33. #define INCL_BASE
  34. #define INCL_DOS
  35. #include <os2.h>
  36. #include <stdio.h>
  37. #include <stdarg.h>
  38. #include <malloc.h>
  39. #include <stdlib.h>
  40. #include <string.h>
  41. #include <ctype.h>
  42. #include "ndis.h"
  43. #include "ibmtool.h"
  44. #include "ioctl.h"
  45. #include "intrface.h"
  46.  
  47. char VendorDesc[80];
  48.  
  49. BYTE *GetTable (int table)
  50. {
  51.   char      far *p;
  52.   BYTE          *TablePtr;
  53.   IOCTLDATA      IOData;
  54.   IOCTLDATA far *IODataPtr = &IOData;
  55.  
  56.   switch (table)
  57.     {
  58.      case MSS: // Service Specific Status Table
  59.        IOData.ReqCode = COPY_DATA;
  60.        IOData.Length  = sizeof (WORD);
  61.        IOData.SrcDataPtr = (void far *) MACMCC.CcSSp;
  62.        IOData.DestDataPtr = (void far *) &MACMSS.MssSize;
  63.        if (GenIoctl ((void far *) IODataPtr, hWedge))
  64.           return NULL;
  65.        IOData.ReqCode = COPY_DATA;
  66.        IOData.Length  = MACMSS.MssSize;
  67.        IOData.SrcDataPtr = (void far *) MACMCC.CcSSp;
  68.        IOData.DestDataPtr = (void far *) &MACMSS;
  69.        TablePtr = (BYTE *) &MACMSS;
  70.        break;
  71.      case MSC: // Service Specific Characteristics Table
  72.        IOData.ReqCode = COPY_DATA;
  73.        IOData.Length  = sizeof (WORD);
  74.        IOData.SrcDataPtr = (void far *) MACMCC.CcSCp;
  75.        IOData.DestDataPtr = (void far *) &MACMSC.MscSize;
  76.        TablePtr = (BYTE *) &MACMSC;
  77.        if (GenIoctl ((void far *) IODataPtr, hWedge))
  78.           return NULL;
  79.        IOData.ReqCode = COPY_DATA;
  80.        IOData.Length  = MACMSC.MscSize;
  81.        IOData.SrcDataPtr = (void far *) MACMCC.CcSCp;
  82.        IOData.DestDataPtr = (void far *) &MACMSC;
  83.        TablePtr = (BYTE *) &MACMSC;
  84.        break;
  85.      case MMC: // Multicast Address Table
  86.        GetTable (MSC);
  87.        IOData.ReqCode = COPY_DATA;
  88.        IOData.Length  = sizeof (MCASTBUF);
  89.        IOData.SrcDataPtr = (void far *) MACMSC.MscMCp;
  90.        IOData.DestDataPtr = (void far *) &MACMCBuff;
  91.        TablePtr = (BYTE *) &MACMCBuff;
  92.        break;
  93.      case MUD: // Upper Dispatch Table
  94.        IOData.ReqCode = COPY_DATA;
  95.        IOData.Length  = sizeof (MACMUD);
  96.        IOData.SrcDataPtr = (void far *) MACMCC.CcUDp;
  97.        IOData.DestDataPtr = (void far *) &MACMUD;
  98.        TablePtr = (BYTE *) &MACMUD;
  99.        break;
  100.      case VENDOR: // Vendor Adapter Description
  101.        IOData.ReqCode = COPY_DATA;
  102.        IOData.Length  = 58;
  103.        IOData.SrcDataPtr = (void far *) MACMSC.MscVenAdaptDesc;
  104.        IOData.DestDataPtr = (void far *) &VendorDesc;
  105.        break;
  106.      case MEDIA: // Media Specific Status Table
  107.        if (TokenRing)
  108.          {
  109.           IOData.ReqCode = COPY_DATA;
  110.           IOData.Length  = sizeof (WORD);
  111.           IOData.SrcDataPtr = (void far *) MACMSS.MssM8Sp;
  112.           IOData.DestDataPtr = (void far *) &MAC8025.M85sSize;
  113.           if (GenIoctl ((void far *) IODataPtr, hWedge))
  114.              return NULL;
  115.           IOData.ReqCode = COPY_DATA;
  116.           IOData.Length  = MAC8025.M85sSize;
  117.           IOData.SrcDataPtr = (void far *) MACMSS.MssM8Sp;
  118.           IOData.DestDataPtr = (void far *) &MAC8025;
  119.          }
  120.        else
  121.          {
  122.           IOData.ReqCode = COPY_DATA;
  123.           IOData.Length  = sizeof (WORD);
  124.           IOData.SrcDataPtr = (void far *) MACMSS.MssM8Sp;
  125.           IOData.DestDataPtr = (void far *) &MAC8023.M83sSize;
  126.           if (GenIoctl ((void far *) IODataPtr, hWedge))
  127.              return NULL;
  128.           IOData.ReqCode = COPY_DATA;
  129.           IOData.Length  = MAC8023.M83sSize;
  130.           IOData.SrcDataPtr = (void far *) MACMSS.MssM8Sp;
  131.           IOData.DestDataPtr = (void far *) &MAC8023;
  132.          }
  133.        break;
  134.      case MCB: // NDIS 2.02 Extension CCB Support Table
  135.        IOData.ReqCode = COPY_DATA;
  136.        IOData.Length  = sizeof (CCB);
  137.        IOData.SrcDataPtr = (void far *) MACMSC.MscCCB;
  138.        IOData.DestDataPtr = (void far *) &MACCCB;
  139.        break;
  140.     } /* endswitch */
  141.  
  142.   if (GenIoctl ((void far *) IODataPtr, hWedge))
  143.      return NULL;
  144.  
  145.   if (table == VENDOR)
  146.     {
  147.      p = VendorDesc;
  148.      while (*p)
  149.        {
  150.         if (*p == 0x0A || *p == 0x0D) *p = '\0';
  151.         ++p;
  152.        }
  153.     } /* endif */
  154.  
  155.   return TablePtr;
  156.  
  157. }
  158.  
  159. void UpdateCommonChar ()
  160. {
  161.   char UpLvlStr[15] = " ";
  162.   char LowLvlStr[15] = " ";
  163.  
  164.   aprintf ( 1, 17, Info.HighAttr, "%d.%02d", MACMCC.CcNDISMjrVer, MACMCC.CcNDISMnrVer);
  165.   aprintf ( 1, 44, Info.HighAttr, "%2d.%-2d", MACMCC.CcMjrVer, MACMCC.CcMnrVer);
  166.   aprintf ( 1, 66, Info.HighAttr, MACMCC.CcName);
  167.  
  168.   aprintf ( 2, 17, Info.HighAttr, "%d", MACMCC.CcModuleID);
  169.   aprintf ( 2, 44, Info.HighAttr, "%04X", MACMCC.CcDataSeg);
  170.   aprintf ( 2, 66, Info.HighAttr, "%d", MACMCC.CcBindFnc);
  171.  
  172.   switch (MACMCC.CcUPLevel)
  173.     {
  174.      case 0xFF:
  175.        strcpy (UpLvlStr, "Not Specified");
  176.        break;
  177.      case 1:
  178.        strcpy (UpLvlStr, "MAC");
  179.        break;
  180.      case 2:
  181.        strcpy (UpLvlStr, "Data Link");
  182.        break;
  183.      case 3:
  184.        strcpy (UpLvlStr, "Network");
  185.        break;
  186.      case 4:
  187.        strcpy (UpLvlStr, "Transport");
  188.        break;
  189.      case 5:
  190.        strcpy (UpLvlStr, "Session");
  191.        break;
  192.     } /* endswitch */
  193.   switch (MACMCC.CcLPLevel)
  194.     {
  195.      case 0xFF:
  196.        strcpy (LowLvlStr, "Not Specified");
  197.        break;
  198.      case 0:
  199.        strcpy (LowLvlStr, "Physical");
  200.        break;
  201.      case 1:
  202.        strcpy (LowLvlStr, "MAC");
  203.        break;
  204.      case 2:
  205.        strcpy (LowLvlStr, "Data Link");
  206.        break;
  207.      case 3:
  208.        strcpy (LowLvlStr, "Network");
  209.        break;
  210.      case 4:
  211.        strcpy (LowLvlStr, "Transport");
  212.        break;
  213.      case 5:
  214.        strcpy (LowLvlStr, "Session");
  215.        break;
  216.     } /* endswitch */
  217.  
  218.   aprintf ( 5, 32, Info.HighAttr, "%s", UpLvlStr);
  219.   aprintf ( 5, 55, Info.HighAttr, "%d", MACMCC.CcUIType);
  220.  
  221.   aprintf ( 6, 32, Info.HighAttr, "%s", LowLvlStr);
  222.   aprintf ( 6, 55, Info.HighAttr, "%d", MACMCC.CcLIType);
  223.  
  224.   aprintf ( 8, 53, Info.HighAttr, "%lp", MACMCC.CcSysReq);
  225.   aprintf ( 9, 53, Info.HighAttr, "%lp", MACMCC.CcSCp);
  226.   aprintf (10, 53, Info.HighAttr, "%lp", MACMCC.CcSSp);
  227.   aprintf (11, 53, Info.HighAttr, "%lp", MACMCC.CcUDp);
  228. }
  229.  
  230. int CommonChar ()
  231. {
  232.   ClearWindow (Info);
  233.  
  234.   aprintf ( 1, 0, Info.Attr, "   NDIS Version:            Module Version:          Module Name:");
  235.   aprintf ( 2, 0, Info.Attr, "      Module ID:                 Module DS:           Func Flags:");
  236.  
  237.   aprintf ( 4, 0, Info.Attr, "                             Protocol Level    Type of Interface");
  238.   aprintf ( 5, 0, Info.Attr, "            Upper Boundary:");
  239.   aprintf ( 6, 0, Info.Attr, "            Lower Boundary:");
  240.  
  241.   aprintf ( 8, 0, Info.Attr, "                System Request Dispatch Entry Point:");
  242.   aprintf ( 9, 0, Info.Attr, "     Service-Specific Characteristics Table pointer:");
  243.   aprintf (10, 0, Info.Attr, "          Service-Specific Statistics Table pointer:");
  244.   aprintf (11, 0, Info.Attr, "                       Upper Dispatch Table pointer:");
  245.  
  246.   UpdateCommonChar ();
  247.  
  248.   return SUCCESS;
  249. }
  250.  
  251. void UpdateServiceChar ()
  252. {
  253.   char  str[50];
  254.   BYTE *p;
  255.   int   i;
  256.  
  257.   GetTable (MSC);
  258.  
  259.   sprintf (str, "%02X %02X %02X", MACMSC.MscVenCode[0],
  260.                                   MACMSC.MscVenCode[1],
  261.                                   MACMSC.MscVenCode[2]);
  262.   aprintf ( 2, 22, Info.HighAttr, "%s", str);
  263.   aprintf ( 2, 54, Info.HighAttr, "%02X", MACMSC.MscVenAdapter);
  264.   aprintf ( 2, 74, Info.HighAttr, "%d", MACMSC.MscInterrupt);
  265.  
  266.   aprintf ( 3, 22, Info.HighAttr, "%s", VendorDesc);
  267.  
  268.   aprintf ( 5, 22, Info.HighAttr, "%-5s", MACMSC.MscType);
  269.   aprintf ( 5, 60, Info.HighAttr, "%ld", MACMSC.MscLinkSpd);
  270.  
  271.   for (i=0; i<MACMSC.MscStnAdrSz; ++i)
  272.      sprintf (str + 3 * i, "%02X ", MACMSC.MscPermStnAdr[i]);
  273.   aprintf ( 6, 22, Info.HighAttr, "%s", str);
  274.   for (i=0; i<MACMSC.MscStnAdrSz; ++i)
  275.      sprintf (str + 3 * i, "%02X ", MACMSC.MscCurrStnAdr[i]);
  276.   aprintf ( 6, 60, Info.HighAttr, "%s", str);
  277.  
  278.   p = (BYTE *) &MACMSC.MscCurrFncAdr;
  279.   for (i=0; i<4; ++i)
  280.      sprintf (str + 3 * i, "%02X ", *p++);
  281.   aprintf ( 7, 22, Info.HighAttr, "%s", str);
  282.   if (MACMCC.CcNDISMnrVer == 0x02)
  283.      aprintf ( 7, 60, Info.HighAttr, "%lp", MACMSC.MscCCB);
  284.  
  285.   aprintf ( 9, 22, Info.HighAttr, "%-6d", MACMSC.MscMaxFrame);
  286.   aprintf ( 9, 52, Info.HighAttr, "%d", MACMSC.MscTxQDepth);
  287.   aprintf ( 9, 76, Info.HighAttr, "%d", MACMSC.MscMaxDataBlocks);
  288.  
  289.   aprintf (10, 22, Info.HighAttr, "%-6ld", MACMSC.MscTBufCap);
  290.   aprintf (10, 52, Info.HighAttr, "%-6d ", MACMSC.MscTBlkSz);
  291.  
  292.   aprintf (11, 22, Info.HighAttr, "%-6ld", MACMSC.MscRBufCap);
  293.   aprintf (11, 52, Info.HighAttr, "%-6d ", MACMSC.MscRBlkSz);
  294. }
  295.  
  296. int ServiceChar ()
  297. {
  298.   ClearWindow (Info);
  299.  
  300.   aprintf ( 2, 0, Info.Attr, "    IEEE Vendor Code:            Vendor Adapter Code:        Adapter IRQ:");
  301.   aprintf ( 3, 0, Info.Attr, " Vendor Adapter Desc:");
  302.  
  303.   aprintf ( 5, 0, Info.Attr, "         Type of MAC:                           Link Speed:");
  304.   aprintf ( 6, 0, Info.Attr, "  Permanent Stn Addr:                     Current Stn Addr:");
  305.   aprintf ( 7, 0, Info.Attr, "   Current Func Addr:");
  306.   if (MACMCC.CcNDISMnrVer == 0x02)
  307.      aprintf ( 7, 41, Info.Attr, "CCB Table Pointer:");
  308.  
  309.   aprintf ( 9, 0, Info.Attr, "  Maximum Frame Size:             Xmit Queue Depth:       Max Data Blocks:");
  310.   aprintf (10, 0, Info.Attr, " Transmit Buffer Cap:          Transmit Block Size:");
  311.   aprintf (11, 0, Info.Attr, "  Receive Buffer Cap:           Receive Block Size:");
  312.  
  313.   UpdateServiceChar ();
  314.  
  315.   return SUCCESS;
  316. }
  317.  
  318. void UpdateServiceStatus ()
  319. {
  320.   BYTE  cell[2] = " ";
  321.   char  str[80], *p;
  322.   int   i;
  323.   DWORD status;
  324.  
  325.   GetTable (MSS);
  326.  
  327.   strcpy (str, " ");
  328.   switch (MACMSS.MssStatus)
  329.     {
  330.      case HW_BUD_ERR:
  331.        strcat (str, "BUD ERROR");
  332.        break;
  333.      case HW_CFG_ERR:
  334.        strcat (str, "CFG ERROR");
  335.        break;
  336.      case HW_FAULT:
  337.        strcat (str, " FAULT");
  338.        break;
  339.      case HW_SOFT_ERR:
  340.        strcat (str, " SOFT ERROR");
  341.        break;
  342.      case HW_OK:
  343.        strcat (str, " OPERATIONAL");
  344.        break;
  345.     } /* endswitch */
  346.  
  347.   if (!(MACMSS.MssStatus & MS_BOUND))
  348.      strcat (str, " NOT ");
  349.   strcat (str, " BOUND");
  350.  
  351.   if (!(MACMSS.MssStatus & MS_OPEN))
  352.      strcat (str, " NOT");
  353.   strcat (str, " OPEN");
  354.  
  355.   cell[1] = Info.Attr;
  356.   VioScrollUp (1, 10, 1, -1, -1, cell, 0);
  357.  
  358.   aprintf ( 1, 10, Info.HighAttr, "%s", str);
  359.   aprintf ( 2, 10, Info.HighAttr, "%d", MACMSS.MssFilter);
  360.  
  361.   aprintf ( 4, 25, Info.HighAttr, "%8lX", MACMSS.MssFR);
  362.   aprintf ( 4, 36, Info.HighAttr, "%8lX", MACMSS.MssFS);
  363.   aprintf ( 4, 47, Info.HighAttr, "%8lX", MACMSS.MssFRByt);
  364.   aprintf ( 4, 58, Info.HighAttr, "%8lX", MACMSS.MssFSByt);
  365.   aprintf ( 5, 25, Info.HighAttr, "%8lX", MACMSS.MssFRMC);
  366.   aprintf ( 5, 36, Info.HighAttr, "%8lX", MACMSS.MssFSMC);
  367.   aprintf ( 5, 47, Info.HighAttr, "%8lX", MACMSS.MssFRMCByt);
  368.   aprintf ( 5, 58, Info.HighAttr, "%8lX", MACMSS.MssFSMCByt);
  369.   aprintf ( 6, 25, Info.HighAttr, "%8lX", MACMSS.MssFRBC);
  370.   aprintf ( 6, 36, Info.HighAttr, "%8lX", MACMSS.MssFSBC);
  371.   aprintf ( 6, 47, Info.HighAttr, "%8lX", MACMSS.MssFRBCByt);
  372.   aprintf ( 6, 58, Info.HighAttr, "%8lX", MACMSS.MssFSBCByt);
  373.  
  374.   aprintf ( 9, 14, Info.HighAttr, "%8lX", MACMSS.MssRFHW);
  375.   aprintf ( 9, 25, Info.HighAttr, "%8lX", MACMSS.MssRFCRC);
  376.   aprintf ( 9, 36, Info.HighAttr, "%8lX", MACMSS.MssRFLack);
  377.   aprintf ( 9, 47, Info.HighAttr, "%8lX", MACMSS.MssRFMin);
  378.   aprintf ( 9, 58, Info.HighAttr, "%8lX", MACMSS.MssRFMax);
  379.   aprintf ( 9, 69, Info.HighAttr, "%8lX", MACMSS.MssRFErr);
  380.  
  381.   aprintf (10, 25, Info.HighAttr, "%8lX", MACMSS.MssSFHW);
  382.   aprintf (10, 58, Info.HighAttr, "%8lX", MACMSS.MssSFTime);
  383.  
  384.   aprintf (12, 18, Info.HighAttr, "%8lX", MACMSS.MssDiagDT);
  385.   aprintf (12, 47, Info.HighAttr, "%8lX", MACMSS.MssClearDT);
  386.   aprintf (12, 68, Info.HighAttr, "%lp",   MACMSS.MssM8Sp);
  387. }
  388.  
  389. int ServiceStatus ()
  390. {
  391.   ClearWindow (Info);
  392.  
  393.   aprintf ( 1, 0, Info.Attr, "  Status:");
  394.   aprintf ( 2, 0, Info.Attr, "  Filter:");
  395.   aprintf ( 3, 0, Info.Attr, "                        Rx Frames  Tx Frames   Rx Bytes   Tx Bytes");
  396.   aprintf ( 4, 0, Info.Attr, "                 Total:");
  397.   aprintf ( 5, 0, Info.Attr, "             Multicast:");
  398.   aprintf ( 6, 0, Info.Attr, "             Broadcast:");
  399.  
  400.   aprintf ( 8, 0, Info.Attr, "              Hardware     CRC      No Buffs    < Min      > Max     General");
  401.   aprintf ( 9, 0, Info.Attr, "  Rx Errors:");
  402.   aprintf (10, 0, Info.Attr, "  Tx Hardware Errors:                        Tx Time-Out:");
  403.  
  404.   aprintf (12, 0, Info.Attr, "  Diags Last Run:           ClrStats Last Run:           Media Ptr:");
  405.  
  406.   UpdateServiceStatus ();
  407.  
  408.   return SUCCESS;
  409. }
  410.  
  411. void UpdateMCastList ()
  412. {
  413.   char    str[80], *p;
  414.   USHORT  i, j, line;
  415.  
  416.   GetTable (MMC);
  417.  
  418.   aprintf (2, 60, Info.HighAttr, "%2d", MACMCBuff.McbMax);
  419.   aprintf (3, 60, Info.HighAttr, "%2d", MACMCBuff.McbCnt);
  420.  
  421.   for (i=0, line=5; i<MACMCBuff.McbCnt; ++i, ++line)
  422.     {
  423.      p = str;
  424.      for (j=0; j<MACMSC.MscStnAdrSz; ++j)
  425.         sprintf (p + 3 * j, "%02X ", MACMCBuff.McbAddrs[i].mAddr[j]);
  426.      ++i;
  427.      if (i < MACMCBuff.McbCnt)
  428.        {
  429.         strcat (str, "        ");
  430.         p = str + strlen (str) - 1;
  431.         for (j=0; j<MACMSC.MscStnAdrSz; ++j)
  432.            sprintf (p + 3 * j, "%02X ", MACMCBuff.McbAddrs[i].mAddr[j]);
  433.        }
  434.      if (MACMSC.MscStnAdrSz == ADDR_SIZE)
  435.         aprintf (line, 20, Info.HighAttr, "%s", str);
  436.      else
  437.         aprintf (line, (80 - strlen (str)) / 2, Info.HighAttr, "%s", str);
  438.     }
  439. }
  440.  
  441. int MulticastList ()
  442. {
  443.   ClearWindow (Info);
  444.  
  445.   aprintf (2, 20, Info.Attr, "Maximum Number of Multicast Addresses");
  446.   aprintf (3, 20, Info.Attr, "Current Number of Multicast Addresses");
  447.  
  448.   UpdateMCastList ();
  449.  
  450.   return SUCCESS;
  451. }
  452.  
  453. int Services ()
  454. {
  455.   ClearWindow (Info);
  456.  
  457.   aprintf ( 2, 5, Info.Attr, "Broadcast Addresses                 IBM Source Routing");
  458.   aprintf ( 3, 5, Info.Attr, "Multicast Addresses                 ResetMAC");
  459.   aprintf ( 4, 5, Info.Attr, "Functional/Group Addresses          Open/Close Adapter");
  460.   aprintf ( 5, 5, Info.Attr, "Promiscuous Mode                    Interrupt Request");
  461.   aprintf ( 6, 5, Info.Attr, "Software Settable Stn Addr          Source Routing Bridge");
  462.   aprintf ( 7, 5, Info.Attr, "Statistics Always Current           GDT Virtual Addresses");
  463.   aprintf ( 8, 5, Info.Attr, "InitiateDiagnostics                 Mult. XferDatas for Single Ind.");
  464.   aprintf ( 9, 5, Info.Attr, "Loopback                            FrameSize norm 0 in RxLookahead");
  465.   aprintf (10, 5, Info.Attr, "Prim Rx Ind:                        ModifyOpenParms Support");
  466.  
  467.   aprintf ( 2, 34, Info.HighAttr, "%s",
  468.            (MACMSC.MscService & BROADCAST_SUPP) ? "Yes" : "No");
  469.   aprintf ( 2, 74, Info.HighAttr, "%s",
  470.            (MACMSC.MscService & IBM_SOURCE_R_SUPP) ? "Yes" : "No");
  471.   aprintf ( 3, 34, Info.HighAttr, "%s",
  472.            (MACMSC.MscService & MULTICAST_SUPP) ? "Yes" : "No");
  473.   aprintf ( 3, 74, Info.HighAttr, "%s",
  474.            (MACMSC.MscService & RESET_MAC_SUPP) ? "Yes" : "No");
  475.   aprintf ( 4, 34, Info.HighAttr, "%s",
  476.            (MACMSC.MscService & FUNC_GROUP_ADDR_SUPP) ? "Yes" : "No");
  477.   aprintf ( 4, 74, Info.HighAttr, "%s",
  478.            (MACMSC.MscService & OPEN_ADAPTER_SUPP) ? "Yes" : "No");
  479.   aprintf ( 5, 34, Info.HighAttr, "%s",
  480.            (MACMSC.MscService & PROMISCUOUS_SUPP) ? "Yes" : "No");
  481.   aprintf ( 5, 74, Info.HighAttr, "%s",
  482.            (MACMSC.MscService & INTERRUPT_RQ_SUPP) ? "Yes" : "No");
  483.   aprintf ( 6, 34, Info.HighAttr, "%s",
  484.            (MACMSC.MscService & SET_STN_ADDR_SUPP) ? "Yes" : "No");
  485.   aprintf ( 6, 74, Info.HighAttr, "%s",
  486.            (MACMSC.MscService & SRC_RTNG_BRDG_SUPP) ? "Yes" : "No");
  487.   aprintf ( 7, 34, Info.HighAttr, "%s",
  488.            (MACMSC.MscService & STAT_ALWAYS_CURR) ? "Yes" : "No");
  489.   aprintf ( 7, 74, Info.HighAttr, "%s",
  490.            (MACMSC.MscService & GDT_ADDRESS_SUPP) ? "Yes" : "No");
  491.   aprintf ( 8, 34, Info.HighAttr, "%s",
  492.            (MACMSC.MscService & DIAGNOSTICS_SUPP) ? "Yes" : "No");
  493.   aprintf ( 8, 74, Info.HighAttr, "%s",
  494.            (MACMSC.MscService & MULTIPLE_XFER_DATA_SUPP) ? "Yes" : "No");
  495.   aprintf ( 9, 34, Info.HighAttr, "%s",
  496.            (MACMSC.MscService & LOOPBACK_SUPP) ? "Yes" : "No");
  497.   aprintf ( 9, 74, Info.HighAttr, "%s",
  498.            (MACMSC.MscService & RCVLK_FRAME_SIZE_ZERO) ? "Yes" : "No");
  499.   if (MACMSC.MscService & RECEIVECHAIN_MOSTLY)
  500.      aprintf (10, 24, Info.HighAttr, "%s", "ReceiveChain");
  501.   else
  502.      aprintf (10, 20, Info.HighAttr, "%s", "ReceiveLookahead");
  503.   aprintf (10, 74, Info.HighAttr, "%s",
  504.            (MACMSC.MscService & MODOPENPARMS_SUPP) ? "Yes" : "No");
  505.  
  506.   return SUCCESS;
  507. }
  508.  
  509. void UpdateMedia ()
  510. {
  511.   GetTable (MEDIA);
  512.  
  513.   if (TokenRing)
  514.     {
  515.      aprintf ( 3, 25, Info.HighAttr, "%s", (MAC8025.M85sRMask & M85Sb_RFCon) ? "1" : "0");
  516.      aprintf ( 3, 54, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFunrun) ? "1" : "0");
  517.      aprintf ( 3, 74, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFAbDlm) ? "1" : "0");
  518.      aprintf ( 4, 25, Info.HighAttr, "%s", (MAC8025.M85sRMask & M85Sb_RFCopy) ? "1" : "0");
  519.      aprintf ( 4, 54, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFLine) ? "1" : "0");
  520.      aprintf ( 4, 74, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFLost) ? "1" : "0");
  521.      aprintf ( 5, 54, Info.HighAttr, "%s", (MAC8025.M85sTMask & M85Sb_TFToken) ? "1" : "0");
  522.  
  523.      aprintf ( 7, 28, Info.HighAttr, "%04X", MAC8025.M85sVer);
  524.      aprintf ( 7, 69, Info.HighAttr, "%08lX", MAC8025.M85sFCS);
  525.      aprintf ( 8, 24, Info.HighAttr, "%08lX", MAC8025.M85sACerr);
  526.      aprintf ( 8, 69, Info.HighAttr, "%08lX", MAC8025.M85s5hbtt);
  527.      aprintf ( 9, 24, Info.HighAttr, "%08lX", MAC8025.M85sFcopyErr);
  528.      aprintf ( 9, 69, Info.HighAttr, "%08lX", MAC8025.M85sFsAbrtD);
  529.      aprintf (10, 24, Info.HighAttr, "%08lX", MAC8025.M85sFreqErr);
  530.      aprintf (10, 69, Info.HighAttr, "%08lX", MAC8025.M85sFsNrcv);
  531.      aprintf (11, 28, Info.HighAttr, "%04X", MAC8025.M85sRingUtilMeas);
  532.      aprintf (11, 69, Info.HighAttr, "%08lX", MAC8025.M85sFrNoBuf);
  533.      aprintf (12, 69, Info.HighAttr, "%08lX", MAC8025.M85sMonRegen);
  534.     }
  535.   else
  536.     {
  537.      aprintf ( 3, 16, Info.HighAttr, "%08lX", MAC8023.M83sRFAln);
  538.      aprintf ( 3, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSCols);
  539.      aprintf ( 3, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFColMx) ? "1" : "0");
  540.      aprintf ( 4, 16, Info.HighAttr, "%08lX", MAC8023.M83sRFOvrn);
  541.      aprintf ( 4, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSDfr);
  542.      aprintf ( 4, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFCrr  ) ? "1" : "0");
  543.      aprintf ( 5, 23, Info.HighAttr, "%s", (MAC8023.M83sRMask & M83Sb_RFCRC  ) ? "1" : "0");
  544.      aprintf ( 5, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSCol1);
  545.      aprintf ( 5, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFShrt ) ? "1" : "0");
  546.      aprintf ( 6, 23, Info.HighAttr, "%s", (MAC8023.M83sRMask & M83Sb_RFFE   ) ? "1" : "0");
  547.      aprintf ( 6, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSColM);
  548.      aprintf ( 6, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFOpen ) ? "1" : "0");
  549.      aprintf ( 7, 23, Info.HighAttr, "%s", (MAC8023.M83sRMask & M83Sb_RFMaxSz) ? "1" : "0");
  550.      aprintf ( 7, 45, Info.HighAttr, "%08lX", MAC8023.M83sFSHrtB);
  551.      aprintf ( 7, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFLong ) ? "1" : "0");
  552.      aprintf ( 8, 76, Info.HighAttr, "%s", (MAC8023.M83sTMask & M83Sb_TFRemFl) ? "1" : "0");
  553.  
  554.      aprintf (10, 28, Info.HighAttr, "%04X", MAC8023.M83sVer);
  555.      aprintf (10, 69, Info.HighAttr, "%08lX", MAC8023.M83sSFColMx);
  556.      aprintf (11, 24, Info.HighAttr, "%08lX", MAC8023.M83sTotLCol);
  557.      aprintf (11, 69, Info.HighAttr, "%08lX", MAC8023.M83sTotCol);
  558.      aprintf (12, 24, Info.HighAttr, "%08lX", MAC8023.M83sJabber);
  559.      aprintf (12, 69, Info.HighAttr, "%08lX", MAC8023.M83sLostCS);
  560.     }
  561.  
  562. }
  563.  
  564. int Media ()
  565. {
  566.   ClearWindow (Info);
  567.  
  568.   if (MACMSS.MssM8Sp != NULL)
  569.     {
  570.      if (TokenRing)
  571.        {
  572.         aprintf ( 1, 0, Info.Attr, "         Receive Fail                              Transmit Fail");
  573.         aprintf ( 2, 0, Info.Attr, "         ────────────                              ─────────────");
  574.         aprintf ( 3, 0, Info.Attr, "    Receiver Congestion:                    UnderRun:    Abort Delimiter:");
  575.         aprintf ( 4, 0, Info.Attr, "       Frame Copy Error:                  Line Error:         Frame Lost:");
  576.         aprintf ( 5, 0, Info.Attr, "                                         Token Error:");
  577.  
  578.         aprintf ( 7, 0, Info.Attr, "               Version:                FCS Error or Repeat FC Error:");
  579.         aprintf ( 8, 0, Info.Attr, " Access Control Errors:                5 Half-Bit Transition Errors:");
  580.         aprintf ( 9, 0, Info.Attr, "     Frame Copy Errors:            Frames Sent With Abort Delimiter:");
  581.         aprintf (10, 0, Info.Attr, "      Frequency Errors:                    Frames Sent Not Received:");
  582.         aprintf (11, 0, Info.Attr, " Ring Util Measurement:                Frames Recognized No Buffers:");
  583.         aprintf (12, 0, Info.Attr, "                                         Active Monitor Regen Count:");
  584.        }
  585.      else
  586.        {
  587.         aprintf ( 1, 0, Info.Attr, "        Receive Fail              Frames Sent               Transmit Fail");
  588.         aprintf ( 2, 0, Info.Attr, "        ────────────              ───────────               ─────────────");
  589.         aprintf ( 3, 0, Info.Attr, "   Align Error:            After Collisions:             Excess Collisions:");
  590.         aprintf ( 4, 0, Info.Attr, "       Overrun:             After Deferring:            Carrier Check Fail:");
  591.         aprintf ( 5, 0, Info.Attr, "     CRC Error:           After 1 Collision:                 Short Circuit:");
  592.         aprintf ( 6, 0, Info.Attr, " Framing Error:             Mult Collisions:                  Open Circuit:");
  593.         aprintf ( 7, 0, Info.Attr, "    Size > Max:               CD Heart Beat:                    Size > Max:");
  594.         aprintf ( 8, 0, Info.Attr, "                                                         Rem Fail to Defer:");
  595.  
  596.         aprintf (10, 0, Info.Attr, "               Version:              Frames Not Sent Max Collisions:");
  597.         aprintf (11, 0, Info.Attr, " Total Late Collisions:            Total Colls during Xmit Attempts:");
  598.         aprintf (12, 0, Info.Attr, "         Jabber Errors:              Lost Carrier Sense during Xmit:");
  599.        }
  600.      UpdateMedia ();
  601.     }
  602.   else
  603.      aprintf ( 6, 20, Info.Attr, "Media Specific Status Table Not Present");
  604.  
  605.  
  606.   return SUCCESS;
  607. }
  608.  
  609. void UpdateCCB ()
  610. {
  611.   char str[20];
  612.   int  i;
  613.  
  614.   aprintf ( 3, 46, Info.HighAttr, "%02X", MACCCB.CcbAdapterConfig);
  615.   for (i=0; i<10; ++i)
  616.      sprintf (str + i, "%c", (char) MACCCB.CcbMicroCodeLevel[i]);
  617.   aprintf ( 4, 46, Info.HighAttr, "%s", str);
  618.   aprintf ( 5, 46, Info.HighAttr, "%lp", MACCCB.CcbAdapterParmsAddr);
  619.   aprintf ( 6, 46, Info.HighAttr, "%lp", MACCCB.CcbAdapterMACAddr);
  620.   aprintf ( 7, 46, Info.HighAttr, "%04X", MACCCB.CcbSRAMAddress);
  621.   aprintf ( 8, 46, Info.HighAttr, "%04X", MACCCB.CcbBringUps);
  622.   aprintf ( 9, 46, Info.HighAttr, "%04X", MACCCB.CcbAdapterType);
  623. }
  624.  
  625. int CCBDisp ()
  626. {
  627.   ClearWindow (Info);
  628.  
  629.   if (MACMCC.CcNDISMnrVer == 0x02)
  630.     {
  631.      aprintf ( 3, 0, Info.Attr, "                       Adapter Configuration:");
  632.      aprintf ( 4, 0, Info.Attr, "                             Microcode Level:");
  633.      aprintf ( 5, 0, Info.Attr, "                       Adapter Parms Address:");
  634.      aprintf ( 6, 0, Info.Attr, "                         Adapter MAC Address:");
  635.      aprintf ( 7, 0, Info.Attr, "                                SRAM Address:");
  636.      aprintf ( 8, 0, Info.Attr, "                                   Bring Ups:");
  637.      aprintf ( 9, 0, Info.Attr, "                                Adapter Type:");
  638.  
  639.      UpdateCCB ();
  640.     }
  641.   else
  642.      aprintf ( 6, 31, Info.Attr, "CCB Not Supported");
  643.  
  644.   return SUCCESS;
  645. }
  646.  
  647. void UpdateStressScr ()
  648. {
  649.   char str[20];
  650.   int  cnt;
  651.  
  652.   cnt = sprintf (str, "%10ld", WedgeCommon->TotalRx);
  653.   VioWrtCharStrAtt (str, cnt, 6, 42, &Info.HighAttr, 0);
  654.   cnt = sprintf (str, "%10ld", WedgeCommon->TotalTx);
  655.   VioWrtCharStrAtt (str, cnt, 7, 42, &Info.HighAttr, 0);
  656.   cnt = sprintf (str, "%10ld", WedgeCommon->TotalRxErr);
  657.   VioWrtCharStrAtt (str, cnt, 8, 42, &Info.HighAttr, 0);
  658.   cnt = sprintf (str, "%10ld", WedgeCommon->TotalTxErr);
  659.   VioWrtCharStrAtt (str, cnt, 9, 42, &Info.HighAttr, 0);
  660.   cnt = sprintf (str, "%10ld", WedgeCommon->TotalTxNoRsrc);
  661.   VioWrtCharStrAtt (str, cnt, 10, 42, &Info.HighAttr, 0);
  662. }
  663.  
  664. void ShowStressScr ()
  665. {
  666.   char str[20];
  667.   int  i;
  668.  
  669.   ClearWindow (Info);
  670.  
  671.   aprintf ( 1, 16, Info.Attr, "╔═════════════════════════════════════════════╗");
  672.   aprintf ( 2, 16, Info.Attr, "║             Running Stress Test             ║");
  673.   if (WedgeCommon->RspMode == WORKSTATION)
  674.     {
  675.      for (i=0; i<WedgeCommon->StnAdrSz; ++i)
  676.         sprintf (str + 3 * i, "%02X ", WedgeCommon->ServerAddr[i]);
  677.      aprintf ( 3, 16, Info.Attr, "║      Stressing server:                      ║");
  678.      aprintf ( 3, 42, Info.HighAttr, "%s", str);
  679.     }
  680.   else
  681.      aprintf ( 3, 16, Info.Attr, "║                                             ║");
  682.   aprintf ( 4, 16, Info.Attr, "╟─────────────────────────────────────────────╢");
  683.   aprintf ( 5, 16, Info.Attr, "║           Frame Count:                      ║");
  684.   aprintf ( 5, 42, Info.HighAttr, "%10ld", WedgeCommon->StressCnt);
  685.   aprintf ( 6, 16, Info.Attr, "║       Received Frames:                      ║");
  686.   aprintf ( 7, 16, Info.Attr, "║    Transmitted Frames:                      ║");
  687.   aprintf ( 8, 16, Info.Attr, "║   Receive Data Errors:                      ║");
  688.   aprintf ( 9, 16, Info.Attr, "║       Transmit Errors:                      ║");
  689.   aprintf (10, 16, Info.Attr, "║    Tx Out of Resource:                      ║");
  690.   aprintf (11, 16, Info.Attr, "╚═════════════════════════════════════════════╝");
  691.   aprintf (12, 16, Info.Attr, "               Press ^H to exit");
  692.  
  693. }
  694.  
  695. void UpdateInfo ()
  696. {
  697.   switch (CurrMenuOpt)
  698.     {
  699.      case MSC:
  700.        UpdateServiceChar ();
  701.        break;
  702.      case MSS:
  703.        UpdateServiceStatus ();
  704.        break;
  705.      case MMC:
  706.        MulticastList ();
  707.        break;
  708.      case MEDIA:
  709.        UpdateMedia ();
  710.        break;
  711.     } /* endswitch */
  712. }
  713.  
  714.