home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / ABUSESRC.ZIP / AbuseSrc / macabuse / src / net / mac / nettst.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-20  |  3.7 KB  |  171 lines

  1. #include <appletalk.h>
  2. #include <stdio.h>
  3.  
  4. char ourName[60];
  5.  
  6. short mpp = 0, socket = 0;
  7. NamesTableEntry *NTPtr = 0L;
  8. MPPParamBlock p;
  9. ATDDPRec ddp;
  10. char buffer[1000];
  11. AddrBlock *users;
  12.  
  13. int Setup()
  14. {
  15.     printf("NetTst 1.0\n\nReady\n");
  16.  
  17.     return 1;    
  18. }
  19.  
  20. short DoRegName()
  21. {
  22.     EntityName name;
  23.     short err, len;
  24.     short index;
  25.     StringHandle H;
  26.     
  27.     ourName[0] = 1;
  28.     ourName[1] = '?';
  29.  
  30. /*
  31.     p.MPPioCompletion = 0L;
  32.     p.MPPioRefNum = mpp;
  33.     p.DDPsocket = 0;
  34.     p.DDPlistener = (Ptr) StripAddress((Ptr) (ProcPtr) DDPListener);
  35.     err = POpenSkt(&p,true);
  36. */
  37.     socket = 0;
  38.     err = DDPOpenSocket(&socket, nil);
  39.  
  40. /*    
  41.     while (p.MPPioResult == 1)
  42.         ;
  43. */
  44.     if (err) {
  45.         Message("\pCould not open AppleTalk socket !!!");
  46.         return(err);
  47.     }
  48. //    socket = p.DDPsocket;
  49.     name.zoneStr[0] = 1;
  50.     name.zoneStr[1] = '*';
  51.     BlockMove("\pNeighborhood Watch",name.typeStr, 20L);
  52.     len = sizeof(NamesTableEntry);
  53.     
  54.     NTPtr = (NamesTableEntry*) NewPtrClear(len);
  55.     if (!NTPtr)
  56.         return(MemErr);
  57.     NTPtr->nt.nteAddress.aSocket = socket;
  58.     p.NBPinterval = 3;
  59.     p.NBPcount = 3;
  60.     p.NBPverifyFlag = true;
  61.     p.NBPntQElPtr = (Ptr) NTPtr;
  62.     BlockMove(ourName,&(NTPtr->nt.entityData[0]),33L);
  63.     index = ourName[0] + 1;
  64.     BlockMove(name.typeStr,&(NTPtr->nt.entityData[index]),33L);
  65.     index += name.typeStr[0] + 1;
  66.     BlockMove(name.zoneStr,&(NTPtr->nt.entityData[index]),33L);
  67.     err = PRegisterName(&p,true);
  68.     while (p.MPPioResult == 1)
  69.         ;
  70.     err = p.MPPioResult;
  71.     while (err == nbpDuplicate) {
  72.         ourName[0]++;
  73.         ourName[ourName[0]] = '1';
  74.         BlockMove(ourName,&(NTPtr->nt.entityData[0]),33L);
  75.         index = ourName[0] + 1;
  76.         BlockMove(name.typeStr,&(NTPtr->nt.entityData[index]),33L);
  77.         index += name.typeStr[0] + 1;
  78.         BlockMove(name.zoneStr,&(NTPtr->nt.entityData[index]),33L);
  79.         err = PRegisterName(&p,true);
  80.         while (p.MPPioResult == 1)
  81.             ;
  82.         err = p.MPPioResult;
  83.     }
  84.     if (err)
  85.         Message("\pCould not register name in network.");
  86.  
  87. //    InitDDPListener(&ddp);
  88.  
  89.     return(noErr);
  90. }
  91.  
  92. void Names()
  93. {
  94.     EntityName name;
  95.     short err, counter;
  96.     Handle buffer = 0L;
  97.     short found;
  98.     MPPParamBlock p;
  99.     char Entity[110];
  100.     
  101.     p.MPPioCompletion = 0L;
  102.     p.MPPioRefNum = mpp;
  103.     buffer = NewHandle(LOOKUPBUFSIZE);
  104.     if (!buffer) {
  105.         return;
  106.     }
  107.     Message("\pFindind Neighbors...");
  108.     HLock(buffer);
  109.     BlockMove("\pNeighborhood Watch",name.typeStr, 20L);
  110.     name.objStr[0] = 1;
  111.     name.objStr[1] = '=';
  112.     name.zoneStr[0] = 1;
  113.     name.zoneStr[1] = '*';
  114.     BlockMove(name.objStr,Entity,33L);
  115.     counter = Entity[0] + 1;
  116.     BlockMove(name.typeStr,&Entity[counter],33L);
  117.     counter += name.typeStr[0] + 1;
  118.     BlockMove(name.zoneStr,&Entity[counter],33L);
  119.     p.NBPinterval = 5;
  120.     p.NBPcount = 4;
  121.     p.NBPentityPtr = Entity;
  122.     p.NBPretBuffPtr = *buffer;
  123.     p.NBPretBuffSize = LOOKUPBUFSIZE;
  124.     p.NBPmaxToGet = LOOKUPBUFSIZE / 110;
  125.     p.NBPnumGotten = 0;
  126.     err = PLookupName(&p,false);
  127.     err = p.MPPioResult;
  128.     if (!err) {
  129.         found = p.NBPnumGotten;
  130.         for (counter = 0; counter < found; counter++)
  131.             err = myNBPExtract(*buffer,found,counter + 1,&name, &(users[counter]));
  132.             Message(name.objStr);
  133.     }
  134.     if (buffer)
  135.         DisposHandle(buffer);
  136.     buffer = 0L;
  137. }
  138.  
  139. main()
  140. {
  141.     short err, len;    
  142.     char st[256];
  143.  
  144.     if (!Setup())
  145.         return;
  146.     err = OpenDriver("\p.MPP",&mpp);
  147.     if (err) {
  148.         Message("\pAppleTalk is not available");
  149.         return;
  150.     }
  151.     err = DoRegName();
  152.     Names();
  153.     BlockMove("\pEntering the network...",st,30L);
  154.     len = ourName[0];
  155.     BlockMove(&ourName[1], &st[st[0] + 1], (long) len);
  156.     st[0] += len;
  157.     err = DoDDP(st);
  158.     if (err)
  159.         Message("\pError writing to network.");
  160.     while (Working())
  161.         ;
  162.     BlockMove("\pLeaving the network...",st,30L);
  163.     len = ourName[0];
  164.     BlockMove(&ourName[1], &st[st[0] + 1], (long) len);
  165.     st[0] += len;
  166.     err = DoDDP(st);
  167.     CleanTalk();
  168.     
  169. }
  170.  
  171.