summaryrefslogtreecommitdiff
path: root/fs/smb/common/smb1pdu.h
blob: df6d4e11ae929a8da9f00a8a89ddc0228e961003 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/* SPDX-License-Identifier: LGPL-2.1 */
/*
 *
 *   Copyright (C) International Business Machines  Corp., 2002,2009
 *                 2018 Samsung Electronics Co., Ltd.
 *   Author(s): Steve French <sfrench@us.ibm.com>
 *              Namjae Jeon <linkinjeon@kernel.org>
 *
 */

#ifndef _COMMON_SMB1_PDU_H
#define _COMMON_SMB1_PDU_H

#define SMB1_PROTO_NUMBER		cpu_to_le32(0x424d53ff)

/*
 * See MS-CIFS 2.2.3.1
 *     MS-SMB 2.2.3.1
 */
struct smb_hdr {
	__u8 Protocol[4];
	__u8 Command;
	union {
		struct {
			__u8 ErrorClass;
			__u8 Reserved;
			__le16 Error;
		} __packed DosError;
		__le32 CifsError;
	} __packed Status;
	__u8 Flags;
	__le16 Flags2;		/* note: le */
	__le16 PidHigh;
	union {
		struct {
			__le32 SequenceNumber;  /* le */
			__u32 Reserved; /* zero */
		} __packed Sequence;
		__u8 SecuritySignature[8];	/* le */
	} __packed Signature;
	__u8 pad[2];
	__u16 Tid;
	__le16 Pid;
	__u16 Uid;
	__le16 Mid;
	__u8 WordCount;
} __packed;

/* See MS-CIFS 2.2.4.52.1 */
typedef struct smb_negotiate_req {
	struct smb_hdr hdr;	/* wct = 0 */
	__le16 ByteCount;
	unsigned char DialectsArray[];
} __packed SMB_NEGOTIATE_REQ;

#endif /* _COMMON_SMB1_PDU_H */