smbbrowse.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "headers.h"
  2. int
  3. smbmailslotsend(NbDgramSendParameters *p, SmbBuffer *msg, char **errmsgp)
  4. {
  5. ushort setup[3];
  6. int rv;
  7. SmbTransaction transaction;
  8. SmbBuffer *b;
  9. SmbHeader h;
  10. setup[0] = 1;
  11. setup[1] = 0;
  12. setup[2] = 0;
  13. memset(&transaction, 0, sizeof(transaction));
  14. transaction.in.name = smbglobals.mailslotbrowse;
  15. transaction.in.scount = 3;
  16. transaction.in.setup = setup;
  17. transaction.in.tdcount = smbbufferreadspace(msg);
  18. transaction.in.data = smbbufferreadpointer(msg);
  19. b = smbbuffernew(NbDgramMaxLen);
  20. memset(&h, 0, sizeof(h));
  21. rv = smbtransactionexecute(&transaction, &h, nil, b, &smbtransactionmethoddgram, p, nil, errmsgp);
  22. smbbufferfree(&b);
  23. return rv;
  24. }
  25. int
  26. smbbrowsesendhostannouncement(char *name, ulong periodms, ulong type, char *comment, char **errmsgp)
  27. {
  28. NbDgramSendParameters p;
  29. SmbBuffer *b;
  30. int rv;
  31. // NbName msbrowse;
  32. // msbrowse[0] = 1;
  33. // msbrowse[1] = 2;
  34. // memcpy(msbrowse + 2, "__MSBROWSE__", 12);
  35. // msbrowse[14] = 2;
  36. // msbrowse[15] = 1;
  37. // nbnamecpy(p.to, msbrowse);
  38. nbmknamefromstringandtype(p.to, smbglobals.primarydomain, 0x1d);
  39. p.type = NbDgramDirectUnique;
  40. b = smbbuffernew(NbDgramMaxLen);
  41. smbbufferputb(b, 1);
  42. smbbufferputb(b, 0);
  43. smbbufferputl(b, periodms);
  44. smbbufferputstrn(b, name, 16, 1);
  45. smbbufferputb(b, 4);
  46. smbbufferputb(b, 0);
  47. smbbufferputl(b, type);
  48. smbbufferputl(b, 0xaa55011f);
  49. smbbufferputstring(b, nil, 0, comment);
  50. rv = smbmailslotsend(&p, b, errmsgp);
  51. smbbufferfree(&b);
  52. return rv;
  53. }