mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-17 13:28:10 +02:00
A MAC address is a relatively common "type". The GObject property is of type string,
but the D-Bus type is a bytestring ("ay"). We will need a special NMSettInfoPropertType.
Note that like most implementations, the from-dbus implementation still is based
on GObject setters. This will change in the future.
Also note that the previous compare function was
_nm_setting_property_compare_fcn_default(). That is, it used to convert
the property to GVariant and compare those. The conversion to GVariant
in that case normalizes the string (e.g. it is case insensitive). Also,
only properties could be compared which were also convertible to D-Bus
(which is probably fine, because there is no guarantee the profiles that
don't verify can be compared).
The code now uses the direct comparison of the strings. That mostly
preserves the case-insensitivity of the previous comparison, because
the property setters for mac addresses all use
_nm_utils_hwaddr_canonical_or_invalid() to normalize the strings.
This is subtle, but still correct. Note that this will improve later,
by ensuring that the property setters for mac addresses automatically
perform the right normalization.
69 lines
3.1 KiB
C
69 lines
3.1 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2005 - 2017 Red Hat, Inc.
|
|
*/
|
|
|
|
#ifndef __NM_UTILS_PRIVATE_H__
|
|
#define __NM_UTILS_PRIVATE_H__
|
|
|
|
#if !((NETWORKMANAGER_COMPILATION) &NM_NETWORKMANAGER_COMPILATION_WITH_LIBNM_CORE_PRIVATE)
|
|
#error Cannot use this header.
|
|
#endif
|
|
|
|
#include "nm-setting-private.h"
|
|
#include "nm-setting-ip-config.h"
|
|
|
|
#define NM_VARIANT_ATTRIBUTE_SPEC_DEFINE(_name, _type, ...) \
|
|
(&((const NMVariantAttributeSpec){.name = _name, .type = _type, __VA_ARGS__}))
|
|
|
|
gboolean _nm_utils_string_slist_validate(GSList *list, const char **valid_values);
|
|
|
|
gboolean _nm_utils_secret_flags_validate(NMSettingSecretFlags secret_flags,
|
|
const char * setting_name,
|
|
const char * property_name,
|
|
NMSettingSecretFlags disallowed_flags,
|
|
GError ** error);
|
|
|
|
gboolean _nm_utils_wps_method_validate(NMSettingWirelessSecurityWpsMethod wps_method,
|
|
const char * setting_name,
|
|
const char * property_name,
|
|
gboolean wps_required,
|
|
GError ** error);
|
|
|
|
/* D-Bus transform funcs */
|
|
|
|
extern const NMSettInfoPropertType nm_sett_info_propert_type_strdict;
|
|
|
|
extern const NMSettInfoPropertType nm_sett_info_propert_type_assigned_mac_address;
|
|
|
|
void _nm_utils_strdict_from_dbus(GVariant *dbus_value, GValue *prop_value);
|
|
|
|
void _nm_utils_bytes_from_dbus(GVariant *dbus_value, GValue *prop_value);
|
|
|
|
char *_nm_utils_hwaddr_canonical_or_invalid(const char *mac, gssize length);
|
|
|
|
gboolean _nm_utils_hwaddr_link_local_valid(const char *mac);
|
|
|
|
gboolean _nm_sriov_vf_parse_vlans(NMSriovVF *vf, const char *str, GError **error);
|
|
|
|
gboolean _nm_utils_bridge_vlan_verify_list(GPtrArray * vlans,
|
|
gboolean check_normalizable,
|
|
GError ** error,
|
|
const char *setting,
|
|
const char *property);
|
|
|
|
NMTernary _nm_utils_bridge_compare_vlans(GPtrArray *vlans_a, GPtrArray *vlans_b);
|
|
|
|
GVariant *_nm_team_settings_property_to_dbus(const NMSettInfoSetting * sett_info,
|
|
const NMSettInfoProperty * property_info,
|
|
NMConnection * connection,
|
|
NMSetting * setting,
|
|
NMConnectionSerializationFlags flags,
|
|
const NMConnectionSerializationOptions *options);
|
|
|
|
void _nm_team_settings_property_from_dbus_link_watchers(GVariant *dbus_value, GValue *prop_value);
|
|
|
|
GVariant *_nm_utils_ip4_dns_to_variant(const char *const *dns, gssize len);
|
|
GVariant *_nm_utils_ip6_dns_to_variant(const char *const *dns, gssize len);
|
|
|
|
#endif
|