@@ -37,6 +37,8 @@ pub type rusage_info_t = *mut ::c_void;
37
37
pub type vm_offset_t = :: uintptr_t ;
38
38
pub type vm_size_t = :: uintptr_t ;
39
39
pub type vm_address_t = vm_offset_t ;
40
+ pub type quad_t = i64 ;
41
+ pub type u_quad_t = u64 ;
40
42
41
43
pub type posix_spawnattr_t = * mut :: c_void ;
42
44
pub type posix_spawn_file_actions_t = * mut :: c_void ;
@@ -1136,6 +1138,77 @@ s! {
1136
1138
pub tcpi_rxoutoforderbytes: u64 ,
1137
1139
pub tcpi_rxretransmitpackets: u64 ,
1138
1140
}
1141
+
1142
+ pub struct in6_addrlifetime {
1143
+ pub ia6t_expire: time_t,
1144
+ pub ia6t_preferred: time_t,
1145
+ pub ia6t_vltime: u32 ,
1146
+ pub ia6t_pltime: u32 ,
1147
+ }
1148
+
1149
+ pub struct in6_ifstat {
1150
+ pub ifs6_in_receive: :: u_quad_t,
1151
+ pub ifs6_in_hdrerr: :: u_quad_t,
1152
+ pub ifs6_in_toobig: :: u_quad_t,
1153
+ pub ifs6_in_noroute: :: u_quad_t,
1154
+ pub ifs6_in_addrerr: :: u_quad_t,
1155
+ pub ifs6_in_protounknown: :: u_quad_t,
1156
+ pub ifs6_in_truncated: :: u_quad_t,
1157
+ pub ifs6_in_discard: :: u_quad_t,
1158
+ pub ifs6_in_deliver: :: u_quad_t,
1159
+ pub ifs6_out_forward: :: u_quad_t,
1160
+ pub ifs6_out_request: :: u_quad_t,
1161
+ pub ifs6_out_discard: :: u_quad_t,
1162
+ pub ifs6_out_fragok: :: u_quad_t,
1163
+ pub ifs6_out_fragfail: :: u_quad_t,
1164
+ pub ifs6_out_fragcreat: :: u_quad_t,
1165
+ pub ifs6_reass_reqd: :: u_quad_t,
1166
+ pub ifs6_reass_ok: :: u_quad_t,
1167
+ pub ifs6_atmfrag_rcvd: :: u_quad_t,
1168
+ pub ifs6_reass_fail: :: u_quad_t,
1169
+ pub ifs6_in_mcast: :: u_quad_t,
1170
+ pub ifs6_out_mcast: :: u_quad_t,
1171
+ pub ifs6_cantfoward_icmp6: :: u_quad_t,
1172
+ pub ifs6_addr_expiry_cnt: :: u_quad_t,
1173
+ pub ifs6_pfx_expiry_cnt: :: u_quad_t,
1174
+ pub ifs6_defrtr_expiry_cnt: :: u_quad_t,
1175
+ }
1176
+ pub struct icmp6_ifstat {
1177
+ pub ifs6_in_msg: :: u_quad_t,
1178
+ pub ifs6_in_error: :: u_quad_t,
1179
+ pub ifs6_in_dstunreach: :: u_quad_t,
1180
+ pub ifs6_in_adminprohib: :: u_quad_t,
1181
+ pub ifs6_in_timeexceed: :: u_quad_t,
1182
+ pub ifs6_in_paramprob: :: u_quad_t,
1183
+ pub ifs6_in_pkttoobig: :: u_quad_t,
1184
+ pub ifs6_in_echo: :: u_quad_t,
1185
+ pub ifs6_in_echoreply: :: u_quad_t,
1186
+ pub ifs6_in_routersolicit: :: u_quad_t,
1187
+ pub ifs6_in_routeradvert: :: u_quad_t,
1188
+ pub ifs6_in_neighborsolicit: :: u_quad_t,
1189
+ pub ifs6_in_neighboradvert: :: u_quad_t,
1190
+ pub ifs6_in_redirect: :: u_quad_t,
1191
+ pub ifs6_in_mldquery: :: u_quad_t,
1192
+ pub ifs6_in_mldreport: :: u_quad_t,
1193
+ pub ifs6_in_mlddone: :: u_quad_t,
1194
+ pub ifs6_out_msg: :: u_quad_t,
1195
+ pub ifs6_out_error: :: u_quad_t,
1196
+ pub ifs6_out_dstunreach: :: u_quad_t,
1197
+ pub ifs6_out_adminprohib: :: u_quad_t,
1198
+ pub ifs6_out_timeexceed: :: u_quad_t,
1199
+ pub ifs6_out_paramprob: :: u_quad_t,
1200
+ pub ifs6_out_pkttoobig: :: u_quad_t,
1201
+ pub ifs6_out_echo: :: u_quad_t,
1202
+ pub ifs6_out_echoreply: :: u_quad_t,
1203
+ pub ifs6_out_routersolicit: :: u_quad_t,
1204
+ pub ifs6_out_routeradvert: :: u_quad_t,
1205
+ pub ifs6_out_neighborsolicit: :: u_quad_t,
1206
+ pub ifs6_out_neighboradvert: :: u_quad_t,
1207
+ pub ifs6_out_redirect: :: u_quad_t,
1208
+ pub ifs6_out_mldquery: :: u_quad_t,
1209
+ pub ifs6_out_mldreport: :: u_quad_t,
1210
+ pub ifs6_out_mlddone: :: u_quad_t,
1211
+ }
1139
1212
}
1140
1213
1141
1214
s_no_extra_traits ! {
@@ -1473,6 +1546,25 @@ s_no_extra_traits! {
1473
1546
pub ifcu_buf: * mut :: c_char,
1474
1547
pub ifcu_req: * mut ifreq,
1475
1548
}
1549
+
1550
+ pub union __c_anonymous_ifr_ifru6 {
1551
+ pub ifru_addr: :: sockaddr_in6,
1552
+ pub ifru_dstaddr: :: sockaddr_in6,
1553
+ pub ifru_flags: :: c_int,
1554
+ pub ifru_flags6: :: c_int,
1555
+ pub ifru_metrics: :: c_int,
1556
+ pub ifru_intval: :: c_int,
1557
+ pub ifru_data: * mut :: c_char,
1558
+ pub ifru_lifetime: in6_addrlifetime,
1559
+ pub ifru_stat: in6_ifstat,
1560
+ pub ifru_icmp6stat: icmp6_ifstat,
1561
+ pub ifru_scope_id: [ u32 ; SCOPE6_ID_MAX ] ,
1562
+ }
1563
+
1564
+ pub struct in6_ifreq {
1565
+ pub ifr_name: [ :: c_char; :: IFNAMSIZ ] ,
1566
+ pub ifr_ifru: __c_anonymous_ifr_ifru6,
1567
+ }
1476
1568
}
1477
1569
1478
1570
impl siginfo_t {
@@ -3021,6 +3113,74 @@ cfg_if! {
3021
3113
unsafe { self . ifcu_req. hash( state) } ;
3022
3114
}
3023
3115
}
3116
+
3117
+ impl PartialEq for __c_anonymous_ifr_ifru6 {
3118
+ fn eq( & self , other: & __c_anonymous_ifr_ifru6) -> bool {
3119
+ unsafe {
3120
+ self . ifru_addr == other. ifru_addr
3121
+ && self . ifru_dstaddr == other. ifru_dstaddr
3122
+ && self . ifru_flags == other. ifru_flags
3123
+ && self . ifru_flags6 == other. ifru_flags6
3124
+ && self . ifru_metrics == other. ifru_metrics
3125
+ && self . ifru_intval == other. ifru_intval
3126
+ && self . ifru_data == other. ifru_data
3127
+ && self . ifru_scope_id
3128
+ . iter( )
3129
+ . zip( other. ifru_scope_id. iter( ) )
3130
+ . all( |( a, b) | a == b)
3131
+ }
3132
+ }
3133
+ }
3134
+
3135
+ impl Eq for __c_anonymous_ifr_ifru6 { }
3136
+
3137
+ impl :: fmt:: Debug for __c_anonymous_ifr_ifru6 {
3138
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
3139
+ f. debug_struct( "__c_anonymous_ifr_ifru6" )
3140
+ . field( "ifru_addr" , unsafe { & self . ifru_addr } )
3141
+ . field( "ifru_dstaddr" , unsafe { & self . ifru_dstaddr } )
3142
+ . field( "ifru_flags" , unsafe { & self . ifru_flags } )
3143
+ . field( "ifru_flags6" , unsafe { & self . ifru_flags6 } )
3144
+ . field( "ifru_metrics" , unsafe { & self . ifru_metrics } )
3145
+ . field( "ifru_intval" , unsafe { & self . ifru_intval } )
3146
+ . field( "ifru_data" , unsafe { & self . ifru_data } )
3147
+ . field( "ifru_scope_id" , unsafe { & self . ifru_scope_id } )
3148
+ . finish( )
3149
+ }
3150
+ }
3151
+
3152
+ impl :: hash:: Hash for __c_anonymous_ifr_ifru6 {
3153
+ fn hash<H : :: hash:: Hasher >( & self , state: & mut H ) {
3154
+ unsafe {
3155
+ self . ifru_addr. hash( state) ;
3156
+ self . ifru_dstaddr. hash( state) ;
3157
+ self . ifru_flags. hash( state) ;
3158
+ self . ifru_flags6. hash( state) ;
3159
+ self . ifru_metrics. hash( state) ;
3160
+ self . ifru_intval. hash( state) ;
3161
+ self . ifru_data. hash( state) ;
3162
+ self . ifru_scope_id. hash( state) ;
3163
+ }
3164
+ }
3165
+ }
3166
+
3167
+ impl PartialEq for in6_ifreq {
3168
+ fn eq( & self , other: & in6_ifreq) -> bool {
3169
+ self . ifr_name == other. ifr_name
3170
+ && self . ifr_ifru == other. ifr_ifru
3171
+ }
3172
+ }
3173
+
3174
+ impl Eq for in6_ifreq { }
3175
+
3176
+ impl :: fmt:: Debug for in6_ifreq {
3177
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
3178
+ f. debug_struct( "in6_ifreq" )
3179
+ . field( "ifr_name" , & self . ifr_name)
3180
+ . field( "ifr_ifru" , & self . ifr_ifru)
3181
+ . finish( )
3182
+ }
3183
+ }
3024
3184
}
3025
3185
}
3026
3186
@@ -4085,6 +4245,8 @@ pub const IFF_LINK2: ::c_int = 0x4000; // per link layer defined bit
4085
4245
pub const IFF_ALTPHYS : :: c_int = IFF_LINK2 ; // use alternate physical connection
4086
4246
pub const IFF_MULTICAST : :: c_int = 0x8000 ; // supports multicast
4087
4247
4248
+ pub const SCOPE6_ID_MAX : :: size_t = 16 ;
4249
+
4088
4250
pub const SHUT_RD : :: c_int = 0 ;
4089
4251
pub const SHUT_WR : :: c_int = 1 ;
4090
4252
pub const SHUT_RDWR : :: c_int = 2 ;
0 commit comments