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 */ 45 struct 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