diff --git a/libc-test/build.rs b/libc-test/build.rs index eb2a5dfe72c4..930a466f86cc 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -1846,6 +1846,8 @@ fn test_android(target: &str) { // FIXME: "'__uint128' undeclared" in C "__uint128" => true, + // Added in API level 24 + "if_nameindex" => true, _ => false, } @@ -2089,6 +2091,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 e11711384677..8d01858c44ce 100644 --- a/libc-test/semver/android.txt +++ b/libc-test/semver/android.txt @@ -3379,7 +3379,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 0fe5117ae5a9..1bfbbca76a6f 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! { @@ -4084,6 +4089,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! {