#include "headers.h" int smbmailslotsend(NbDgramSendParameters *p, SmbBuffer *msg, char **errmsgp) { ushort setup[3]; int rv; SmbTransaction transaction; SmbBuffer *b; SmbHeader h; setup[0] = 1; setup[1] = 0; setup[2] = 0; memset(&transaction, 0, sizeof(transaction)); transaction.in.name = smbglobals.mailslotbrowse; transaction.in.scount = 3; transaction.in.setup = setup; transaction.in.tdcount = smbbufferreadspace(msg); transaction.in.data = smbbufferreadpointer(msg); b = smbbuffernew(NbDgramMaxLen); memset(&h, 0, sizeof(h)); rv = smbtransactionexecute(&transaction, &h, nil, b, &smbtransactionmethoddgram, p, nil, errmsgp); smbbufferfree(&b); return rv; } int smbbrowsesendhostannouncement(char *name, ulong periodms, ulong type, char *comment, char **errmsgp) { NbDgramSendParameters p; SmbBuffer *b; int rv; // NbName msbrowse; // msbrowse[0] = 1; // msbrowse[1] = 2; // memcpy(msbrowse + 2, "__MSBROWSE__", 12); // msbrowse[14] = 2; // msbrowse[15] = 1; // nbnamecpy(p.to, msbrowse); nbmknamefromstringandtype(p.to, smbglobals.primarydomain, 0x1d); p.type = NbDgramDirectUnique; b = smbbuffernew(NbDgramMaxLen); smbbufferputb(b, 1); smbbufferputb(b, 0); smbbufferputl(b, periodms); smbbufferputstrn(b, name, 16, 1); smbbufferputb(b, 4); smbbufferputb(b, 0); smbbufferputl(b, type); smbbufferputl(b, 0xaa55011f); smbbufferputstring(b, nil, 0, comment); rv = smbmailslotsend(&p, b, errmsgp); smbbufferfree(&b); return rv; }