summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-06-12 12:32:46 +0200
committerThomas Haller <thaller@redhat.com>2023-06-14 11:07:34 +0200
commitccaecf7f3e7693721b85690ced808925884b689e (patch)
tree56078b6880b431b4af3397e13cd1382d352041ef
parent798ea93c459b329f654d535eceecceab42e4709e (diff)
core: add nm_match_spec_device_data_init_from_platform() helper
-rw-r--r--src/core/NetworkManagerUtils.c47
-rw-r--r--src/core/NetworkManagerUtils.h6
2 files changed, 38 insertions, 15 deletions
diff --git a/src/core/NetworkManagerUtils.c b/src/core/NetworkManagerUtils.c
index 33a0c0a466..94b2351310 100644
--- a/src/core/NetworkManagerUtils.c
+++ b/src/core/NetworkManagerUtils.c
@@ -940,6 +940,32 @@ nm_match_spec_device_data_init_from_device(struct _NMMatchSpecDeviceData *out_da
return out_data;
}
+const NMMatchSpecDeviceData *
+nm_match_spec_device_data_init_from_platform(NMMatchSpecDeviceData *out_data,
+ const NMPlatformLink *pllink,
+ const char *match_device_type,
+ const char *match_dhcp_plugin)
+{
+ nm_assert(out_data);
+
+ /* we can only match by certain properties that are available on the
+ * platform link (and even @pllink might be missing.
+ *
+ * It's still useful because of specs like "*" and "except:interface-name:eth0",
+ * which match even in that case. */
+
+ *out_data = (NMMatchSpecDeviceData){
+ .interface_name = pllink ? pllink->name : NULL,
+ .device_type = match_device_type,
+ .driver = pllink ? pllink->driver : NULL,
+ .driver_version = NULL,
+ .hwaddr = NULL,
+ .s390_subchannels = NULL,
+ .dhcp_plugin = match_dhcp_plugin,
+ };
+ return out_data;
+}
+
/*****************************************************************************/
int
@@ -949,23 +975,14 @@ nm_match_spec_device_by_pllink(const NMPlatformLink *pllink,
const GSList *specs,
int no_match_value)
{
- NMMatchSpecMatchType m;
+ NMMatchSpecMatchType m;
+ NMMatchSpecDeviceData data;
- /* we can only match by certain properties that are available on the
- * platform link (and even @pllink might be missing.
- *
- * It's still useful because of specs like "*" and "except:interface-name:eth0",
- * which match even in that case. */
m = nm_match_spec_device(specs,
- &((const NMMatchSpecDeviceData){
- .interface_name = pllink ? pllink->name : NULL,
- .device_type = match_device_type,
- .driver = pllink ? pllink->driver : NULL,
- .driver_version = NULL,
- .hwaddr = NULL,
- .s390_subchannels = NULL,
- .dhcp_plugin = match_dhcp_plugin,
- }));
+ nm_match_spec_device_data_init_from_platform(&data,
+ pllink,
+ match_device_type,
+ match_dhcp_plugin));
return nm_match_spec_match_type_to_bool(m, no_match_value);
}
diff --git a/src/core/NetworkManagerUtils.h b/src/core/NetworkManagerUtils.h
index c6d6e274ba..7d8afe5a2b 100644
--- a/src/core/NetworkManagerUtils.h
+++ b/src/core/NetworkManagerUtils.h
@@ -97,6 +97,12 @@ const struct _NMMatchSpecDeviceData *
nm_match_spec_device_data_init_from_device(struct _NMMatchSpecDeviceData *out_data,
NMDevice *device);
+const struct _NMMatchSpecDeviceData *
+nm_match_spec_device_data_init_from_platform(struct _NMMatchSpecDeviceData *out_data,
+ const NMPlatformLink *pllink,
+ const char *match_device_type,
+ const char *match_dhcp_plugin);
+
int nm_match_spec_device_by_pllink(const NMPlatformLink *pllink,
const char *match_device_type,
const char *match_dhcp_plugin,