Add data structures and defines (ioctl commands etc.) for Named Pipe support in cifs >From 02cc49c80d125beac34cf82d312f5f221311dd62 Mon Sep 17 00:00:00 2001 From: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> Date: Thu, 15 Oct 2009 08:14:44 -0500 Subject: [PATCH] Header file changes for Named Pipe support --- fs/cifs/cifsglob.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ fs/cifs/cifspdu.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ fs/cifs/cifsproto.h | 15 +++++++++++++++ 3 files changed, 108 insertions(+), 0 deletions(-) diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 5d0fde1..6ee9dae 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -612,6 +612,54 @@ require use of the stronger protocol */ ***************************************************************** */ +/* + ***************************************************************** + * Named Pipe data structures and ioctl commands + ***************************************************************** + */ + +#define MAXPIPENAMELEN 256 +#define MAXPEEKNMBUFSIZE 8192 + +struct qnmp_info { + unsigned short outbuf; + unsigned short inbuf; + unsigned char maxinst; + unsigned char curinst; + unsigned char length; + char pipename[MAXPIPENAMELEN]; +}; + +struct qnmp_hinfo { + unsigned short mode; +}; + +struct peeknmp_info { + unsigned int size; + unsigned short bavail; + unsigned short bremain; + unsigned short conntype; + char buffer[MAXPEEKNMBUFSIZE]; +}; + +struct transnmp_info { + unsigned int wsize; + char sendbuf[MAXPEEKNMBUFSIZE]; + unsigned rsize; + char recvbuf[MAXPEEKNMBUFSIZE]; +}; + +#define CIFS_QUERYNMPIPE _IOR(0xCF, 0x3, struct qnmp_info) +#define CIFS_PEEKNMPIPE _IOWR(0xCF, 0x4, struct peeknmp_info) +#define CIFS_GETNMPIPEHANDSTATE _IOR(0xCF, 0x5, struct qnmp_hinfo) +#define CIFS_SETNMPIPEHANDSTATE _IOW(0xCF, 0x6, struct qnmp_hinfo) +#define CIFS_TRANSACTNMPIPE _IOWR(0xCF, 0x7, struct qnmp_hinfo) + +#define NONBLOCKINGNMPIPE 0x0008 +#define BLOCKINGNMPIPE 0x0004 +#define MESSAGENMREAD 0x0002 +#define BYTESTREAMNMREAD 0x0001 + #define UID_HASH (16) /* diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h index 2d07f89..df922dc 100644 --- a/fs/cifs/cifspdu.h +++ b/fs/cifs/cifspdu.h @@ -49,6 +49,7 @@ #define SMB_COM_QUERY_INFORMATION 0x08 /* aka getattr */ #define SMB_COM_SETATTR 0x09 /* trivial response */ #define SMB_COM_LOCKING_ANDX 0x24 /* trivial response */ +#define SMB_COM_TRANSACTION 0x25 #define SMB_COM_COPY 0x29 /* trivial rsp, fail filename ignrd*/ #define SMB_COM_OPEN_ANDX 0x2D /* Legacy open for old servers */ #define SMB_COM_READ_ANDX 0x2E @@ -1269,6 +1270,50 @@ typedef struct smb_com_ntransact_rsp { /* parms and data follow */ } __attribute__((packed)) NTRANSACT_RSP; +typedef struct smb_com_transact_req { + struct smb_hdr hdr; /* wct >= 19 */ + __le16 TotalParameterCount; + __le16 TotalDataCount; + __le16 MaxParameterCount; + __le16 MaxDataCount; + __u8 MaxSetupCount; + __u8 Reserved; + __u16 Flags; + __le32 Timeout; + __le16 Reserved1; + __le16 ParameterCount; + __le16 ParameterOffset; + __le16 DataCount; + __le16 DataOffset; + __u8 SetupCount; + __u8 Reserved2; + __le16 Function; + __le16 Fid; + __le16 ByteCount; + unsigned char pad[1]; + unsigned char Name[1]; + unsigned char Param[1]; + unsigned char Data[1]; +} __attribute__((packed)) TRANS_REQ; + +typedef struct smb_com_transact_rsp { + struct smb_hdr hdr; /* wct = 18 */ + __u16 Reserved; + __le16 TotalParameterCount; + __le16 TotalDataCount; + __le16 ParameterCount; + __le16 ParameterOffset; + __le16 ParameterDisplacement; + __le16 DataCount; + __le16 DataOffset; + __le16 DataDisplacement; + __u8 SetupCount; /* 0 */ + __u16 ByteCount; + __u8 Reserved1; + /* __u8 Pad[3]; */ + /* parms and data follow */ +} __attribute__((packed)) TRANS_RSP; + typedef struct smb_com_transaction_ioctl_req { struct smb_hdr hdr; /* wct = 23 */ __u8 MaxSetupCount; diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index 6928c24..21e553f 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h @@ -388,4 +388,19 @@ extern int CIFSSMBSetPosixACL(const int xid, struct cifsTconInfo *tcon, const struct nls_table *nls_codepage, int remap_special_chars); extern int CIFSGetExtAttr(const int xid, struct cifsTconInfo *tcon, const int netfid, __u64 *pExtAttrBits, __u64 *pMask); +extern int CIFSSMBTransQNmPipe(const int, struct cifsTconInfo *, + unsigned long, __u16, const struct nls_table *, int); +extern int CIFSSMBTransSetNmPHState(const int, struct cifsTconInfo *, + unsigned long, __u16, const struct nls_table *, int); +extern int CIFSSMBTranWaitNmPipe(const int, struct cifsTconInfo *, + const unsigned char *, unsigned char *, + __u16, const struct nls_table *, int); +extern int CIFSSMBTransPeekNmPipe(const int, struct cifsTconInfo *, + unsigned long, __u16, const struct nls_table *, int); +extern int CIFSSMBTransGetNmPHState(const int, struct cifsTconInfo *, + unsigned long, __u16, const struct nls_table *, int); +extern int CIFSSMBTransNmPipe(const int, struct cifsTconInfo *, + unsigned char *, __u16, const struct nls_table *, int); +extern int ChkNMPHmode(unsigned short); +extern unsigned short SetNMPHmode(unsigned short, unsigned short); #endif /* _CIFSPROTO_H */ -- 1.5.2 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html