* [patch][1/3] Data structures and defines for Named Pipes
@ 2009-10-15 17:40 Shirish Pargaonkar
2009-10-15 18:12 ` Christoph Hellwig
0 siblings, 1 reply; 2+ messages in thread
From: Shirish Pargaonkar @ 2009-10-15 17:40 UTC (permalink / raw)
To: linux-cifs-client, linux-fsdevel
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@gmail.com>
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
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-10-15 18:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-15 17:40 [patch][1/3] Data structures and defines for Named Pipes Shirish Pargaonkar
2009-10-15 18:12 ` Christoph Hellwig
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).