@@ -261,7 +261,7 @@ impl MacAddress {
261261 #[ must_use]
262262 pub fn into_ethernet_addr ( self ) -> [ u8 ; 6 ] {
263263 let mut buffer = [ 0 ; 6 ] ;
264- buffer. copy_from_slice ( & self . octets ( ) [ 6 .. ] ) ;
264+ buffer. copy_from_slice ( & self . octets ( ) [ .. 6 ] ) ;
265265 buffer
266266 }
267267}
@@ -328,6 +328,29 @@ mod tests {
328328 assert_eq ! ( unsafe { uefi_addr. v6. 0 } , TEST_IPV6 ) ;
329329 }
330330
331+ /// Test conversions between `MacAddress` and octet arrays.
332+ #[ test]
333+ fn test_mac_addr_conversion ( ) {
334+ let ethernet_octets = [ 0 , 1 , 2 , 3 , 4 , 5 ] ;
335+ let mut padded_octets = [ 0 ; 32 ] ;
336+ padded_octets[ ..6 ] . copy_from_slice ( & ethernet_octets) ;
337+
338+ let efi_mac_addr = MacAddress :: from ( ethernet_octets) ;
339+ assert_eq ! ( efi_mac_addr. octets( ) , padded_octets) ;
340+ assert_eq ! ( <[ u8 ; 6 ] >:: from( efi_mac_addr) , ethernet_octets) ;
341+ assert_eq ! ( efi_mac_addr. into_ethernet_addr( ) , ethernet_octets) ;
342+
343+ let efi_octets = [
344+ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 ,
345+ 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 ,
346+ ] ;
347+
348+ let efi_mac_addr = MacAddress :: from ( efi_octets) ;
349+ assert_eq ! ( efi_mac_addr. octets( ) , efi_octets) ;
350+ assert_eq ! ( <[ u8 ; 6 ] >:: from( efi_mac_addr) , ethernet_octets) ;
351+ assert_eq ! ( efi_mac_addr. into_ethernet_addr( ) , ethernet_octets) ;
352+ }
353+
331354 // Ensure that our IpAddress type can be put into a packed struct,
332355 // even when it is normally 4 byte aligned.
333356 #[ test]
0 commit comments