+/*!
+ * @defined KEV_IEEE80211_CLASS
+ * @discussion IEEE 802.11 kernel event class.
+ */
+#define KEV_IEEE80211_CLASS 6
+
+/*!
+ * @struct kern_event_msg
+ * @discussion This structure is prepended to all kernel events. This
+ * structure is used to determine the format of the remainder of
+ * the kernel event. This structure will appear on all messages
+ * received on a kernel event socket. To post a kernel event, a
+ * slightly different structure is used.
+ * @field total_size Total size of the kernel event message including the
+ * header.
+ * @field vendor_code The vendor code indicates which vendor generated the
+ * kernel event. This gives every vendor a unique set of classes
+ * and subclasses to use. Use the SIOCGKEVVENDOR ioctl to look up
+ * vendor codes for vendors other than Apple. Apple uses
+ * KEV_VENDOR_APPLE.
+ * @field kev_class The class of the kernel event.
+ * @field kev_subclass The subclass of the kernel event.
+ * @field id Monotonically increasing value.
+ * @field event_code The event code.
+ * @field event_data Any additional data about this event. Format will
+ * depend on the vendor_code, kev_class, kev_subclass, and
+ * event_code. The length of the event_data can be determined
+ * using total_size - KEV_MSG_HEADER_SIZE.
+ */
+struct kern_event_msg {
+ u_int32_t total_size; /* Size of entire event msg */
+ u_int32_t vendor_code; /* For non-Apple extensibility */
+ u_int32_t kev_class; /* Layer of event source */
+ u_int32_t kev_subclass; /* Component within layer */
+ u_int32_t id; /* Monotonically increasing value */
+ u_int32_t event_code; /* unique code */
+ u_int32_t event_data[1]; /* One or more data words */
+};