network: do not require ethtool_get_permanent_macaddr() to get an fd
This commit is contained in:
parent
64be35ab02
commit
6666c4faee
|
@ -320,9 +320,8 @@ static int decode_link(sd_netlink_message *m, LinkInfo *info, char **patterns) {
|
|||
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;
|
||||
|
||||
|
|
|
@ -618,8 +618,7 @@ static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) {
|
|||
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");
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#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"
|
||||
|
@ -219,14 +220,17 @@ int ethtool_get_link_info(int *ethtool_fd, const char *ifname,
|
|||
}
|
||||
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue