root/fs/smb/common/smb1pdu.h
/* 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 */