diff --git a/libc-test/build.rs b/libc-test/build.rs index 1edba8ef56a64..7fdb46c0c4285 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1847,6 +1847,8 @@ fn test_android(target: &str) { // FIXME(android): "'__uint128' undeclared" in C "__uint128" => true, + // Added in API level 24 + "if_nameindex" => true, _ => false, } @@ -2093,6 +2095,9 @@ fn test_android(target: &str) { | "ispunct" | "isspace" | "isupper" | "isxdigit" | "isblank" | "tolower" | "toupper" => true, + // Added in API level 24 + "if_nameindex" | "if_freenameindex" => true, + _ => false, } }); diff --git a/libc-test/semver/android.txt b/libc-test/semver/android.txt index 1d911471133e9..9327d5cdaa1cc 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -3382,7 +3382,9 @@ group hostent id_t idtype_t +if_freenameindex if_indextoname +if_nameindex if_nametoindex ifaddrs ifconf diff --git a/src/unix/linux_like/android/mod.rs b/src/unix/linux_like/android/mod.rs index d66e67d33eefe..016a058d1d717 100644 --- a/src/unix/linux_like/android/mod.rs +++ b/src/unix/linux_like/android/mod.rs @@ -517,6 +517,11 @@ s! { pub ifr6_prefixlen: u32, pub ifr6_ifindex: c_int, } + + pub struct if_nameindex { + pub if_index: c_uint, + pub if_name: *mut c_char, + } } s_no_extra_traits! { @@ -4094,6 +4099,9 @@ extern "C" { newpath: *const c_char, flags: c_uint, ) -> c_int; + + pub fn if_nameindex() -> *mut if_nameindex; + pub fn if_freenameindex(ptr: *mut if_nameindex); } cfg_if! {