1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2/*
3 *  FC Transport Netlink Interface
4 *
5 *  Copyright (C) 2006   James Smart, Emulex Corporation
6 */
7#ifndef SCSI_NETLINK_FC_H
8#define SCSI_NETLINK_FC_H
9
10#include <linux/types.h>
11#include <scsi/scsi_netlink.h>
12
13/*
14 * This file intended to be included by both kernel and user space
15 */
16
17/*
18 * FC Transport Message Types
19 */
20	/* kernel -> user */
21#define FC_NL_ASYNC_EVENT			0x0100
22	/* user -> kernel */
23/* none */
24
25
26/*
27 * Message Structures :
28 */
29
30/* macro to round up message lengths to 8byte boundary */
31#define FC_NL_MSGALIGN(len)		(((len) + 7) & ~7)
32
33
34/*
35 * FC Transport Broadcast Event Message :
36 *   FC_NL_ASYNC_EVENT
37 *
38 * Note: if Vendor Unique message, event_data_flex will be start of
39 * 	 vendor unique payload, and the length of the payload is
40 *       per event_datalen
41 *
42 * Note: When specifying vendor_id, be sure to read the Vendor Type and ID
43 *   formatting requirements specified in scsi_netlink.h
44 */
45struct fc_nl_event {
46	struct scsi_nl_hdr snlh;		/* must be 1st element ! */
47	__u64 seconds;
48	__u64 vendor_id;
49	__u16 host_no;
50	__u16 event_datalen;
51	__u32 event_num;
52	__u32 event_code;
53	union {
54		__u32 event_data;
55		__DECLARE_FLEX_ARRAY(__u8, event_data_flex);
56	};
57} __attribute__((aligned(sizeof(__u64))));
58
59
60#endif /* SCSI_NETLINK_FC_H */
61
62