@@ -603,6 +603,21 @@ s! {
603603 pub src_length: :: __u64,
604604 pub dest_offset: :: __u64,
605605 }
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+ }
606621}
607622
608623s_no_extra_traits ! {
@@ -690,6 +705,32 @@ s_no_extra_traits! {
690705 #[ cfg( not( all( target_arch = "x86_64" , target_pointer_width = "32" ) ) ) ]
691706 pad: [ :: c_long; 4 ] ,
692707 }
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+ }
693734}
694735
695736s_no_extra_traits ! {
@@ -1063,6 +1104,34 @@ cfg_if! {
10631104 self . mq_curmsgs. hash( state) ;
10641105 }
10651106 }
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+ }
10661135 }
10671136}
10681137
0 commit comments