diff --git a/tests/ifaddrs_test.cpp b/tests/ifaddrs_test.cpp
index 8159710..4e35b4d 100644
--- a/tests/ifaddrs_test.cpp
+++ b/tests/ifaddrs_test.cpp
@@ -67,7 +67,7 @@
 
 static void print_sockaddr_ll(const char* what, const sockaddr* p) {
   const sockaddr_ll* s = reinterpret_cast<const sockaddr_ll*>(p);
-  printf("\t%s\t", what);
+  printf("\t\t%s\t", what);
   for (int i = 0; i < s->sll_halen; ++i) {
     if (i > 0) printf(":");
     printf("%02X", s->sll_addr[i]);
@@ -85,7 +85,7 @@
     printf("%d getnameinfo() failed: %s\n", family, gai_strerror(error));
     strcpy(host, "???");
   }
-  printf("\t%s: <%s>\n", what, host);
+  printf("\t\t%s: <%s>\n", what, host);
 }
 
 static const char* family_to_name(int family) {
@@ -105,7 +105,8 @@
     int family = ifa->ifa_addr ? ifa->ifa_addr->sa_family :
                                  ifa->ifa_broadaddr ? ifa->ifa_broadaddr->sa_family : AF_UNSPEC;
 
-    printf("%s\n\t%s (%d) flags=%#x\n",
+    printf("\t%s\n"
+           "\t\t%s (%d) flags=%#x\n",
            ifa->ifa_name, family_to_name(family), family, ifa->ifa_flags);
 
     if (family == AF_PACKET) {
diff --git a/tests/net_if_test.cpp b/tests/net_if_test.cpp
index 9f38411..caaed5f 100644
--- a/tests/net_if_test.cpp
+++ b/tests/net_if_test.cpp
@@ -17,6 +17,7 @@
 #include <net/if.h>
 
 #include <errno.h>
+#include <ifaddrs.h>
 
 #include <gtest/gtest.h>
 
@@ -34,3 +35,39 @@
   unsigned index = if_nametoindex("this-interface-does-not-exist");
   ASSERT_EQ(0U, index);
 }
+
+TEST(net_if, if_nameindex) {
+  struct if_nameindex* list = if_nameindex();
+  ASSERT_TRUE(list != nullptr);
+
+  ASSERT_TRUE(list->if_index != 0);
+
+  std::set<std::string> if_nameindex_names;
+  char buf[IF_NAMESIZE] = {};
+  bool saw_lo = false;
+  for (struct if_nameindex* it = list; it->if_index != 0; ++it) {
+    fprintf(stderr, "\t%d\t%s\n", it->if_index, it->if_name);
+    if_nameindex_names.insert(it->if_name);
+    EXPECT_EQ(it->if_index, if_nametoindex(it->if_name));
+    EXPECT_STREQ(it->if_name, if_indextoname(it->if_index, buf));
+    if (strcmp(it->if_name, "lo") == 0) saw_lo = true;
+  }
+  ASSERT_TRUE(saw_lo);
+  if_freenameindex(list);
+
+  std::set<std::string> getifaddrs_names;
+  ifaddrs* ifa;
+  ASSERT_EQ(0, getifaddrs(&ifa));
+  for (ifaddrs* it = ifa; it != nullptr; it = it->ifa_next) {
+    getifaddrs_names.insert(it->ifa_name);
+  }
+  freeifaddrs(ifa);
+
+  ASSERT_EQ(getifaddrs_names, if_nameindex_names);
+}
+
+TEST(net_if, if_freenameindex_nullptr) {
+#if defined(__BIONIC__)
+  if_freenameindex(nullptr);
+#endif
+}
