本文整理汇总了C++中smb_rq_getrequest函数的典型用法代码示例。如果您正苦于以下问题:C++ smb_rq_getrequest函数的具体用法?C++ smb_rq_getrequest怎么用?C++ smb_rq_getrequest使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了smb_rq_getrequest函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: smbfs_smb_rename
int
smbfs_smb_rename(struct smbnode *src, struct smbnode *tdnp,
const char *tname, int tnmlen, struct smb_cred *scred)
{
struct smb_rq *rqp;
struct smb_share *ssp = src->n_mount->sm_share;
struct mbchain *mbp;
int error;
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_RENAME, scred, &rqp);
if (error)
return (error);
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_uint16le(mbp, SMB_FA_SYSTEM | SMB_FA_HIDDEN);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_ASCII);
do {
error = smbfs_fullpath(mbp, SSTOVC(ssp), src, NULL, 0);
if (error)
break;
mb_put_uint8(mbp, SMB_DT_ASCII);
error = smbfs_fullpath(mbp, SSTOVC(ssp), tdnp, tname, tnmlen);
if (error)
break;
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
} while(0);
smb_rq_done(rqp);
return error;
}
示例2: smb_rq_simple
int
smb_rq_simple(struct smb_rq *rqp)
{
struct smbioc_rq krq;
struct mbdata *mbp;
char *data;
mbp = smb_rq_getrequest(rqp);
m_lineup(mbp->mb_top, &mbp->mb_top);
data = mtod(mbp->mb_top, char*);
bzero(&krq, sizeof(krq));
krq.ioc_cmd = rqp->rq_cmd;
krq.ioc_twc = rqp->rq_wcount;
krq.ioc_twords = data;
krq.ioc_tbc = mbp->mb_count;
krq.ioc_tbytes = data + rqp->rq_wcount * 2;
mbp = smb_rq_getreply(rqp);
krq.ioc_rpbufsz = mbp->mb_top->m_maxlen;
krq.ioc_rpbuf = mtod(mbp->mb_top, char *);
if (ioctl(rqp->rq_ctx->ct_fd, SMBIOC_REQUEST, &krq) == -1)
return errno;
mbp->mb_top->m_len = krq.ioc_rwc * 2 + krq.ioc_rbc;
rqp->rq_wcount = krq.ioc_rwc;
rqp->rq_bcount = krq.ioc_rbc;
return 0;
}
示例3: smb_smb_open_print_file
int
smb_smb_open_print_file(struct smb_ctx *ctx, int setuplen, int mode,
const char *ident, smbfh *fhp)
{
struct smb_rq *rqp;
struct mbdata *mbp;
int error;
error = smb_rq_init(ctx, SMB_COM_OPEN_PRINT_FILE, 2, &rqp);
if (error)
return error;
mbp = smb_rq_getrequest(rqp);
mb_put_uint16le(mbp, setuplen);
mb_put_uint16le(mbp, mode);
smb_rq_wend(rqp);
mb_put_uint8(mbp, SMB_DT_ASCII);
smb_rq_dstring(mbp, ident);
error = smb_rq_simple(rqp);
if (!error) {
mbp = smb_rq_getreply(rqp);
mb_get_uint16(mbp, fhp);
}
smb_rq_done(rqp);
return error;
}
示例4: smbfs_smb_move
int
smbfs_smb_move(struct smbnode *src, struct smbnode *tdnp,
const char *tname, int tnmlen, u_int16_t flags, struct smb_cred *scred)
{
struct smb_rq *rqp;
struct smb_share *ssp = src->n_mount->sm_share;
struct mbchain *mbp;
int error;
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_MOVE, scred, &rqp);
if (error)
return (error);
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_uint16le(mbp, SMB_TID_UNKNOWN);
mb_put_uint16le(mbp, 0x20); /* delete target file */
mb_put_uint16le(mbp, flags);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_ASCII);
do {
error = smbfs_fullpath(mbp, SSTOVC(ssp), src, NULL, 0);
if (error)
break;
mb_put_uint8(mbp, SMB_DT_ASCII);
error = smbfs_fullpath(mbp, SSTOVC(ssp), tdnp, tname, tnmlen);
if (error)
break;
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
} while(0);
smb_rq_done(rqp);
return error;
}
示例5: smbfs_smb_mkdir
int
smbfs_smb_mkdir(struct smbnode *dnp, const char *name, int len,
struct smb_cred *scred)
{
struct smb_rq *rqp;
struct smb_share *ssp = dnp->n_mount->sm_share;
struct mbchain *mbp;
int error;
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_CREATE_DIRECTORY, scred,
&rqp);
if (error)
return (error);
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_ASCII);
error = smbfs_fullpath(mbp, SSTOVC(ssp), dnp, name, len);
if (!error) {
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
}
smb_rq_done(rqp);
return error;
}
示例6: smbfs_smb_close
int
smbfs_smb_close(struct smb_share *ssp, u_int16_t fid, struct timespec *mtime,
struct smb_cred *scred)
{
struct smb_rq *rqp;
struct mbchain *mbp;
u_long xtime;
int error;
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_CLOSE, scred, &rqp);
if (error)
return error;
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_mem(mbp, (void *)&fid, sizeof(fid), MB_MSYSTEM);
if (mtime) {
smb_time_local2server(mtime, SSTOVC(ssp)->vc_sopt.sv_tz, &xtime);
} else
xtime = 0;
mb_put_uint32le(mbp, xtime);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
smb_rq_done(rqp);
return error;
}
示例7: smbfs_smb_setfsize
int
smbfs_smb_setfsize(struct smbnode *np, u_quad_t newsize,
struct smb_cred *scred)
{
struct smb_share *ssp = np->n_mount->sm_share;
struct smb_rq *rqp;
struct mbchain *mbp;
int error;
if (newsize >= (1LL << 32)) {
if (!(SMB_CAPS(SSTOVC(ssp)) & SMB_CAP_LARGE_FILES))
return EFBIG;
return smbfs_smb_seteof(np, (int64_t)newsize, scred);
}
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_WRITE, scred, &rqp);
if (error)
return error;
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_mem(mbp, (void *)&np->n_fid, 2, MB_MSYSTEM);
mb_put_uint16le(mbp, 0);
mb_put_uint32le(mbp, newsize);
mb_put_uint16le(mbp, 0);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_DATA);
mb_put_uint16le(mbp, 0);
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
smb_rq_done(rqp);
return error;
}
示例8: smbfs_smb_delete
int
smbfs_smb_delete(struct smbnode *np, struct smb_cred *scred)
{
struct smb_rq *rqp;
struct smb_share *ssp = np->n_mount->sm_share;
struct mbchain *mbp;
int error;
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_DELETE, scred, &rqp);
if (error)
return (error);
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_uint16le(mbp, SMB_FA_SYSTEM | SMB_FA_HIDDEN);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_ASCII);
error = smbfs_fullpath(mbp, SSTOVC(ssp), np, NULL, 0);
if (!error) {
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
}
smb_rq_done(rqp);
return error;
}
示例9: smb_smb_write
static int
smb_smb_write(struct smb_share *ssp, uint16_t fid, uint32_t *lenp,
uio_t *uiop, smb_cred_t *scred, int timo)
{
struct smb_rq *rqp;
struct mbchain *mbp;
struct mdchain *mdp;
int error;
uint32_t off32;
uint16_t cnt, rcnt, todo;
uint8_t wc;
ASSERT(uiop->uio_loffset <= UINT32_MAX);
off32 = (uint32_t)uiop->uio_loffset;
ASSERT(*lenp <= UINT16_MAX);
cnt = (uint16_t)*lenp;
/* This next is an "estimate" of planned writes. */
todo = (uint16_t)min(uiop->uio_resid, UINT16_MAX);
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_WRITE, scred, &rqp);
if (error)
return (error);
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_uint16le(mbp, fid);
mb_put_uint16le(mbp, cnt);
mb_put_uint32le(mbp, off32);
mb_put_uint16le(mbp, todo);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_DATA);
mb_put_uint16le(mbp, cnt);
error = mb_put_uio(mbp, uiop, *lenp);
if (error)
goto out;
smb_rq_bend(rqp);
if (timo == 0)
timo = smb_timo_write;
error = smb_rq_simple_timed(rqp, timo);
if (error)
goto out;
smb_rq_getreply(rqp, &mdp);
error = md_get_uint8(mdp, &wc);
if (error)
goto out;
if (wc != 1) {
error = EBADRPC;
goto out;
}
error = md_get_uint16le(mdp, &rcnt);
if (error)
goto out;
*lenp = rcnt;
out:
smb_rq_done(rqp);
return (error);
}
示例10: smb_smb_write
static __inline int
smb_smb_write(struct smb_share *ssp, u_int16_t fid, int *len, int *rresid,
struct uio *uio, struct smb_cred *scred)
{
struct smb_rq *rqp;
struct mbchain *mbp;
struct mdchain *mdp;
u_int16_t resid;
u_int8_t wc;
int error, blksz;
/* write data must be real */
KKASSERT(uio->uio_segflg != UIO_NOCOPY);
blksz = SSTOVC(ssp)->vc_txmax - SMB_HDRLEN - 16;
if (blksz > 0xffff)
blksz = 0xffff;
resid = *len = min(blksz, *len);
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_WRITE, scred, &rqp);
if (error)
return error;
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_mem(mbp, (caddr_t)&fid, sizeof(fid), MB_MSYSTEM);
mb_put_uint16le(mbp, resid);
mb_put_uint32le(mbp, uio->uio_offset);
mb_put_uint16le(mbp, (unsigned short)szmin(uio->uio_resid, 0xffff));
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_DATA);
mb_put_uint16le(mbp, resid);
do {
error = mb_put_uio(mbp, uio, resid);
if (error)
break;
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
if (error)
break;
smb_rq_getreply(rqp, &mdp);
md_get_uint8(mdp, &wc);
if (wc != 1) {
error = EBADRPC;
break;
}
md_get_uint16le(mdp, &resid);
*rresid = resid;
} while(0);
smb_rq_done(rqp);
return error;
}
示例11: smbfs_smb_nt_dirnotify_setup
/*
* Setup a request for NT DIRECTORY CHANGE NOTIFY.
*/
int
smbfs_smb_nt_dirnotify_setup(struct smbnode *dnp, struct smb_rq **rqpp, struct smb_cred *scred, void (*notifyhook)(void *), void *notifyarg)
{
struct smb_rq *rqp;
struct smb_share *ssp = dnp->n_mount->sm_share;
struct mbchain *mbp;
int error;
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_NT_TRANSACT, scred, &rqp);
if (error)
return error;
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_uint8(mbp, 0xff); /* Max setup words to return */
mb_put_uint16le(mbp, 0); /* Flags (according to Samba) */
mb_put_uint32le(mbp, 0); /* Total parameter bytes being sent*/
mb_put_uint32le(mbp, 0); /* Total data bytes being sent */
mb_put_uint32le(mbp, 10*1024); /* Max parameter bytes to return */
mb_put_uint32le(mbp, 0); /* Max data bytes to return */
mb_put_uint32le(mbp, 0); /* Parameter bytes sent this buffer */
mb_put_uint32le(mbp, 0); /* Offset (from h. start) to Param */
mb_put_uint32le(mbp, 0); /* Data bytes sent this buffer */
mb_put_uint32le(mbp, 0); /* Offset (from h. start) to Data */
mb_put_uint8(mbp, 4); /* Count of setup words */
mb_put_uint16le(mbp, SMB_NTTRANS_NOTIFY_CHANGE); /* Trans func code */
/* NT TRANSACT NOTIFY CHANGE: Request Change Notification */
mb_put_uint32le(mbp,
FILE_NOTIFY_CHANGE_NAME|FILE_NOTIFY_CHANGE_ATTRIBUTES|
FILE_NOTIFY_CHANGE_SIZE|FILE_NOTIFY_CHANGE_LAST_WRITE|
FILE_NOTIFY_CHANGE_CREATION); /* CompletionFilter */
mb_put_mem(mbp, (void *)&dnp->n_fid, 2, MB_MSYSTEM); /* FID */
mb_put_uint8(mbp, 0); /* WatchTree - Watch all subdirs too */
mb_put_uint8(mbp, 0); /* Reserved - must be zero */
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
smb_rq_bend(rqp);
/* No timeout */
rqp->sr_timo = -1;
smb_rq_setcallback(rqp, notifyhook, notifyarg);
error = smb_rq_enqueue(rqp);
if (!error)
*rqpp = rqp;
else
smb_rq_done(rqp);
return (error);
}
示例12: smbfs_smb_create
int
smbfs_smb_create(struct smbnode *dnp, const char *name, int nmlen,
struct smb_cred *scred)
{
struct smb_rq *rqp;
struct smb_share *ssp = dnp->n_mount->sm_share;
struct mbchain *mbp;
struct mdchain *mdp;
struct timespec ctime;
u_int8_t wc;
u_int16_t fid;
u_long tm;
int error;
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_CREATE_NEW, scred, &rqp);
if (error)
return error;
smb_rq_getrequest(rqp, &mbp);
/* get current time */
getnanotime(&ctime);
smb_time_local2server(&ctime, SSTOVC(ssp)->vc_sopt.sv_tz, &tm);
smb_rq_wstart(rqp);
mb_put_uint16le(mbp, SMB_FA_ARCHIVE); /* attributes */
mb_put_uint32le(mbp, tm);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_ASCII);
error = smbfs_fullpath(mbp, SSTOVC(ssp), dnp, name, nmlen);
if (!error) {
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
if (!error) {
smb_rq_getreply(rqp, &mdp);
md_get_uint8(mdp, &wc);
if (wc == 1)
md_get_uint16(mdp, &fid);
else
error = EBADRPC;
}
}
smb_rq_done(rqp);
if (!error)
smbfs_smb_close(ssp, fid, &ctime, scred);
return (error);
}
示例13: smb_smb_close_print_file
int
smb_smb_close_print_file(struct smb_ctx *ctx, smbfh fh)
{
struct smb_rq *rqp;
struct mbdata *mbp;
int error;
error = smb_rq_init(ctx, SMB_COM_CLOSE_PRINT_FILE, 0, &rqp);
if (error)
return error;
mbp = smb_rq_getrequest(rqp);
mb_put_mem(mbp, (char*)&fh, 2);
smb_rq_wend(rqp);
error = smb_rq_simple(rqp);
smb_rq_done(rqp);
return error;
}
示例14: smbfs_smb_setpattr
/*
* Set DOS file attributes. mtime should be NULL for dialects above lm10
*/
int
smbfs_smb_setpattr(struct smbnode *np, u_int16_t attr, struct timespec *mtime,
struct smb_cred *scred)
{
struct smb_rq rq, *rqp = &rq;
struct smb_share *ssp = np->n_mount->sm_share;
struct mbchain *mbp;
u_long time;
int error, svtz;
error = smb_rq_init(rqp, SSTOCP(ssp), SMB_COM_SET_INFORMATION, scred);
if (error)
return error;
svtz = SSTOVC(ssp)->vc_sopt.sv_tz;
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_uint16le(mbp, attr);
if (mtime) {
smb_time_local2server(mtime, svtz, &time);
} else
time = 0;
mb_put_uint32le(mbp, time); /* mtime */
mb_put_mem(mbp, NULL, 5 * 2, MB_MZERO);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
mb_put_uint8(mbp, SMB_DT_ASCII);
do {
error = smbfs_fullpath(mbp, SSTOVC(ssp), np, NULL, 0);
if (error)
break;
mb_put_uint8(mbp, SMB_DT_ASCII);
mb_put_uint8(mbp, 0);
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
if (error) {
SMBERROR("smb_rq_simple(rqp) => error %d\n", error);
break;
}
} while(0);
smb_rq_done(rqp);
return error;
}
示例15: smbfs_smb_setftime
/*
* Set file atime and mtime. Doesn't supported by core dialect.
*/
int
smbfs_smb_setftime(struct smbnode *np, struct timespec *mtime,
struct timespec *atime, struct smb_cred *scred)
{
struct smb_rq *rqp;
struct smb_share *ssp = np->n_mount->sm_share;
struct mbchain *mbp;
u_int16_t xdate, xtime;
int error, tzoff;
error = smb_rq_alloc(SSTOCP(ssp), SMB_COM_SET_INFORMATION2, scred, &rqp);
if (error)
return error;
tzoff = SSTOVC(ssp)->vc_sopt.sv_tz;
smb_rq_getrequest(rqp, &mbp);
smb_rq_wstart(rqp);
mb_put_mem(mbp, (void *)&np->n_fid, 2, MB_MSYSTEM);
mb_put_uint32le(mbp, 0); /* creation time */
if (atime)
smb_time_unix2dos(atime, tzoff, &xdate, &xtime, NULL);
else
xtime = xdate = 0;
mb_put_uint16le(mbp, xdate);
mb_put_uint16le(mbp, xtime);
if (mtime)
smb_time_unix2dos(mtime, tzoff, &xdate, &xtime, NULL);
else
xtime = xdate = 0;
mb_put_uint16le(mbp, xdate);
mb_put_uint16le(mbp, xtime);
smb_rq_wend(rqp);
smb_rq_bstart(rqp);
smb_rq_bend(rqp);
error = smb_rq_simple(rqp);
SMBSDEBUG(("%d\n", error));
smb_rq_done(rqp);
return error;
}