Lines Matching refs:vcp

74 smb_vc_maxread(struct smb_vc *vcp)
84 if ((vcp->vc_sopt.sv_caps & SMB_CAP_LARGE_READX) &&
85 (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE) == 0)
88 return (vcp->vc_sopt.sv_maxtx - SMB_HDRLEN - 64);
92 smb_vc_maxwrite(struct smb_vc *vcp)
97 if ((vcp->vc_sopt.sv_caps & SMB_CAP_LARGE_WRITEX) &&
98 (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE) == 0)
101 return (vcp->vc_sopt.sv_maxtx - SMB_HDRLEN - 64);
105 smb_smb_nomux(struct smb_vc *vcp, struct smb_cred *scred, const char *name)
107 if (scred->scr_td->td_proc == vcp->vc_iod->iod_p)
114 smb_smb_negotiate(struct smb_vc *vcp, struct smb_cred *scred)
124 int unicode = SMB_UNICODE_STRINGS(vcp);
125 void * servercharset = vcp->vc_toserver;
126 void * localcharset = vcp->vc_tolocal;
128 if (smb_smb_nomux(vcp, scred, __func__) != 0)
132 vcp->vc_toserver = vcp->vc_cp_toserver;
133 vcp->vc_tolocal = vcp->vc_cp_tolocal;
135 vcp->vc_hflags = 0;
136 vcp->vc_hflags2 = 0;
137 vcp->obj.co_flags &= ~(SMBV_ENCRYPT);
138 sp = &vcp->vc_sopt;
140 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_NEGOTIATE, scred, &rqp);
149 smb_put_dstring(mbp, vcp, dp->d_name, SMB_CS_NONE);
196 error = md_get_mem(mdp, vcp->vc_ch, sblen, MB_MSYSTEM);
199 vcp->vc_chlen = sblen;
200 vcp->obj.co_flags |= SMBV_ENCRYPT;
203 vcp->vc_hflags2 |= SMB_FLAGS2_SECURITY_SIGNATURE;
204 if (vcp->vc_ucs_toserver &&
209 vcp->obj.co_flags |= SMBV_UNICODE;
211 vcp->vc_hflags2 |= SMB_FLAGS2_KNOWS_LONG_NAMES;
215 vcp->obj.co_flags |= SMBV_WIN95;
221 vcp->vc_hflags2 &= ~(SMB_FLAGS2_EXT_SEC|SMB_FLAGS2_DFS|
246 error = md_get_mem(mdp, vcp->vc_ch, swlen, MB_MSYSTEM);
249 vcp->vc_chlen = swlen;
250 vcp->obj.co_flags |= SMBV_ENCRYPT;
253 vcp->vc_hflags2 |= SMB_FLAGS2_KNOWS_LONG_NAMES;
260 vcp->vc_maxvcs = sp->sv_maxvcs;
261 if (vcp->vc_maxvcs <= 1) {
262 if (vcp->vc_maxvcs == 0)
263 vcp->vc_maxvcs = 1;
270 SMB_TRAN_GETPARAM(vcp, SMBTP_RCVSZ, &maxqsz);
271 vcp->vc_rxmax = min(smb_vc_maxread(vcp), maxqsz - 1024);
272 SMB_TRAN_GETPARAM(vcp, SMBTP_SNDSZ, &maxqsz);
273 vcp->vc_wxmax = min(smb_vc_maxwrite(vcp), maxqsz - 1024);
274 vcp->vc_txmax = min(sp->sv_maxtx, maxqsz);
285 vcp->vc_toserver = servercharset;
286 vcp->vc_tolocal = localcharset;
287 vcp->vc_hflags2 |= SMB_FLAGS2_UNICODE;
294 smb_smb_ssnsetup(struct smb_vc *vcp, struct smb_cred *scred)
307 if (vcp->obj.co_flags & SMBV_UNICODE)
312 vcp->vc_smbuid = SMB_UID_UNKNOWN;
314 if (smb_smb_nomux(vcp, scred, __func__) != 0)
317 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_SESSION_SETUP_ANDX, scred, &rqp);
322 if (vcp->vc_sopt.sv_sm & SMB_SM_USER) {
329 iconv_convstr(vcp->vc_toupper, pbuf,
330 smb_vc_getpass(vcp)/*, SMB_MAXPASSWORDLEN*/);
332 strncpy(pbuf, smb_vc_getpass(vcp), SMB_MAXPASSWORDLEN);
335 if (!SMB_UNICODE_STRINGS(vcp))
336 iconv_convstr(vcp->vc_toserver, pbuf, pbuf/*,
339 if (vcp->vc_sopt.sv_sm & SMB_SM_ENCRYPT) {
341 smb_encrypt(pbuf, vcp->vc_ch, encpass);
343 if (SMB_UNICODE_STRINGS(vcp)) {
344 strncpy(pbuf, smb_vc_getpass(vcp),
348 iconv_convstr(vcp->vc_toserver, pbuf,
349 smb_vc_getpass(vcp)/*,
351 smb_ntencrypt(pbuf, vcp->vc_ch, (u_char*)ntencpass);
359 smb_strtouni(ntencpass, smb_vc_getpass(vcp));
383 up = vcp->vc_username;
394 mb_put_uint16le(mbp, vcp->vc_sopt.sv_maxtx);
395 mb_put_uint16le(mbp, vcp->vc_sopt.sv_maxmux);
396 mb_put_uint16le(mbp, vcp->vc_number);
397 mb_put_uint32le(mbp, vcp->vc_sopt.sv_skey);
399 if (SMB_DIALECT(vcp) < SMB_DIALECT_NTLM0_12) {
404 smb_put_dstring(mbp, vcp, up, SMB_CS_NONE);
413 smb_put_dstring(mbp, vcp, up, SMB_CS_NONE); /* AccountName */
414 smb_put_dstring(mbp, vcp, vcp->vc_domain, SMB_CS_NONE); /* PrimaryDomain */
415 smb_put_dstring(mbp, vcp, "FreeBSD", SMB_CS_NONE); /* Client's OS */
416 smb_put_dstring(mbp, vcp, "NETSMB", SMB_CS_NONE); /* Client name */
421 if (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE)
422 smb_calcmackey(vcp);
430 vcp->vc_smbuid = rqp->sr_rpuid;
435 if (error && upper == 1 && vcp->vc_sopt.sv_sm & SMB_SM_USER)
441 smb_smb_ssnclose(struct smb_vc *vcp, struct smb_cred *scred)
447 if (vcp->vc_smbuid == SMB_UID_UNKNOWN)
450 if (smb_smb_nomux(vcp, scred, __func__) != 0)
453 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_LOGOFF_ANDX, scred, &rqp);
501 struct smb_vc *vcp;
512 vcp = SSTOVC(ssp);
513 vcp->vc_toserver = vcp->vc_cp_toserver;
514 vcp->vc_tolocal = vcp->vc_cp_tolocal;
515 vcp->vc_hflags2 &= ~SMB_FLAGS2_UNICODE;
522 vcp = rqp->sr_vc;
524 if (vcp->vc_sopt.sv_sm & SMB_SM_USER) {
538 iconv_convstr(vcp->vc_toupper, pbuf,
546 if (vcp->vc_sopt.sv_sm & SMB_SM_ENCRYPT) {
548 smb_encrypt(pbuf, vcp->vc_ch, encpass);
565 smb_put_dmem(mbp, vcp, "\\\\", 2, caseopt);
566 pp = vcp->vc_srvname;
567 smb_put_dmem(mbp, vcp, pp, strlen(pp), caseopt);
568 smb_put_dmem(mbp, vcp, "\\", 1, caseopt);
570 smb_put_dstring(mbp, vcp, pp, caseopt);
572 smb_put_dstring(mbp, vcp, pp, caseopt);
579 ssp->ss_vcgenid = vcp->vc_genid;
585 if (vcp->obj.co_flags & SMBV_UNICODE) {
586 vcp->vc_toserver = vcp->vc_ucs_toserver;
587 vcp->vc_tolocal = vcp->vc_ucs_tolocal;
588 vcp->vc_hflags2 |= SMB_FLAGS2_UNICODE;
931 smb_smb_echo(struct smb_vc *vcp, struct smb_cred *scred)
937 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_ECHO, scred, &rqp);