sd_netlink_message_read_ether_addr(m, IFLA_ADDRESS, &info->mac_address) >= 0 &&
memcmp(&info->mac_address, ÐER_ADDR_NULL, sizeof(struct ether_addr)) != 0;
- _cleanup_close_ int fd = -1;
info->has_permanent_mac_address =
- ethtool_get_permanent_macaddr(&fd, info->name, &info->permanent_mac_address) >= 0 &&
+ ethtool_get_permanent_macaddr(NULL, info->name, &info->permanent_mac_address) >= 0 &&
memcmp(&info->permanent_mac_address, ÐER_ADDR_NULL, sizeof(struct ether_addr)) != 0 &&
memcmp(&info->permanent_mac_address, &info->mac_address, sizeof(struct ether_addr)) != 0;
if (r < 0)
log_link_debug_errno(link, r, "MAC address not found for new device, continuing without");
- _cleanup_close_ int fd = -1;
- r = ethtool_get_permanent_macaddr(&fd, link->ifname, &link->permanent_mac);
+ r = ethtool_get_permanent_macaddr(NULL, link->ifname, &link->permanent_mac);
if (r < 0)
log_link_debug_errno(link, r, "Permanent MAC address not found for new device, continuing without: %m");
#include "conf-parser.h"
#include "ethtool-util.h"
#include "extract-word.h"
+#include "fd-util.h"
#include "log.h"
#include "memory-util.h"
#include "socket-util.h"
}
int ethtool_get_permanent_macaddr(int *ethtool_fd, const char *ifname, struct ether_addr *ret) {
+ _cleanup_close_ int fd = -1;
_cleanup_free_ struct ethtool_perm_addr *epaddr = NULL;
struct ifreq ifr;
int r;
- assert(ethtool_fd);
assert(ifname);
assert(ret);
+ if (!ethtool_fd)
+ ethtool_fd = &fd;
+
if (*ethtool_fd < 0) {
r = ethtool_connect_or_warn(ethtool_fd, false);
if (r < 0)