@@ -603,6 +603,21 @@ s! {
603
603
pub src_length: :: __u64,
604
604
pub dest_offset: :: __u64,
605
605
}
606
+
607
+ pub struct __c_anonymous_ifru_map {
608
+ pub mem_start: :: c_ulong,
609
+ pub mem_end: :: c_ulong,
610
+ pub base_addr: :: c_ushort,
611
+ pub irq: :: c_uchar,
612
+ pub dma: :: c_uchar,
613
+ pub port: :: c_uchar,
614
+ }
615
+
616
+ pub struct in6_ifreq {
617
+ pub ifr6_addr: :: in6_addr,
618
+ pub ifr6_prefixlen: u32 ,
619
+ pub ifr6_ifindex: :: c_int,
620
+ }
606
621
}
607
622
608
623
s_no_extra_traits ! {
@@ -690,6 +705,32 @@ s_no_extra_traits! {
690
705
#[ cfg( not( all( target_arch = "x86_64" , target_pointer_width = "32" ) ) ) ]
691
706
pad: [ :: c_long; 4 ] ,
692
707
}
708
+
709
+ #[ cfg( libc_union) ]
710
+ pub union __c_anonymous_ifr_ifru {
711
+ pub ifru_addr: :: sockaddr,
712
+ pub ifru_dstaddr: :: sockaddr,
713
+ pub ifru_broadaddr: :: sockaddr,
714
+ pub ifru_netmask: :: sockaddr,
715
+ pub ifru_hwaddr: :: sockaddr,
716
+ pub ifru_flags: :: c_short,
717
+ pub ifru_ifindex: :: c_int,
718
+ pub ifru_metric: :: c_int,
719
+ pub ifru_mtu: :: c_int,
720
+ pub ifru_map: __c_anonymous_ifru_map,
721
+ pub ifru_slave: [ :: c_char; :: IFNAMSIZ ] ,
722
+ pub ifru_newname: [ :: c_char; :: IFNAMSIZ ] ,
723
+ pub ifru_data: * mut :: c_char,
724
+ }
725
+
726
+ pub struct ifreq {
727
+ /// interface name, e.g. "en0"
728
+ pub ifr_name: [ :: c_char; :: IFNAMSIZ ] ,
729
+ #[ cfg( libc_union) ]
730
+ pub ifr_ifru: __c_anonymous_ifr_ifru,
731
+ #[ cfg( not( libc_union) ) ]
732
+ pub ifr_ifru: :: sockaddr,
733
+ }
693
734
}
694
735
695
736
s_no_extra_traits ! {
@@ -1063,6 +1104,34 @@ cfg_if! {
1063
1104
self . mq_curmsgs. hash( state) ;
1064
1105
}
1065
1106
}
1107
+ #[ cfg( libc_union) ]
1108
+ impl :: fmt:: Debug for __c_anonymous_ifr_ifru {
1109
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
1110
+ f. debug_struct( "ifr_ifru" )
1111
+ . field( "ifru_addr" , unsafe { & self . ifru_addr } )
1112
+ . field( "ifru_dstaddr" , unsafe { & self . ifru_dstaddr } )
1113
+ . field( "ifru_broadaddr" , unsafe { & self . ifru_broadaddr } )
1114
+ . field( "ifru_netmask" , unsafe { & self . ifru_netmask } )
1115
+ . field( "ifru_hwaddr" , unsafe { & self . ifru_hwaddr } )
1116
+ . field( "ifru_flags" , unsafe { & self . ifru_flags } )
1117
+ . field( "ifru_ifindex" , unsafe { & self . ifru_ifindex } )
1118
+ . field( "ifru_metric" , unsafe { & self . ifru_metric } )
1119
+ . field( "ifru_mtu" , unsafe { & self . ifru_mtu } )
1120
+ . field( "ifru_map" , unsafe { & self . ifru_map } )
1121
+ . field( "ifru_slave" , unsafe { & self . ifru_slave } )
1122
+ . field( "ifru_newname" , unsafe { & self . ifru_newname } )
1123
+ . field( "ifru_data" , unsafe { & self . ifru_data } )
1124
+ . finish( )
1125
+ }
1126
+ }
1127
+ impl :: fmt:: Debug for ifreq {
1128
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
1129
+ f. debug_struct( "ifreq" )
1130
+ . field( "ifr_name" , & self . ifr_name)
1131
+ . field( "ifr_ifru" , & self . ifr_ifru)
1132
+ . finish( )
1133
+ }
1134
+ }
1066
1135
}
1067
1136
}
1068
1137
0 commit comments