On Mon, 21 Dec 2020 13:33:22 -0800 Long Li <lon...@linuxonhyperv.com> wrote:
> /* trying to get mac address if this is a network device*/ > + s = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); > + if (s == -1) { > + PMD_DRV_LOG(ERR, "Failed to create socket errno %d\n", > + errno); > + break; > + } > + strlcpy(req.ifr_name, dir->d_name, sizeof(req.ifr_name)); > + ret = ioctl(s, SIOCGIFHWADDR, &req); > + close(s); > + if (ret == -1) { > + PMD_DRV_LOG(ERR, "Failed to send SIOCGIFHWADDR for " > + "device %s\n", dir->d_name); > + break; > + } > + if (req.ifr_hwaddr.sa_family != ARPHRD_ETHER) { > + closedir(di); > + return; > + } You have sysfs directory open at this point, would it be easier to continue with sysfs to find the mac address? snprintf(ifpath, sizeof(ifpath), "%s/address", dir->d_name); fd = openat(dirfd(di), ifpath, O_RDONLY); read(fd...)