@@ -77,28 +77,41 @@ virtio_bitflags! {
77
77
}
78
78
}
79
79
80
- virtio_bitflags ! {
81
- /// Network Device Header GSO Type
82
- #[ doc( alias = "VIRTIO_NET_HDR_GSO" ) ]
83
- pub struct HdrGso : u8 {
84
- #[ doc( alias = "VIRTIO_NET_HDR_GSO_NONE" ) ]
85
- const NONE = 0 ;
80
+ /// Network Device Header GSO Type
81
+ ///
82
+ /// <div class="warning">
83
+ ///
84
+ /// This enum is not ABI-compatible with it's corresponding field.
85
+ /// Use [`HdrGso::from`] for converting from an integer.
86
+ ///
87
+ /// </div>
88
+ ///
89
+ /// [`HdrGso::from`]: HdrGso#impl-From<u8>-for-HdrGso
90
+ #[ doc( alias = "VIRTIO_NET_HDR_GSO" ) ]
91
+ #[ derive( IntoPrimitive , FromPrimitive , PartialEq , Eq , Clone , Copy , Debug ) ]
92
+ #[ non_exhaustive]
93
+ #[ repr( u8 ) ]
94
+ pub enum HdrGso {
95
+ #[ doc( alias = "VIRTIO_NET_HDR_GSO_NONE" ) ]
96
+ None = 0 ,
86
97
87
- #[ doc( alias = "VIRTIO_NET_HDR_GSO_TCPV4" ) ]
88
- const TCPV4 = 1 ;
98
+ #[ doc( alias = "VIRTIO_NET_HDR_GSO_TCPV4" ) ]
99
+ Tcpv4 = 1 ,
89
100
90
- #[ doc( alias = "VIRTIO_NET_HDR_GSO_UDP" ) ]
91
- const UDP = 3 ;
101
+ #[ doc( alias = "VIRTIO_NET_HDR_GSO_UDP" ) ]
102
+ Udp = 3 ,
92
103
93
- #[ doc( alias = "VIRTIO_NET_HDR_GSO_TCPV6" ) ]
94
- const TCPV6 = 4 ;
104
+ #[ doc( alias = "VIRTIO_NET_HDR_GSO_TCPV6" ) ]
105
+ Tcpv6 = 4 ,
95
106
96
- #[ doc( alias = "VIRTIO_NET_HDR_GSO_UDP_L4" ) ]
97
- const UDP_L4 = 5 ;
107
+ #[ doc( alias = "VIRTIO_NET_HDR_GSO_UDP_L4" ) ]
108
+ UdpL4 = 5 ,
98
109
99
- #[ doc( alias = "VIRTIO_NET_HDR_GSO_ECN" ) ]
100
- const ECN = 0x80 ;
101
- }
110
+ #[ doc( alias = "VIRTIO_NET_HDR_GSO_ECN" ) ]
111
+ Ecn = 0x80 ,
112
+
113
+ #[ num_enum( catch_all) ]
114
+ Unknown ( u8 ) ,
102
115
}
103
116
104
117
/// Network Device Header
@@ -116,7 +129,7 @@ virtio_bitflags! {
116
129
#[ repr( C ) ]
117
130
pub struct Hdr {
118
131
pub flags : HdrF ,
119
- pub gso_type : HdrGso ,
132
+ pub gso_type : u8 ,
120
133
pub hdr_len : le16 ,
121
134
pub gso_size : le16 ,
122
135
pub csum_start : le16 ,
@@ -182,6 +195,15 @@ endian_bitflags! {
182
195
}
183
196
184
197
/// Hash Report
198
+ ///
199
+ /// <div class="warning">
200
+ ///
201
+ /// This enum is not ABI-compatible with it's corresponding field.
202
+ /// Use [`HashReport::from`] for converting from an integer.
203
+ ///
204
+ /// </div>
205
+ ///
206
+ /// [`HashReport::from`]: HashReport#impl-From<u16>-for-HashReport
185
207
#[ doc( alias = "VIRTIO_NET_HASH_REPORT" ) ]
186
208
#[ derive( IntoPrimitive , FromPrimitive , PartialEq , Eq , Clone , Copy , Debug ) ]
187
209
#[ non_exhaustive]
0 commit comments