home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: InfoMgt / InfoMgt.zip / MAILMIND.ZOO / NETCLRNM.C < prev    next >
Text File  |  1992-03-11  |  2KB  |  100 lines

  1. /* netclrnm.c - clear NETBIOS names greater than 3
  2.  * Thomas A. Marciniak, M.D. = ytm@nihccpc1.bitnet
  3.  * Division of Cancer Prevention & Control, NCI
  4.  */
  5.  
  6. /* Revision history:
  7.  * 1.01  ytm  01/31/91  eliminate post routine
  8.  * 1.00  ytm  01/31/91  first release
  9.  */
  10.  
  11. /* Program notes:
  12.  * Current versions are specific for TurboC.
  13.  */
  14.  
  15. #include <local.h>                      /* standard definitions */
  16. #include "netbios.h"
  17.  
  18. /* status structure */
  19. #define STATUS_UNKNOWN 0xff
  20. #define STATUS_STRUCT struct status
  21. typedef STATUS_STRUCT
  22.   {
  23.   word   wCode;
  24.   string sText;
  25.   };
  26. STATUS_STRUCT aStatus[] =
  27.   {
  28.   {0,  "OK"},
  29.   {21, "not found"},
  30.   {STATUS_UNKNOWN, "?"}
  31.   };
  32.  
  33. /* globals */
  34. NB_STATUS Nb;
  35. NCB       Ncb;
  36.  
  37. /* function prototypes */
  38. short main(void);
  39. word NetAdapterStatus(string sName);
  40. word NetDelName(string sName);
  41.  
  42. /* delete a name from NETBIOS */
  43. word NetDelName(string sName)
  44. {
  45. printf("Deleting %s ", sName);
  46. memset(&Ncb, 0, sizeof(NCB));
  47. Ncb.NCB_COMMAND = DELETE_NAME_WAIT;
  48. strncpy(Ncb.NCB_NAME, sName, NETBIOS_NAME_LEN);
  49. Ncb.NCB_CMD_CPLT = STATUS_UNKNOWN;
  50. _ES = FP_SEG(&Ncb);
  51. _BX = FP_OFF(&Ncb);
  52. _AX = 0x0100;
  53. geninterrupt(0x5c);
  54. if (Ncb.NCB_CMD_CPLT) printf("FAILED\n");
  55. else printf("(deleted)\n");
  56. return(Ncb.NCB_CMD_CPLT);
  57. } /* NetDelName */ 
  58.  
  59. /* check the adapter status */
  60. word NetAdapterStatus(string sName)
  61. {
  62. string s, t;
  63. memset(&Ncb, 0, sizeof(NCB));
  64. Ncb.NCB_COMMAND = STATUS_WAIT;
  65. strncpy(Ncb.NCB_CALLNAME, sName, NETBIOS_NAME_LEN);
  66. for (s = Ncb.NCB_CALLNAME, t = s + NETBIOS_NAME_LEN - 1; s < t; s++)
  67.   *s = ((*s) ? toupper(*s) : ' ');
  68. Ncb.NCB_BUFFER = (void far *) &Nb;
  69. Ncb.NCB_LENGTH = sizeof(Nb);
  70. Ncb.NCB_CMD_CPLT = STATUS_UNKNOWN;
  71. _ES = FP_SEG(&Ncb);
  72. _BX = FP_OFF(&Ncb);
  73. _AX = 0x0100;
  74. geninterrupt(0x5c);
  75. return(Ncb.NCB_CMD_CPLT);
  76. } /* NetAdapterStatus */ 
  77.  
  78. /* main */
  79. short main(void)
  80. {
  81. short  i;
  82. word   wStatus;
  83. printf("Netclrnm v1.01\n");
  84. if ((wStatus = NetAdapterStatus("*")) == 0)
  85.   {
  86.   for (i = 0; i < Nb.wNames; i++)
  87.     {
  88.     if (Nb.aNameEntry[i].byNcbNum > 3) wStatus =
  89.       NetDelName(Nb.aNameEntry[i].caName);
  90.     if (wStatus) break;
  91.     }
  92.   }
  93. for (i = 0; *(aStatus[i].sText) != '?'; i++)
  94.   if (aStatus[i].wCode == wStatus) break;
  95. printf("Netclrnm status: %s (%d)\n", aStatus[i].sText, Ncb.NCB_CMD_CPLT);
  96. return(i);
  97. } /* main */
  98.  
  99.  
  100.