⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbresponse.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "headers.h"voidsmbresponsereset(SmbSession *s){	smbbufferreset(s->response);}voidsmbresponseinit(SmbSession *s, ushort maxlen){	smbbufferfree(&s->response);	s->response = smbbuffernew(maxlen);}intsmbresponsealignl2(SmbSession *s, int l2a){	return smbbufferalignl2(s->response, l2a);}intsmbresponseputheader(SmbSession *s, SmbHeader *h, uchar errclass, ushort error){	h->errclass = errclass;	h->error = error;	return smbbufferputheader(s->response, h, &s->peerinfo);}intsmbresponseputb(SmbSession *s, uchar b){	return smbbufferputb(s->response, b);}ushortsmbresponsespace(SmbSession *sess){	return smbbufferwritespace(sess->response);}intsmbresponseskip(SmbSession *sess, ushort amount){	return smbbufferputbytes(sess->response, nil, amount);}intsmbresponseoffsetputs(SmbSession *sess, ushort offset, ushort s){	return smbbufferoffsetputs(sess->response, offset, s);}intsmbresponseputs(SmbSession *sess, ushort s){	return smbbufferputs(sess->response, s);}intsmbresponseputl(SmbSession *s, ulong l){	return smbbufferputl(s->response, l);}intsmbresponsecpy(SmbSession *s, uchar *data, ushort datalen){	return smbbufferputbytes(s->response, data, datalen);}intsmbresponseputstring(SmbSession *s, int mustalign, char *string){	return smbbufferputstring(s->response, &s->peerinfo, mustalign ? 0 : SMB_STRING_UNALIGNED, string);}intsmbresponseputstr(SmbSession *s, char *string){	return smbbufferputstring(s->response, nil, SMB_STRING_ASCII, string);}ushortsmbresponseoffset(SmbSession *s){	return smbbufferwriteoffset(s->response);}SmbProcessResultsmbresponsesend(SmbSession *s){	uchar cmd;	SmbProcessResult pr;	assert(smbbufferoffsetgetb(s->response, 4, &cmd));smbloglock();smblogprint(cmd, "sending:\n");smblogdata(cmd, smblogprint, smbbufferreadpointer(s->response), smbbufferreadspace(s->response), 256);smblogunlock();	if (s->nbss) {		NbScatterGather a[2];		a[0].p = smbbufferreadpointer(s->response);		a[0].l = smbbufferreadspace(s->response);		a[1].p = nil;		nbssgatherwrite(s->nbss, a);		pr = SmbProcessResultOk;	}	else if (s->cifss) {		ulong l = smbbufferreadspace(s->response);		uchar nl[4];		hnputl(nl, l);		write(s->cifss->fd, nl, 4);		write(s->cifss->fd, smbbufferreadpointer(s->response), l);		pr = SmbProcessResultOk;	}	else		pr = SmbProcessResultDie;	smbbufferreset(s->response);	return pr;}intsmbresponseputandxheader(SmbSession *s, SmbHeader *h, ushort andxcommand, ulong *andxoffsetfixupp){	return smbbufferputandxheader(s->response, h, &s->peerinfo, andxcommand, andxoffsetfixupp);}intsmbresponseputerror(SmbSession *s, SmbHeader *h, uchar errclass, ushort error){	h->wordcount = 0;	return smbresponseputheader(s, h, errclass, error)		&& smbresponseputs(s, 0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -