Lines Matching defs:rqp

52 static int  smb_rq_reply(struct smb_rq *rqp);
53 static int smb_rq_enqueue(struct smb_rq *rqp);
56 static int smb_rq_new(struct smb_rq *rqp, u_char cmd);
63 struct smb_rq *rqp;
66 rqp = malloc(sizeof(*rqp), M_SMBRQ, M_WAITOK);
67 error = smb_rq_init(rqp, layer, cmd, scred);
68 rqp->sr_flags |= SMBR_ALLOCED;
70 smb_rq_done(rqp);
73 *rqpp = rqp;
80 smb_rq_init(struct smb_rq *rqp, struct smb_connobj *layer, u_char cmd,
85 bzero(rqp, sizeof(*rqp));
86 smb_sl_init(&rqp->sr_slock, "srslock");
87 error = smb_rq_getenv(layer, &rqp->sr_vc, &rqp->sr_share);
90 error = smb_vc_access(rqp->sr_vc, scred, SMBM_EXEC);
93 if (rqp->sr_share) {
94 error = smb_share_access(rqp->sr_share, scred, SMBM_EXEC);
98 rqp->sr_cred = scred;
99 rqp->sr_mid = smb_vc_nextmid(rqp->sr_vc);
100 return smb_rq_new(rqp, cmd);
104 smb_rq_new(struct smb_rq *rqp, u_char cmd)
106 struct smb_vc *vcp = rqp->sr_vc;
107 struct mbchain *mbp = &rqp->sr_rq;
111 rqp->sr_sendcnt = 0;
113 md_done(&rqp->sr_rp);
129 rqp->sr_rqsig = NULL;
132 rqp->sr_rqsig = (u_int8_t *)mb_reserve(mbp, 8);
135 rqp->sr_rqtid = mb_reserve(mbp, sizeof(u_int16_t));
137 rqp->sr_rquid = mb_reserve(mbp, sizeof(u_int16_t));
138 mb_put_uint16le(mbp, rqp->sr_mid);
143 smb_rq_done(struct smb_rq *rqp)
145 mb_done(&rqp->sr_rq);
146 md_done(&rqp->sr_rp);
147 smb_sl_destroy(&rqp->sr_slock);
148 if (rqp->sr_flags & SMBR_ALLOCED)
149 free(rqp, M_SMBRQ);
156 smb_rq_simple(struct smb_rq *rqp)
158 struct smb_vc *vcp = rqp->sr_vc;
162 rqp->sr_flags &= ~SMBR_RESTART;
163 rqp->sr_timo = vcp->vc_timo;
164 rqp->sr_state = SMBRQ_NOTSENT;
165 error = smb_rq_enqueue(rqp);
168 error = smb_rq_reply(rqp);
171 if ((rqp->sr_flags & (SMBR_RESTART | SMBR_NORESTART)) != SMBR_RESTART)
178 smb_rq_enqueue(struct smb_rq *rqp)
180 struct smb_share *ssp = rqp->sr_share;
183 if (ssp == NULL || rqp->sr_cred == &rqp->sr_vc->vc_iod->iod_scred) {
184 return smb_iod_addrq(rqp);
191 if (smb_td_intr(rqp->sr_cred->scr_td))
199 error = smb_iod_request(rqp->sr_vc->vc_iod,
204 error = smb_iod_addrq(rqp);
212 smb_rq_wstart(struct smb_rq *rqp)
214 rqp->sr_wcount = mb_reserve(&rqp->sr_rq, sizeof(u_int8_t));
215 rqp->sr_rq.mb_count = 0;
219 smb_rq_wend(struct smb_rq *rqp)
221 if (rqp->sr_wcount == NULL) {
225 if (rqp->sr_rq.mb_count & 1)
227 *rqp->sr_wcount = rqp->sr_rq.mb_count / 2;
231 smb_rq_bstart(struct smb_rq *rqp)
233 rqp->sr_bcount = mb_reserve(&rqp->sr_rq, sizeof(u_short));
234 rqp->sr_rq.mb_count = 0;
238 smb_rq_bend(struct smb_rq *rqp)
242 if (rqp->sr_bcount == NULL) {
246 bcnt = rqp->sr_rq.mb_count;
249 le16enc(rqp->sr_bcount, bcnt);
253 smb_rq_intr(struct smb_rq *rqp)
255 if (rqp->sr_flags & SMBR_INTR)
257 return smb_td_intr(rqp->sr_cred->scr_td);
261 smb_rq_getrequest(struct smb_rq *rqp, struct mbchain **mbpp)
263 *mbpp = &rqp->sr_rq;
268 smb_rq_getreply(struct smb_rq *rqp, struct mdchain **mbpp)
270 *mbpp = &rqp->sr_rp;
319 smb_rq_reply(struct smb_rq *rqp)
321 struct mdchain *mdp = &rqp->sr_rp;
326 error = smb_iod_waitrq(rqp);
333 if (rqp->sr_vc->vc_hflags2 & SMB_FLAGS2_ERR_STATUS) {
334 error = md_get_uint32le(mdp, &rqp->sr_error);
336 error = md_get_uint8(mdp, &rqp->sr_errclass);
338 error = md_get_uint16le(mdp, &rqp->sr_serror);
340 rperror = smb_maperror(rqp->sr_errclass, rqp->sr_serror);
342 error = md_get_uint8(mdp, &rqp->sr_rpflags);
343 error = md_get_uint16le(mdp, &rqp->sr_rpflags2);
349 error = md_get_uint16le(mdp, &rqp->sr_rptid);
350 error = md_get_uint16le(mdp, &rqp->sr_rppid);
351 error = md_get_uint16le(mdp, &rqp->sr_rpuid);
352 error = md_get_uint16le(mdp, &rqp->sr_rpmid);
355 (rqp->sr_vc->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE))
356 error = smb_rq_verify(rqp);
359 rqp->sr_rpmid, rqp->sr_rppid, rqp->sr_rpuid, rqp->sr_rptid,
360 rqp->sr_errclass, rqp->sr_serror);
444 struct smb_rq *rqp = t2p->t2_rq;
450 error = smb_rq_reply(rqp);
457 SMBRQ_SLOCK(rqp);
458 md_next_record(&rqp->sr_rp);
459 SMBRQ_SUNLOCK(rqp);
469 mdp = &rqp->sr_rp;
535 SMBRQ_SLOCK(rqp);
536 md_next_record(&rqp->sr_rp);
537 SMBRQ_SUNLOCK(rqp);
538 error = smb_rq_reply(rqp);
556 struct smb_rq *rqp;
580 SMB_COM_TRANSACTION : SMB_COM_TRANSACTION2, scred, &rqp);
583 rqp->sr_flags |= SMBR_MULTIPACKET;
584 t2p->t2_rq = rqp;
585 rqp->sr_t2 = t2p;
586 mbp = &rqp->sr_rq;
587 smb_rq_wstart(rqp);
627 smb_rq_wend(rqp);
628 smb_rq_bstart(rqp);
650 smb_rq_bend(rqp); /* incredible, but thats it... */
651 error = smb_rq_enqueue(rqp);
661 error = smb_rq_new(rqp, t2p->t_name ?
665 mbp = &rqp->sr_rq;
666 smb_rq_wstart(rqp);
700 smb_rq_wend(rqp);
701 smb_rq_bstart(rqp);
719 smb_rq_bend(rqp);
720 rqp->sr_state = SMBRQ_NOTSENT;
737 smb_iod_removerq(rqp);
740 if (rqp->sr_flags & SMBR_RESTART)
745 smb_rq_done(rqp);