summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/shared/net-util.c34
-rw-r--r--src/shared/net-util.h9
-rw-r--r--src/udev/net/link-config.c9
3 files changed, 28 insertions, 24 deletions
diff --git a/src/shared/net-util.c b/src/shared/net-util.c
index c4cb3337ae..f853add1ec 100644
--- a/src/shared/net-util.c
+++ b/src/shared/net-util.c
@@ -33,52 +33,48 @@ bool net_match_config(const struct ether_addr *match_mac,
const char *match_driver,
const char *match_type,
const char *match_name,
- struct udev_device *device) {
- const char *property;
-
- assert(device);
+ const char *dev_mac,
+ const char *dev_path,
+ const char *dev_driver,
+ const char *dev_type,
+ const char *dev_name) {
if (match_mac) {
- property = udev_device_get_sysattr_value(device, "address");
- if (!property || memcmp(match_mac, ether_aton(property), ETH_ALEN)) {
+ if (!dev_mac || memcmp(match_mac, ether_aton(dev_mac), ETH_ALEN)) {
log_debug("Interface MAC address (%s) did not match MACAddress=%s",
- property, ether_ntoa(match_mac));
+ dev_mac, ether_ntoa(match_mac));
return 0;
}
}
if (match_path) {
- property = udev_device_get_property_value(device, "ID_PATH");
- if (!streq_ptr(match_path, property)) {
+ if (!streq_ptr(match_path, dev_path)) {
log_debug("Interface persistent path (%s) did not match Path=%s",
- property, match_path);
+ dev_path, match_path);
return 0;
}
}
if (match_driver) {
- property = udev_device_get_driver(device);
- if (!streq_ptr(match_driver, property)) {
+ if (!streq_ptr(match_driver, dev_driver)) {
log_debug("Interface device driver (%s) did not match Driver=%s",
- property, match_driver);
+ dev_driver, match_driver);
return 0;
}
}
if (match_type) {
- property = udev_device_get_devtype(device);
- if (!streq_ptr(match_type, property)) {
+ if (!streq_ptr(match_type, dev_type)) {
log_debug("Interface type (%s) did not match Type=%s",
- property, match_type);
+ dev_type, match_type);
return 0;
}
}
if (match_name) {
- property = udev_device_get_sysname(device);
- if (!streq_ptr(match_name, property)) {
+ if (!streq_ptr(match_name, dev_name)) {
log_debug("Interface name (%s) did not match Name=%s",
- property, match_name);
+ dev_name, match_name);
return 0;
}
}
diff --git a/src/shared/net-util.h b/src/shared/net-util.h
index 6b79a9cf80..54981725b0 100644
--- a/src/shared/net-util.h
+++ b/src/shared/net-util.h
@@ -22,15 +22,18 @@
#pragma once
#include <netinet/ether.h>
-
-#include "udev.h"
+#include <stdbool.h>
bool net_match_config(const struct ether_addr *match_mac,
const char *match_path,
const char *match_driver,
const char *match_type,
const char *match_name,
- struct udev_device *device);
+ const char *dev_mac,
+ const char *dev_path,
+ const char *dev_driver,
+ const char *dev_type,
+ const char *dev_name);
int config_parse_hwaddr(const char *unit, const char *filename, unsigned line,
const char *section, const char *lvalue, int ltype,
diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
index d930afcc07..9d0f23694c 100644
--- a/src/udev/net/link-config.c
+++ b/src/udev/net/link-config.c
@@ -245,9 +245,14 @@ int link_config_get(link_config_ctx *ctx, struct udev_device *device, link_confi
link_config *link;
LIST_FOREACH(links, link, ctx->links) {
+
if (net_match_config(link->match_mac, link->match_path,
- link->match_driver, link->match_type,
- NULL, device)) {
+ link->match_driver, link->match_type, NULL,
+ udev_device_get_sysattr_value(device, "address"),
+ udev_device_get_property_value(device, "ID_PATH"),
+ udev_device_get_driver(device),
+ udev_device_get_devtype(device),
+ NULL)) {
log_debug("Config file %s applies to device %s",
link->filename,
udev_device_get_sysname(device));