Lines Matching refs:vcp
71 smb_vc_maxread(struct smb_vc *vcp) in smb_vc_maxread() argument
81 if ((vcp->vc_sopt.sv_caps & SMB_CAP_LARGE_READX) && in smb_vc_maxread()
82 (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE) == 0) in smb_vc_maxread()
85 return (vcp->vc_sopt.sv_maxtx - SMB_HDRLEN - 64); in smb_vc_maxread()
89 smb_vc_maxwrite(struct smb_vc *vcp) in smb_vc_maxwrite() argument
94 if ((vcp->vc_sopt.sv_caps & SMB_CAP_LARGE_WRITEX) && in smb_vc_maxwrite()
95 (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE) == 0) in smb_vc_maxwrite()
98 return (vcp->vc_sopt.sv_maxtx - SMB_HDRLEN - 64); in smb_vc_maxwrite()
102 smb_smb_nomux(struct smb_vc *vcp, struct smb_cred *scred, const char *name) in smb_smb_nomux() argument
104 if (scred->scr_td->td_proc == vcp->vc_iod->iod_p) in smb_smb_nomux()
111 smb_smb_negotiate(struct smb_vc *vcp, struct smb_cred *scred) in smb_smb_negotiate() argument
121 int unicode = SMB_UNICODE_STRINGS(vcp); in smb_smb_negotiate()
122 void * servercharset = vcp->vc_toserver; in smb_smb_negotiate()
123 void * localcharset = vcp->vc_tolocal; in smb_smb_negotiate()
125 if (smb_smb_nomux(vcp, scred, __func__) != 0) in smb_smb_negotiate()
129 vcp->vc_toserver = vcp->vc_cp_toserver; in smb_smb_negotiate()
130 vcp->vc_tolocal = vcp->vc_cp_tolocal; in smb_smb_negotiate()
132 vcp->vc_hflags = 0; in smb_smb_negotiate()
133 vcp->vc_hflags2 = 0; in smb_smb_negotiate()
134 vcp->obj.co_flags &= ~(SMBV_ENCRYPT); in smb_smb_negotiate()
135 sp = &vcp->vc_sopt; in smb_smb_negotiate()
137 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_NEGOTIATE, scred, &rqp); in smb_smb_negotiate()
146 smb_put_dstring(mbp, vcp, dp->d_name, SMB_CS_NONE); in smb_smb_negotiate()
193 error = md_get_mem(mdp, vcp->vc_ch, sblen, MB_MSYSTEM); in smb_smb_negotiate()
196 vcp->vc_chlen = sblen; in smb_smb_negotiate()
197 vcp->obj.co_flags |= SMBV_ENCRYPT; in smb_smb_negotiate()
200 vcp->vc_hflags2 |= SMB_FLAGS2_SECURITY_SIGNATURE; in smb_smb_negotiate()
201 if (vcp->vc_ucs_toserver && in smb_smb_negotiate()
206 vcp->obj.co_flags |= SMBV_UNICODE; in smb_smb_negotiate()
208 vcp->vc_hflags2 |= SMB_FLAGS2_KNOWS_LONG_NAMES; in smb_smb_negotiate()
212 vcp->obj.co_flags |= SMBV_WIN95; in smb_smb_negotiate()
218 vcp->vc_hflags2 &= ~(SMB_FLAGS2_EXT_SEC|SMB_FLAGS2_DFS| in smb_smb_negotiate()
243 error = md_get_mem(mdp, vcp->vc_ch, swlen, MB_MSYSTEM); in smb_smb_negotiate()
246 vcp->vc_chlen = swlen; in smb_smb_negotiate()
247 vcp->obj.co_flags |= SMBV_ENCRYPT; in smb_smb_negotiate()
250 vcp->vc_hflags2 |= SMB_FLAGS2_KNOWS_LONG_NAMES; in smb_smb_negotiate()
257 vcp->vc_maxvcs = sp->sv_maxvcs; in smb_smb_negotiate()
258 if (vcp->vc_maxvcs <= 1) { in smb_smb_negotiate()
259 if (vcp->vc_maxvcs == 0) in smb_smb_negotiate()
260 vcp->vc_maxvcs = 1; in smb_smb_negotiate()
267 SMB_TRAN_GETPARAM(vcp, SMBTP_RCVSZ, &maxqsz); in smb_smb_negotiate()
268 vcp->vc_rxmax = min(smb_vc_maxread(vcp), maxqsz - 1024); in smb_smb_negotiate()
269 SMB_TRAN_GETPARAM(vcp, SMBTP_SNDSZ, &maxqsz); in smb_smb_negotiate()
270 vcp->vc_wxmax = min(smb_vc_maxwrite(vcp), maxqsz - 1024); in smb_smb_negotiate()
271 vcp->vc_txmax = min(sp->sv_maxtx, maxqsz); in smb_smb_negotiate()
282 vcp->vc_toserver = servercharset; in smb_smb_negotiate()
283 vcp->vc_tolocal = localcharset; in smb_smb_negotiate()
284 vcp->vc_hflags2 |= SMB_FLAGS2_UNICODE; in smb_smb_negotiate()
291 smb_smb_ssnsetup(struct smb_vc *vcp, struct smb_cred *scred) in smb_smb_ssnsetup() argument
304 if (vcp->obj.co_flags & SMBV_UNICODE) in smb_smb_ssnsetup()
309 vcp->vc_smbuid = SMB_UID_UNKNOWN; in smb_smb_ssnsetup()
311 if (smb_smb_nomux(vcp, scred, __func__) != 0) in smb_smb_ssnsetup()
314 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_SESSION_SETUP_ANDX, scred, &rqp); in smb_smb_ssnsetup()
319 if (vcp->vc_sopt.sv_sm & SMB_SM_USER) { in smb_smb_ssnsetup()
326 iconv_convstr(vcp->vc_toupper, pbuf, in smb_smb_ssnsetup()
327 smb_vc_getpass(vcp)/*, SMB_MAXPASSWORDLEN*/); in smb_smb_ssnsetup()
329 strncpy(pbuf, smb_vc_getpass(vcp), SMB_MAXPASSWORDLEN); in smb_smb_ssnsetup()
332 if (!SMB_UNICODE_STRINGS(vcp)) in smb_smb_ssnsetup()
333 iconv_convstr(vcp->vc_toserver, pbuf, pbuf/*, in smb_smb_ssnsetup()
336 if (vcp->vc_sopt.sv_sm & SMB_SM_ENCRYPT) { in smb_smb_ssnsetup()
338 smb_encrypt(pbuf, vcp->vc_ch, encpass); in smb_smb_ssnsetup()
340 if (SMB_UNICODE_STRINGS(vcp)) { in smb_smb_ssnsetup()
341 strncpy(pbuf, smb_vc_getpass(vcp), in smb_smb_ssnsetup()
345 iconv_convstr(vcp->vc_toserver, pbuf, in smb_smb_ssnsetup()
346 smb_vc_getpass(vcp)/*, in smb_smb_ssnsetup()
348 smb_ntencrypt(pbuf, vcp->vc_ch, (u_char*)ntencpass); in smb_smb_ssnsetup()
356 smb_strtouni(ntencpass, smb_vc_getpass(vcp)); in smb_smb_ssnsetup()
380 up = vcp->vc_username; in smb_smb_ssnsetup()
391 mb_put_uint16le(mbp, vcp->vc_sopt.sv_maxtx); in smb_smb_ssnsetup()
392 mb_put_uint16le(mbp, vcp->vc_sopt.sv_maxmux); in smb_smb_ssnsetup()
393 mb_put_uint16le(mbp, vcp->vc_number); in smb_smb_ssnsetup()
394 mb_put_uint32le(mbp, vcp->vc_sopt.sv_skey); in smb_smb_ssnsetup()
396 if (SMB_DIALECT(vcp) < SMB_DIALECT_NTLM0_12) { in smb_smb_ssnsetup()
401 smb_put_dstring(mbp, vcp, up, SMB_CS_NONE); in smb_smb_ssnsetup()
410 smb_put_dstring(mbp, vcp, up, SMB_CS_NONE); /* AccountName */ in smb_smb_ssnsetup()
411 smb_put_dstring(mbp, vcp, vcp->vc_domain, SMB_CS_NONE); /* PrimaryDomain */ in smb_smb_ssnsetup()
412 smb_put_dstring(mbp, vcp, "FreeBSD", SMB_CS_NONE); /* Client's OS */ in smb_smb_ssnsetup()
413 smb_put_dstring(mbp, vcp, "NETSMB", SMB_CS_NONE); /* Client name */ in smb_smb_ssnsetup()
418 if (vcp->vc_hflags2 & SMB_FLAGS2_SECURITY_SIGNATURE) in smb_smb_ssnsetup()
419 smb_calcmackey(vcp); in smb_smb_ssnsetup()
427 vcp->vc_smbuid = rqp->sr_rpuid; in smb_smb_ssnsetup()
432 if (error && upper == 1 && vcp->vc_sopt.sv_sm & SMB_SM_USER) in smb_smb_ssnsetup()
438 smb_smb_ssnclose(struct smb_vc *vcp, struct smb_cred *scred) in smb_smb_ssnclose() argument
444 if (vcp->vc_smbuid == SMB_UID_UNKNOWN) in smb_smb_ssnclose()
447 if (smb_smb_nomux(vcp, scred, __func__) != 0) in smb_smb_ssnclose()
450 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_LOGOFF_ANDX, scred, &rqp); in smb_smb_ssnclose()
498 struct smb_vc *vcp; in smb_smb_treeconnect() local
509 vcp = SSTOVC(ssp); in smb_smb_treeconnect()
510 vcp->vc_toserver = vcp->vc_cp_toserver; in smb_smb_treeconnect()
511 vcp->vc_tolocal = vcp->vc_cp_tolocal; in smb_smb_treeconnect()
512 vcp->vc_hflags2 &= ~SMB_FLAGS2_UNICODE; in smb_smb_treeconnect()
519 vcp = rqp->sr_vc; in smb_smb_treeconnect()
521 if (vcp->vc_sopt.sv_sm & SMB_SM_USER) { in smb_smb_treeconnect()
535 iconv_convstr(vcp->vc_toupper, pbuf, in smb_smb_treeconnect()
543 if (vcp->vc_sopt.sv_sm & SMB_SM_ENCRYPT) { in smb_smb_treeconnect()
545 smb_encrypt(pbuf, vcp->vc_ch, encpass); in smb_smb_treeconnect()
562 smb_put_dmem(mbp, vcp, "\\\\", 2, caseopt); in smb_smb_treeconnect()
563 pp = vcp->vc_srvname; in smb_smb_treeconnect()
564 smb_put_dmem(mbp, vcp, pp, strlen(pp), caseopt); in smb_smb_treeconnect()
565 smb_put_dmem(mbp, vcp, "\\", 1, caseopt); in smb_smb_treeconnect()
567 smb_put_dstring(mbp, vcp, pp, caseopt); in smb_smb_treeconnect()
569 smb_put_dstring(mbp, vcp, pp, caseopt); in smb_smb_treeconnect()
576 ssp->ss_vcgenid = vcp->vc_genid; in smb_smb_treeconnect()
582 if (vcp->obj.co_flags & SMBV_UNICODE) { in smb_smb_treeconnect()
583 vcp->vc_toserver = vcp->vc_ucs_toserver; in smb_smb_treeconnect()
584 vcp->vc_tolocal = vcp->vc_ucs_tolocal; in smb_smb_treeconnect()
585 vcp->vc_hflags2 |= SMB_FLAGS2_UNICODE; in smb_smb_treeconnect()
926 smb_smb_echo(struct smb_vc *vcp, struct smb_cred *scred) in smb_smb_echo() argument
932 error = smb_rq_alloc(VCTOCP(vcp), SMB_COM_ECHO, scred, &rqp); in smb_smb_echo()