@@ -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 ;
@@ -1233,6 +1235,78 @@ s! {
1233
1235
pub iffmid_id: u32 ,
1234
1236
pub iffmid_str: [ :: c_char; 1 ] ,
1235
1237
}
1238
+
1239
+ pub struct in6_addrlifetime {
1240
+ pub ia6t_expire: time_t,
1241
+ pub ia6t_preferred: time_t,
1242
+ pub ia6t_vltime: u32 ,
1243
+ pub ia6t_pltime: u32 ,
1244
+ }
1245
+
1246
+ pub struct in6_ifstat {
1247
+ pub ifs6_in_receive: :: u_quad_t,
1248
+ pub ifs6_in_hdrerr: :: u_quad_t,
1249
+ pub ifs6_in_toobig: :: u_quad_t,
1250
+ pub ifs6_in_noroute: :: u_quad_t,
1251
+ pub ifs6_in_addrerr: :: u_quad_t,
1252
+ pub ifs6_in_protounknown: :: u_quad_t,
1253
+ pub ifs6_in_truncated: :: u_quad_t,
1254
+ pub ifs6_in_discard: :: u_quad_t,
1255
+ pub ifs6_in_deliver: :: u_quad_t,
1256
+ pub ifs6_out_forward: :: u_quad_t,
1257
+ pub ifs6_out_request: :: u_quad_t,
1258
+ pub ifs6_out_discard: :: u_quad_t,
1259
+ pub ifs6_out_fragok: :: u_quad_t,
1260
+ pub ifs6_out_fragfail: :: u_quad_t,
1261
+ pub ifs6_out_fragcreat: :: u_quad_t,
1262
+ pub ifs6_reass_reqd: :: u_quad_t,
1263
+ pub ifs6_reass_ok: :: u_quad_t,
1264
+ pub ifs6_atmfrag_rcvd: :: u_quad_t,
1265
+ pub ifs6_reass_fail: :: u_quad_t,
1266
+ pub ifs6_in_mcast: :: u_quad_t,
1267
+ pub ifs6_out_mcast: :: u_quad_t,
1268
+ pub ifs6_cantfoward_icmp6: :: u_quad_t,
1269
+ pub ifs6_addr_expiry_cnt: :: u_quad_t,
1270
+ pub ifs6_pfx_expiry_cnt: :: u_quad_t,
1271
+ pub ifs6_defrtr_expiry_cnt: :: u_quad_t,
1272
+ }
1273
+
1274
+ pub struct icmp6_ifstat {
1275
+ pub ifs6_in_msg: :: u_quad_t,
1276
+ pub ifs6_in_error: :: u_quad_t,
1277
+ pub ifs6_in_dstunreach: :: u_quad_t,
1278
+ pub ifs6_in_adminprohib: :: u_quad_t,
1279
+ pub ifs6_in_timeexceed: :: u_quad_t,
1280
+ pub ifs6_in_paramprob: :: u_quad_t,
1281
+ pub ifs6_in_pkttoobig: :: u_quad_t,
1282
+ pub ifs6_in_echo: :: u_quad_t,
1283
+ pub ifs6_in_echoreply: :: u_quad_t,
1284
+ pub ifs6_in_routersolicit: :: u_quad_t,
1285
+ pub ifs6_in_routeradvert: :: u_quad_t,
1286
+ pub ifs6_in_neighborsolicit: :: u_quad_t,
1287
+ pub ifs6_in_neighboradvert: :: u_quad_t,
1288
+ pub ifs6_in_redirect: :: u_quad_t,
1289
+ pub ifs6_in_mldquery: :: u_quad_t,
1290
+ pub ifs6_in_mldreport: :: u_quad_t,
1291
+ pub ifs6_in_mlddone: :: u_quad_t,
1292
+ pub ifs6_out_msg: :: u_quad_t,
1293
+ pub ifs6_out_error: :: u_quad_t,
1294
+ pub ifs6_out_dstunreach: :: u_quad_t,
1295
+ pub ifs6_out_adminprohib: :: u_quad_t,
1296
+ pub ifs6_out_timeexceed: :: u_quad_t,
1297
+ pub ifs6_out_paramprob: :: u_quad_t,
1298
+ pub ifs6_out_pkttoobig: :: u_quad_t,
1299
+ pub ifs6_out_echo: :: u_quad_t,
1300
+ pub ifs6_out_echoreply: :: u_quad_t,
1301
+ pub ifs6_out_routersolicit: :: u_quad_t,
1302
+ pub ifs6_out_routeradvert: :: u_quad_t,
1303
+ pub ifs6_out_neighborsolicit: :: u_quad_t,
1304
+ pub ifs6_out_neighboradvert: :: u_quad_t,
1305
+ pub ifs6_out_redirect: :: u_quad_t,
1306
+ pub ifs6_out_mldquery: :: u_quad_t,
1307
+ pub ifs6_out_mldreport: :: u_quad_t,
1308
+ pub ifs6_out_mlddone: :: u_quad_t,
1309
+ }
1236
1310
}
1237
1311
1238
1312
s_no_extra_traits ! {
@@ -1576,6 +1650,25 @@ s_no_extra_traits! {
1576
1650
pub ifcu_buf: * mut :: c_char,
1577
1651
pub ifcu_req: * mut ifreq,
1578
1652
}
1653
+
1654
+ pub union __c_anonymous_ifr_ifru6 {
1655
+ pub ifru_addr: :: sockaddr_in6,
1656
+ pub ifru_dstaddr: :: sockaddr_in6,
1657
+ pub ifru_flags: :: c_int,
1658
+ pub ifru_flags6: :: c_int,
1659
+ pub ifru_metrics: :: c_int,
1660
+ pub ifru_intval: :: c_int,
1661
+ pub ifru_data: * mut :: c_char,
1662
+ pub ifru_lifetime: in6_addrlifetime,
1663
+ pub ifru_stat: in6_ifstat,
1664
+ pub ifru_icmp6stat: icmp6_ifstat,
1665
+ pub ifru_scope_id: [ u32 ; SCOPE6_ID_MAX ] ,
1666
+ }
1667
+
1668
+ pub struct in6_ifreq {
1669
+ pub ifr_name: [ :: c_char; :: IFNAMSIZ ] ,
1670
+ pub ifr_ifru: __c_anonymous_ifr_ifru6,
1671
+ }
1579
1672
}
1580
1673
1581
1674
impl siginfo_t {
@@ -3151,6 +3244,74 @@ cfg_if! {
3151
3244
unsafe { self . ifcu_req. hash( state) } ;
3152
3245
}
3153
3246
}
3247
+
3248
+ impl PartialEq for __c_anonymous_ifr_ifru6 {
3249
+ fn eq( & self , other: & __c_anonymous_ifr_ifru6) -> bool {
3250
+ unsafe {
3251
+ self . ifru_addr == other. ifru_addr
3252
+ && self . ifru_dstaddr == other. ifru_dstaddr
3253
+ && self . ifru_flags == other. ifru_flags
3254
+ && self . ifru_flags6 == other. ifru_flags6
3255
+ && self . ifru_metrics == other. ifru_metrics
3256
+ && self . ifru_intval == other. ifru_intval
3257
+ && self . ifru_data == other. ifru_data
3258
+ && self . ifru_scope_id
3259
+ . iter( )
3260
+ . zip( other. ifru_scope_id. iter( ) )
3261
+ . all( |( a, b) | a == b)
3262
+ }
3263
+ }
3264
+ }
3265
+
3266
+ impl Eq for __c_anonymous_ifr_ifru6 { }
3267
+
3268
+ impl :: fmt:: Debug for __c_anonymous_ifr_ifru6 {
3269
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
3270
+ f. debug_struct( "__c_anonymous_ifr_ifru6" )
3271
+ . field( "ifru_addr" , unsafe { & self . ifru_addr } )
3272
+ . field( "ifru_dstaddr" , unsafe { & self . ifru_dstaddr } )
3273
+ . field( "ifru_flags" , unsafe { & self . ifru_flags } )
3274
+ . field( "ifru_flags6" , unsafe { & self . ifru_flags6 } )
3275
+ . field( "ifru_metrics" , unsafe { & self . ifru_metrics } )
3276
+ . field( "ifru_intval" , unsafe { & self . ifru_intval } )
3277
+ . field( "ifru_data" , unsafe { & self . ifru_data } )
3278
+ . field( "ifru_scope_id" , unsafe { & self . ifru_scope_id } )
3279
+ . finish( )
3280
+ }
3281
+ }
3282
+
3283
+ impl :: hash:: Hash for __c_anonymous_ifr_ifru6 {
3284
+ fn hash<H : :: hash:: Hasher >( & self , state: & mut H ) {
3285
+ unsafe {
3286
+ self . ifru_addr. hash( state) ;
3287
+ self . ifru_dstaddr. hash( state) ;
3288
+ self . ifru_flags. hash( state) ;
3289
+ self . ifru_flags6. hash( state) ;
3290
+ self . ifru_metrics. hash( state) ;
3291
+ self . ifru_intval. hash( state) ;
3292
+ self . ifru_data. hash( state) ;
3293
+ self . ifru_scope_id. hash( state) ;
3294
+ }
3295
+ }
3296
+ }
3297
+
3298
+ impl PartialEq for in6_ifreq {
3299
+ fn eq( & self , other: & in6_ifreq) -> bool {
3300
+ self . ifr_name == other. ifr_name
3301
+ && self . ifr_ifru == other. ifr_ifru
3302
+ }
3303
+ }
3304
+
3305
+ impl Eq for in6_ifreq { }
3306
+
3307
+ impl :: fmt:: Debug for in6_ifreq {
3308
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
3309
+ f. debug_struct( "in6_ifreq" )
3310
+ . field( "ifr_name" , & self . ifr_name)
3311
+ . field( "ifr_ifru" , & self . ifr_ifru)
3312
+ . finish( )
3313
+ }
3314
+ }
3154
3315
}
3155
3316
}
3156
3317
@@ -4340,6 +4501,8 @@ pub const IFF_LINK2: ::c_int = 0x4000; // per link layer defined bit
4340
4501
pub const IFF_ALTPHYS : :: c_int = IFF_LINK2 ; // use alternate physical connection
4341
4502
pub const IFF_MULTICAST : :: c_int = 0x8000 ; // supports multicast
4342
4503
4504
+ pub const SCOPE6_ID_MAX : :: size_t = 16 ;
4505
+
4343
4506
pub const SHUT_RD : :: c_int = 0 ;
4344
4507
pub const SHUT_WR : :: c_int = 1 ;
4345
4508
pub const SHUT_RDWR : :: c_int = 2 ;
0 commit comments