1use crate::prelude::*;
2
3enum_try_from_int! {
4 #[repr(u8)]
5 #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
6 pub enum DevicePathType {
7 Hardware = 0x01,
8 Acpi = 0x02,
9 Messaging = 0x03,
10 Media = 0x04,
11 Bbs = 0x05,
12 End = 0x7f,
13 }
14}
15
16enum_try_from_int! {
17 #[repr(u8)]
18 #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
19 pub enum DevicePathHardwareType {
20 Pci = 0x01,
21 Pccard = 0x02,
22 Memmap = 0x03,
23 Vendor = 0x04,
24 Controller = 0x05,
25 }
26}
27
28enum_try_from_int! {
29 #[repr(u8)]
30 #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
31 pub enum DevicePathAcpiType {
32 Acpi = 0x01,
33 Extended = 0x02,
34 Adr = 0x03,
35 }
36}
37
38enum_try_from_int! {
39 #[repr(u8)]
40 #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
41 pub enum DevicePathMessagingType {
42 Atapi = 0x01,
43 Scsi = 0x02,
44 Fiberchannel = 0x03,
45 Serial1394 = 0x04,
46 Usb = 0x05,
47 Sata = 0x12,
48 Wwid = 0x10,
49 Dlu = 0x11,
50 Usbclass = 0x0f,
51 I2o = 0x06,
52 Mac = 0x0b,
53 Ipv4 = 0x0c,
54 Ipv6 = 0x0d,
55 Infiniband = 0x09,
56 Uart = 0x0e,
57 Vendordefined = 0x0a,
58 Iscsi = 0x13,
59 Nvme = 0x17,
60 }
61}
62
63enum_try_from_int! {
64 #[repr(u8)]
65 #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
66 pub enum DevicePathMediaType {
67 Harddrive = 0x01,
68 Cdrom = 0x02,
69 Vendor = 0x03,
70 Filepath = 0x04,
71 Protocol = 0x05,
72 }
73}
74
75enum_try_from_int! {
76 #[repr(u8)]
77 #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
78 pub enum DevicePathBbsType {
79 Bbs = 0x01,
80 }
81}
82
83enum_try_from_int! {
84 #[repr(u8)]
85 #[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
86 pub enum DevicePathEndType {
87 Instance = 0x01,
88 Entire = 0xff,
89 }
90}
91
92#[repr(C)]
93pub struct DevicePath {
94 pub Type: u8,
95 pub SubType: u8,
96 pub Length: u16,
97}
98
99impl DevicePath {
100 pub const GUID: Guid = guid!("09576e91-6d3f-11d2-8e39-00a0c969723b");
101}
102
103#[repr(C)]
104pub struct VendorDevicePath {
105 pub Header: DevicePath,
106 pub Guid: Guid,
107}