int if_ethtool_probe(const char *ifname) { int fd = socket(AF_INET, SOCK_DGRAM, 0); int status = 0; if (fd < 0) return -1; memset(&ifr, 0, sizeof (struct ifreq)); strncpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); status = if_ethtool_status(fd); close(fd); return status; }
static int if_ethtool_probe(const char *ifname) { int fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); int status = 0; if (fd < 0) return -1; #ifndef _HAVE_SOCK_CLOEXEC_ if (set_sock_flags(fd, F_SETFD, FD_CLOEXEC)) log_message(LOG_INFO, "Unable to set CLOEXEC on ethtool_probe socket - %s (%d)", strerror(errno), errno); #endif memset(&ifr, 0, sizeof (struct ifreq)); strncpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); status = if_ethtool_status(fd); close(fd); return status; }