diff options
author | Thomas Haller <thaller@redhat.com> | 2023-06-12 12:32:46 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2023-06-14 11:07:34 +0200 |
commit | ccaecf7f3e7693721b85690ced808925884b689e (patch) | |
tree | 56078b6880b431b4af3397e13cd1382d352041ef | |
parent | 798ea93c459b329f654d535eceecceab42e4709e (diff) |
core: add nm_match_spec_device_data_init_from_platform() helper
-rw-r--r-- | src/core/NetworkManagerUtils.c | 47 | ||||
-rw-r--r-- | src/core/NetworkManagerUtils.h | 6 |
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, |