Lines Matching refs:vcp

72 smb_vc_maxread(struct smb_vc *vcp)
82 if ((vcp->vc_sopt.sv_caps & SMB_CAP_LARGE_READX) &&
83 (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE) == 0)
86 return (vcp->vc_sopt.sv_maxtx - SMB_HDRLEN - 64);
90 smb_vc_maxwrite(struct smb_vc *vcp)
95 if ((vcp->vc_sopt.sv_caps & SMB_CAP_LARGE_WRITEX) &&
96 (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE) == 0)
99 return (vcp->vc_sopt.sv_maxtx - SMB_HDRLEN - 64);
103 smb_smb_nomux(struct smb_vc *vcp, struct smb_cred *scred, const char *name)
105 if (scred->scr_td->td_proc == vcp->vc_iod->iod_p)
112 smb_smb_negotiate(struct smb_vc *vcp, struct smb_cred *scred)
122 int unicode = SMB_UNICODE_STRINGS(vcp);
123 void * servercharset = vcp->vc_toserver;
124 void * localcharset = vcp->vc_tolocal;
126 if (smb_smb_nomux(vcp, scred, __func__) != 0)
130 vcp->vc_toserver = vcp->vc_cp_toserver;
131 vcp->vc_tolocal = vcp->vc_cp_tolocal;
133 vcp->vc_hflags = 0;
134 vcp->vc_hflags2 = 0;
135 vcp->obj.co_flags &= ~(SMBV_ENCRYPT);
136 sp = &vcp->vc_sopt;
138 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_NEGOTIATE, scred, &rqp);
147 smb_put_dstring(mbp, vcp, dp->d_name, SMB_CS_NONE);
194 error = md_get_mem(mdp, vcp->vc_ch, sblen, MB_MSYSTEM);
197 vcp->vc_chlen = sblen;
198 vcp->obj.co_flags |= SMBV_ENCRYPT;
201 vcp->vc_hflags2 |= SMB_FLAGS2_SECURITY_SIGNATURE;
202 if (vcp->vc_ucs_toserver &&
207 vcp->obj.co_flags |= SMBV_UNICODE;
209 vcp->vc_hflags2 |= SMB_FLAGS2_KNOWS_LONG_NAMES;
213 vcp->obj.co_flags |= SMBV_WIN95;
219 vcp->vc_hflags2 &= ~(SMB_FLAGS2_EXT_SEC|SMB_FLAGS2_DFS|
244 error = md_get_mem(mdp, vcp->vc_ch, swlen, MB_MSYSTEM);
247 vcp->vc_chlen = swlen;
248 vcp->obj.co_flags |= SMBV_ENCRYPT;
251 vcp->vc_hflags2 |= SMB_FLAGS2_KNOWS_LONG_NAMES;
258 vcp->vc_maxvcs = sp->sv_maxvcs;
259 if (vcp->vc_maxvcs <= 1) {
260 if (vcp->vc_maxvcs == 0)
261 vcp->vc_maxvcs = 1;
268 SMB_TRAN_GETPARAM(vcp, SMBTP_RCVSZ, &maxqsz);
269 vcp->vc_rxmax = min(smb_vc_maxread(vcp), maxqsz - 1024);
270 SMB_TRAN_GETPARAM(vcp, SMBTP_SNDSZ, &maxqsz);
271 vcp->vc_wxmax = min(smb_vc_maxwrite(vcp), maxqsz - 1024);
272 vcp->vc_txmax = min(sp->sv_maxtx, maxqsz);
283 vcp->vc_toserver = servercharset;
284 vcp->vc_tolocal = localcharset;
285 vcp->vc_hflags2 |= SMB_FLAGS2_UNICODE;
292 smb_smb_ssnsetup(struct smb_vc *vcp, struct smb_cred *scred)
305 if (vcp->obj.co_flags & SMBV_UNICODE)
310 vcp->vc_smbuid = SMB_UID_UNKNOWN;
312 if (smb_smb_nomux(vcp, scred, __func__) != 0)
315 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_SESSION_SETUP_ANDX, scred, &rqp);
320 if (vcp->vc_sopt.sv_sm & SMB_SM_USER) {
327 iconv_convstr(vcp->vc_toupper, pbuf,
328 smb_vc_getpass(vcp)/*, SMB_MAXPASSWORDLEN*/);
330 strncpy(pbuf, smb_vc_getpass(vcp), SMB_MAXPASSWORDLEN);
333 if (!SMB_UNICODE_STRINGS(vcp))
334 iconv_convstr(vcp->vc_toserver, pbuf, pbuf/*,
337 if (vcp->vc_sopt.sv_sm & SMB_SM_ENCRYPT) {
339 smb_encrypt(pbuf, vcp->vc_ch, encpass);
341 if (SMB_UNICODE_STRINGS(vcp)) {
342 strncpy(pbuf, smb_vc_getpass(vcp),
346 iconv_convstr(vcp->vc_toserver, pbuf,
347 smb_vc_getpass(vcp)/*,
349 smb_ntencrypt(pbuf, vcp->vc_ch, (u_char*)ntencpass);
357 smb_strtouni(ntencpass, smb_vc_getpass(vcp));
381 up = vcp->vc_username;
392 mb_put_uint16le(mbp, vcp->vc_sopt.sv_maxtx);
393 mb_put_uint16le(mbp, vcp->vc_sopt.sv_maxmux);
394 mb_put_uint16le(mbp, vcp->vc_number);
395 mb_put_uint32le(mbp, vcp->vc_sopt.sv_skey);
397 if (SMB_DIALECT(vcp) < SMB_DIALECT_NTLM0_12) {
402 smb_put_dstring(mbp, vcp, up, SMB_CS_NONE);
411 smb_put_dstring(mbp, vcp, up, SMB_CS_NONE); /* AccountName */
412 smb_put_dstring(mbp, vcp, vcp->vc_domain, SMB_CS_NONE); /* PrimaryDomain */
413 smb_put_dstring(mbp, vcp, "FreeBSD", SMB_CS_NONE); /* Client's OS */
414 smb_put_dstring(mbp, vcp, "NETSMB", SMB_CS_NONE); /* Client name */
419 if (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE)
420 smb_calcmackey(vcp);
428 vcp->vc_smbuid = rqp->sr_rpuid;
433 if (error && upper == 1 && vcp->vc_sopt.sv_sm & SMB_SM_USER)
439 smb_smb_ssnclose(struct smb_vc *vcp, struct smb_cred *scred)
445 if (vcp->vc_smbuid == SMB_UID_UNKNOWN)
448 if (smb_smb_nomux(vcp, scred, __func__) != 0)
451 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_LOGOFF_ANDX, scred, &rqp);
499 struct smb_vc *vcp;
510 vcp = SSTOVC(ssp);
511 vcp->vc_toserver = vcp->vc_cp_toserver;
512 vcp->vc_tolocal = vcp->vc_cp_tolocal;
513 vcp->vc_hflags2 &= ~SMB_FLAGS2_UNICODE;
520 vcp = rqp->sr_vc;
522 if (vcp->vc_sopt.sv_sm & SMB_SM_USER) {
536 iconv_convstr(vcp->vc_toupper, pbuf,
544 if (vcp->vc_sopt.sv_sm & SMB_SM_ENCRYPT) {
546 smb_encrypt(pbuf, vcp->vc_ch, encpass);
563 smb_put_dmem(mbp, vcp, "\\\\", 2, caseopt);
564 pp = vcp->vc_srvname;
565 smb_put_dmem(mbp, vcp, pp, strlen(pp), caseopt);
566 smb_put_dmem(mbp, vcp, "\\", 1, caseopt);
568 smb_put_dstring(mbp, vcp, pp, caseopt);
570 smb_put_dstring(mbp, vcp, pp, caseopt);
577 ssp->ss_vcgenid = vcp->vc_genid;
583 if (vcp->obj.co_flags & SMBV_UNICODE) {
584 vcp->vc_toserver = vcp->vc_ucs_toserver;
585 vcp->vc_tolocal = vcp->vc_ucs_tolocal;
586 vcp->vc_hflags2 |= SMB_FLAGS2_UNICODE;
929 smb_smb_echo(struct smb_vc *vcp, struct smb_cred *scred)
935 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_ECHO, scred, &rqp);