- f1 = fn->descript.rep_f1;
- f2 = fn->descript.rep_f2;
- }
-
- if (fn->descript.fn) {
- fn->descript.fn(param,data,pcnt,dcnt);
- } else {
- fdata(param,f1?f1:(uchar*)"Paramaters=\n",param+pcnt);
- fdata(data,f2?f2:(uchar*)"Data=\n",data+dcnt);
- }
-}
-
-
-static void print_browse(uchar *param,int paramlen,const uchar *data,int datalen)
-{
- const uchar *maxbuf = data + datalen;
- int command = CVAL(data,0);
-
- fdata(param,"BROWSE PACKET\n|Param ",param+paramlen);
-
- switch (command) {
- case 0xF:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (LocalMasterAnnouncement)\nUpdateCount=[w]\nRes1=[B]\nAnnounceInterval=[d]\nName=[n2]\nMajorVersion=[B]\nMinorVersion=[B]\nServerType=[W]\nElectionVersion=[w]\nBrowserConstant=[w]\n",maxbuf);
- break;
-
- case 0x1:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (HostAnnouncement)\nUpdateCount=[w]\nRes1=[B]\nAnnounceInterval=[d]\nName=[n2]\nMajorVersion=[B]\nMinorVersion=[B]\nServerType=[W]\nElectionVersion=[w]\nBrowserConstant=[w]\n",maxbuf);
- break;
-
- case 0x2:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (AnnouncementRequest)\nFlags=[B]\nReplySystemName=[S]\n",maxbuf);
- break;
-
- case 0xc:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (WorkgroupAnnouncement)\nUpdateCount=[w]\nRes1=[B]\nAnnounceInterval=[d]\nName=[n2]\nMajorVersion=[B]\nMinorVersion=[B]\nServerType=[W]\nCommentPointer=[W]\nServerName=[S]\n",maxbuf);
- break;
-
- case 0x8:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (ElectionFrame)\nElectionVersion=[B]\nOSSummary=[W]\nUptime=[(W,W)]\nServerName=[S]\n",maxbuf);
- break;
-
- case 0xb:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (BecomeBackupBrowser)\nName=[S]\n",maxbuf);
- break;
-
- case 0x9:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (GetBackupList)\nListCount?=[B]\nToken?=[B]\n",maxbuf);
- break;
-
- case 0xa:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (BackupListResponse)\nServerCount?=[B]\nToken?=[B]*Name=[S]\n",maxbuf);
- break;
-
- case 0xd:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (MasterAnnouncement)\nMasterName=[S]\n",maxbuf);
- break;
-
- case 0xe:
- data = fdata(data,"BROWSE PACKET:\nType=[B] (ResetBrowser)\nOptions=[B]\n",maxbuf);
- break;
-
- default:
- data = fdata(data,"Unknown Browser Frame ",maxbuf);
- break;
- }
-}
-
-
-static void print_ipc(uchar *param,int paramlen,uchar *data,int datalen)
-{
- if (paramlen)
- fdata(param,"Command=[w]\nStr1=[S]\nStr2=[S]\n",param+paramlen);
- if (datalen)
- fdata(data,"IPC ",data+datalen);
-}
-
-
-static void print_trans(uchar *words,uchar *data1,uchar *buf,uchar *maxbuf)
-{
- uchar *f1,*f2,*f3,*f4;
- uchar *data,*param;
- int datalen,paramlen;
-
- if (request) {
- paramlen = SVAL(words+1,9*2);
- param = buf + SVAL(words+1,10*2);
- datalen = SVAL(words+1,11*2);
- data = buf + SVAL(words+1,12*2);
- f1 = "TotParamCnt=[d] \nTotDataCnt=[d] \nMaxParmCnt=[d] \nMaxDataCnt=[d]\nMaxSCnt=[d] \nTransFlags=[w] \nRes1=[w] \nRes2=[w] \nRes3=[w]\nParamCnt=[d] \nParamOff=[d] \nDataCnt=[d] \nDataOff=[d] \nSUCnt=[d]\n";
- f2 = "|Name=[S]\n";
- f3 = "|Param ";
- f4 = "|Data ";
- } else {
- paramlen = SVAL(words+1,3*2);
- param = buf + SVAL(words+1,4*2);
- datalen = SVAL(words+1,6*2);
- data = buf + SVAL(words+1,7*2);
- f1 = "TotParamCnt=[d] \nTotDataCnt=[d] \nRes1=[d]\nParamCnt=[d] \nParamOff=[d] \nRes2=[d] \nDataCnt=[d] \nDataOff=[d] \nRes3=[d]\nLsetup=[d]\n";
- f2 = "|Unknown ";
- f3 = "|Param ";
- f4 = "|Data ";
- }
-
- fdata(words+1,f1,MIN(words+1+2*CVAL(words,0),maxbuf));
- fdata(data1+2,f2,maxbuf - (paramlen + datalen));
-
- if (!strcmp(data1+2,"\\MAILSLOT\\BROWSE")) {
- print_browse(param,paramlen,data,datalen);
- return;
- }
-
- if (!strcmp(data1+2,"\\PIPE\\LANMAN")) {
- print_ipc(param,paramlen,data,datalen);
- return;
- }
-
- if (paramlen) fdata(param,f3,MIN(param+paramlen,maxbuf));
- if (datalen) fdata(data,f4,MIN(data+datalen,maxbuf));