An interface with index 1 is not guaranteed to exist since interfaces that fail to attach do not release their allocated index by design. Network tests now get the interface name from the first available/lowest-indexed interface. --- .../rtems/bsd/test/default-network-init.h | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/testsuite/include/rtems/bsd/test/default-network-init.h b/testsuite/include/rtems/bsd/test/default-network-init.h index ce1fc015..68652bbd 100644 --- a/testsuite/include/rtems/bsd/test/default-network-init.h +++ b/testsuite/include/rtems/bsd/test/default-network-init.h @@ -220,7 +220,32 @@ Init(rtems_task_argument arg) #ifndef DEFAULT_NETWORK_NO_INTERFACE_0 #ifdef DEFAULT_NETWORK_NO_STATIC_IFCONFIG - ifname = if_indextoname(1, &ifnamebuf[0]); + { + struct ifaddrs *ifaddrs, *ifa; + sc = getifaddrs(&ifaddrs); + assert(sc >= 0); + + /* + * Get the first/lowest valid interface regardless of index + * since interfaces that fail to come up still consume an index + */ + for (ifa = ifaddrs; ifa != NULL; ifa = ifa->ifa_next) { + if (ifa->ifa_addr && + ifa->ifa_addr->sa_family == AF_LINK) + break; + } + + if (ifa == NULL) { + ifname = NULL; + } + else { + ifname = &ifnamebuf[0]; + strncpy(ifname, ifa->ifa_name, IFNAMSIZ); + } + + freeifaddrs(ifaddrs); + } + assert(ifname != NULL); #else ifname = NET_CFG_INTERFACE_0; -- 2.20.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel