xref: /linux/fs/smb/common/smb1pdu.h (revision a91e1138b7cb0e4dfa12ef823c6eedb34b28bd08)
1*94d5b8dbSZhangGuoDong /* SPDX-License-Identifier: LGPL-2.1 */
2*94d5b8dbSZhangGuoDong /*
3*94d5b8dbSZhangGuoDong  *
4*94d5b8dbSZhangGuoDong  *   Copyright (C) International Business Machines  Corp., 2002,2009
5*94d5b8dbSZhangGuoDong  *                 2018 Samsung Electronics Co., Ltd.
6*94d5b8dbSZhangGuoDong  *   Author(s): Steve French <sfrench@us.ibm.com>
7*94d5b8dbSZhangGuoDong  *              Namjae Jeon <linkinjeon@kernel.org>
8*94d5b8dbSZhangGuoDong  *
9*94d5b8dbSZhangGuoDong  */
10*94d5b8dbSZhangGuoDong 
11*94d5b8dbSZhangGuoDong #ifndef _COMMON_SMB1_PDU_H
12*94d5b8dbSZhangGuoDong #define _COMMON_SMB1_PDU_H
13*94d5b8dbSZhangGuoDong 
14*94d5b8dbSZhangGuoDong #define SMB1_PROTO_NUMBER		cpu_to_le32(0x424d53ff)
15*94d5b8dbSZhangGuoDong 
16*94d5b8dbSZhangGuoDong /*
17*94d5b8dbSZhangGuoDong  * See MS-CIFS 2.2.3.1
18*94d5b8dbSZhangGuoDong  *     MS-SMB 2.2.3.1
19*94d5b8dbSZhangGuoDong  */
20*94d5b8dbSZhangGuoDong struct smb_hdr {
21*94d5b8dbSZhangGuoDong 	__u8 Protocol[4];
22*94d5b8dbSZhangGuoDong 	__u8 Command;
23*94d5b8dbSZhangGuoDong 	union {
24*94d5b8dbSZhangGuoDong 		struct {
25*94d5b8dbSZhangGuoDong 			__u8 ErrorClass;
26*94d5b8dbSZhangGuoDong 			__u8 Reserved;
27*94d5b8dbSZhangGuoDong 			__le16 Error;
28*94d5b8dbSZhangGuoDong 		} __packed DosError;
29*94d5b8dbSZhangGuoDong 		__le32 CifsError;
30*94d5b8dbSZhangGuoDong 	} __packed Status;
31*94d5b8dbSZhangGuoDong 	__u8 Flags;
32*94d5b8dbSZhangGuoDong 	__le16 Flags2;		/* note: le */
33*94d5b8dbSZhangGuoDong 	__le16 PidHigh;
34*94d5b8dbSZhangGuoDong 	union {
35*94d5b8dbSZhangGuoDong 		struct {
36*94d5b8dbSZhangGuoDong 			__le32 SequenceNumber;  /* le */
37*94d5b8dbSZhangGuoDong 			__u32 Reserved; /* zero */
38*94d5b8dbSZhangGuoDong 		} __packed Sequence;
39*94d5b8dbSZhangGuoDong 		__u8 SecuritySignature[8];	/* le */
40*94d5b8dbSZhangGuoDong 	} __packed Signature;
41*94d5b8dbSZhangGuoDong 	__u8 pad[2];
42*94d5b8dbSZhangGuoDong 	__u16 Tid;
43*94d5b8dbSZhangGuoDong 	__le16 Pid;
44*94d5b8dbSZhangGuoDong 	__u16 Uid;
45*94d5b8dbSZhangGuoDong 	__le16 Mid;
46*94d5b8dbSZhangGuoDong 	__u8 WordCount;
47*94d5b8dbSZhangGuoDong } __packed;
48*94d5b8dbSZhangGuoDong 
49*94d5b8dbSZhangGuoDong /* See MS-CIFS 2.2.4.52.1 */
50*94d5b8dbSZhangGuoDong typedef struct smb_negotiate_req {
51*94d5b8dbSZhangGuoDong 	struct smb_hdr hdr;	/* wct = 0 */
52*94d5b8dbSZhangGuoDong 	__le16 ByteCount;
53*94d5b8dbSZhangGuoDong 	unsigned char DialectsArray[];
54*94d5b8dbSZhangGuoDong } __packed SMB_NEGOTIATE_REQ;
55*94d5b8dbSZhangGuoDong 
56*94d5b8dbSZhangGuoDong #endif /* _COMMON_SMB1_PDU_H */
57