wired: deprecate NMSettingWired mac-address-blacklist property

To embrace inclusive language, deprecate the NMSettingWired
mac-address-blacklist property and introduce mac-address-denylist property.
This commit is contained in:
Jan Vaclav 2024-03-13 12:44:59 +01:00 committed by Fernando Fernandez Mancera
parent da8b304c38
commit f2d91b4a68
14 changed files with 516 additions and 223 deletions

2
NEWS
View File

@ -13,6 +13,8 @@ USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE!
* The reason why a device is unmanaged is now properly set in the
"StateReason" property of the "Device" D-Bus object. The property is
visible in nmcli via "nmcli -f all device show $DEV".
* Deprecated 802-11-wireless and 802-11-wired property 'mac-address-blacklist'
and introduced the 'mac-address-denylist' property.
=============================================
NetworkManager-1.46

View File

@ -1984,6 +1984,13 @@ global:
nm_setting_connection_down_on_poweroff_get_type;
nm_setting_connection_get_down_on_poweroff;
nm_setting_ip_config_get_dhcp_send_release;
nm_setting_wired_add_mac_denylist_item;
nm_setting_wired_clear_mac_denylist_items;
nm_setting_wired_get_mac_address_denylist;
nm_setting_wired_get_mac_denylist_item;
nm_setting_wired_get_num_mac_denylist_items;
nm_setting_wired_remove_mac_denylist_item;
nm_setting_wired_remove_mac_denylist_item_by_value;
nm_setting_wireless_add_mac_denylist_item;
nm_setting_wireless_clear_mac_denylist_items;
nm_setting_wireless_get_mac_address_denylist;

View File

@ -496,6 +496,11 @@
gprop-type="gchararray"
/>
<property name="mac-address-blacklist"
is-deprecated="1"
dbus-type="as"
gprop-type="GStrv"
/>
<property name="mac-address-denylist"
dbus-type="as"
gprop-type="GStrv"
/>

View File

@ -429,6 +429,12 @@ GVariant *_nm_setting_wireless_mac_denylist_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_F
gboolean
_nm_setting_wireless_mac_blacklist_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil);
gboolean _nm_setting_wired_mac_denylist_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil);
GVariant *_nm_setting_wired_mac_denylist_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil);
gboolean _nm_setting_wired_mac_blacklist_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil);
GVariant *_nm_setting_to_dbus(NMSetting *setting,
NMConnection *connection,
NMConnectionSerializationFlags flags,

View File

@ -39,6 +39,7 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingWired,
PROP_CLONED_MAC_ADDRESS,
PROP_GENERATE_MAC_ADDRESS_MASK,
PROP_MAC_ADDRESS_BLACKLIST,
PROP_MAC_ADDRESS_DENYLIST,
PROP_MTU,
PROP_S390_SUBCHANNELS,
PROP_S390_NETTYPE,
@ -61,7 +62,7 @@ typedef struct {
char *generate_mac_address_mask;
char *s390_nettype;
char *wol_password;
NMValueStrv mac_address_blacklist;
NMValueStrv mac_address_denylist;
int accept_all_mac_addresses;
guint32 wake_on_lan;
guint32 speed;
@ -277,67 +278,73 @@ nm_setting_wired_get_generate_mac_address_mask(NMSettingWired *setting)
}
/**
* nm_setting_wired_get_mac_address_blacklist:
* nm_setting_wired_get_mac_address_denylist:
* @setting: the #NMSettingWired
*
* Returns: the #NMSettingWired:mac-address-blacklist property of the setting
* Returns: the #NMSettingWired:mac-address-denylist property of the setting
*
* Since: 1.48
**/
const char *const *
nm_setting_wired_get_mac_address_blacklist(NMSettingWired *setting)
nm_setting_wired_get_mac_address_denylist(NMSettingWired *setting)
{
g_return_val_if_fail(NM_IS_SETTING_WIRED(setting), NULL);
return nm_strvarray_get_strv_notnull(
NM_SETTING_WIRED_GET_PRIVATE(setting)->mac_address_blacklist.arr,
NM_SETTING_WIRED_GET_PRIVATE(setting)->mac_address_denylist.arr,
NULL);
}
/**
* nm_setting_wired_get_num_mac_blacklist_items:
* nm_setting_wired_get_num_mac_denylist_items:
* @setting: the #NMSettingWired
*
* Returns: the number of blacklisted MAC addresses
* Returns: the number of denylisted MAC addresses
*
* Since: 1.48
**/
guint32
nm_setting_wired_get_num_mac_blacklist_items(NMSettingWired *setting)
guint
nm_setting_wired_get_num_mac_denylist_items(NMSettingWired *setting)
{
g_return_val_if_fail(NM_IS_SETTING_WIRED(setting), 0);
return nm_g_array_len(NM_SETTING_WIRED_GET_PRIVATE(setting)->mac_address_blacklist.arr);
return nm_g_array_len(NM_SETTING_WIRED_GET_PRIVATE(setting)->mac_address_denylist.arr);
}
/**
* nm_setting_wired_get_mac_blacklist_item:
* nm_setting_wired_get_mac_denylist_item:
* @setting: the #NMSettingWired
* @idx: the zero-based index of the MAC address entry
*
* Since 1.46, access at index "len" is allowed and returns NULL.
*
* Returns: the blacklisted MAC address string (hex-digits-and-colons notation)
* Returns: the denylisted MAC address string (hex-digits-and-colons notation)
* at index @idx
*
* Since: 1.48
**/
const char *
nm_setting_wired_get_mac_blacklist_item(NMSettingWired *setting, guint32 idx)
nm_setting_wired_get_mac_denylist_item(NMSettingWired *setting, guint idx)
{
g_return_val_if_fail(NM_IS_SETTING_WIRED(setting), NULL);
return nm_strvarray_get_idxnull_or_greturn(
NM_SETTING_WIRED_GET_PRIVATE(setting)->mac_address_blacklist.arr,
NM_SETTING_WIRED_GET_PRIVATE(setting)->mac_address_denylist.arr,
idx);
}
/**
* nm_setting_wired_add_mac_blacklist_item:
* nm_setting_wired_add_mac_denylist_item:
* @setting: the #NMSettingWired
* @mac: the MAC address string (hex-digits-and-colons notation) to blacklist
* @mac: the MAC address string (hex-digits-and-colons notation) to denylist
*
* Adds a new MAC address to the #NMSettingWired:mac-address-blacklist property.
* Adds a new MAC address to the #NMSettingWired:mac-address-denylist property.
*
* Returns: %TRUE if the MAC address was added; %FALSE if the MAC address
* is invalid or was already present
*
* Since: 1.48
**/
gboolean
nm_setting_wired_add_mac_blacklist_item(NMSettingWired *setting, const char *mac)
nm_setting_wired_add_mac_denylist_item(NMSettingWired *setting, const char *mac)
{
NMSettingWiredPrivate *priv;
guint8 mac_bin[ETH_ALEN];
@ -352,56 +359,60 @@ nm_setting_wired_add_mac_blacklist_item(NMSettingWired *setting, const char *mac
return FALSE;
priv = NM_SETTING_WIRED_GET_PRIVATE(setting);
len = nm_g_array_len(priv->mac_address_blacklist.arr);
len = nm_g_array_len(priv->mac_address_denylist.arr);
for (i = 0; i < len; i++) {
candidate = nm_g_array_index(priv->mac_address_blacklist.arr, char *, i);
candidate = nm_g_array_index(priv->mac_address_denylist.arr, char *, i);
if (nm_utils_hwaddr_matches(mac_bin, ETH_ALEN, candidate, -1))
return FALSE;
}
nm_g_array_append_simple(nm_strvarray_ensure(&priv->mac_address_blacklist.arr),
nm_g_array_append_simple(nm_strvarray_ensure(&priv->mac_address_denylist.arr),
nm_utils_hwaddr_ntoa(mac_bin, ETH_ALEN));
_notify(setting, PROP_MAC_ADDRESS_BLACKLIST);
_notify(setting, PROP_MAC_ADDRESS_DENYLIST);
return TRUE;
}
/**
* nm_setting_wired_remove_mac_blacklist_item:
* nm_setting_wired_remove_mac_denylist_item:
* @setting: the #NMSettingWired
* @idx: index number of the MAC address
*
* Removes the MAC address at index @idx from the blacklist.
* Removes the MAC address at index @idx from the denylist.
*
* Since: 1.48
**/
void
nm_setting_wired_remove_mac_blacklist_item(NMSettingWired *setting, guint32 idx)
nm_setting_wired_remove_mac_denylist_item(NMSettingWired *setting, guint idx)
{
NMSettingWiredPrivate *priv;
g_return_if_fail(NM_IS_SETTING_WIRED(setting));
priv = NM_SETTING_WIRED_GET_PRIVATE(setting);
if (!priv->mac_address_blacklist.arr) {
if (!priv->mac_address_denylist.arr) {
return;
}
g_return_if_fail(idx < priv->mac_address_blacklist.arr->len);
g_return_if_fail(idx < priv->mac_address_denylist.arr->len);
g_array_remove_index(priv->mac_address_blacklist.arr, idx);
_notify(setting, PROP_MAC_ADDRESS_BLACKLIST);
g_array_remove_index(priv->mac_address_denylist.arr, idx);
_notify(setting, PROP_MAC_ADDRESS_DENYLIST);
}
/**
* nm_setting_wired_remove_mac_blacklist_item_by_value:
* nm_setting_wired_remove_mac_denylist_item_by_value:
* @setting: the #NMSettingWired
* @mac: the MAC address string (hex-digits-and-colons notation) to remove from
* the blacklist
* the denylist
*
* Removes the MAC address @mac from the blacklist.
* Removes the MAC address @mac from the denylist.
*
* Returns: %TRUE if the MAC address was found and removed; %FALSE if it was not.
*
* Since: 1.48
**/
gboolean
nm_setting_wired_remove_mac_blacklist_item_by_value(NMSettingWired *setting, const char *mac)
nm_setting_wired_remove_mac_denylist_item_by_value(NMSettingWired *setting, const char *mac)
{
NMSettingWiredPrivate *priv;
guint8 mac_bin[ETH_ALEN];
@ -415,12 +426,12 @@ nm_setting_wired_remove_mac_blacklist_item_by_value(NMSettingWired *setting, con
return FALSE;
priv = NM_SETTING_WIRED_GET_PRIVATE(setting);
if (priv->mac_address_blacklist.arr) {
for (i = 0; i < priv->mac_address_blacklist.arr->len; i++) {
candidate = nm_g_array_index(priv->mac_address_blacklist.arr, char *, i);
if (priv->mac_address_denylist.arr) {
for (i = 0; i < priv->mac_address_denylist.arr->len; i++) {
candidate = nm_g_array_index(priv->mac_address_denylist.arr, char *, i);
if (nm_utils_hwaddr_matches(mac_bin, ETH_ALEN, candidate, -1)) {
g_array_remove_index(priv->mac_address_blacklist.arr, i);
_notify(setting, PROP_MAC_ADDRESS_BLACKLIST);
g_array_remove_index(priv->mac_address_denylist.arr, i);
_notify(setting, PROP_MAC_ADDRESS_DENYLIST);
return TRUE;
}
}
@ -429,19 +440,187 @@ nm_setting_wired_remove_mac_blacklist_item_by_value(NMSettingWired *setting, con
return FALSE;
}
/**
* nm_setting_wired_clear_mac_denylist_items:
* @setting: the #NMSettingWired
*
* Removes all denylisted MAC addresses.
*
* Since: 1.48
**/
void
nm_setting_wired_clear_mac_denylist_items(NMSettingWired *setting)
{
g_return_if_fail(NM_IS_SETTING_WIRED(setting));
if (nm_strvarray_clear(&NM_SETTING_WIRED_GET_PRIVATE(setting)->mac_address_denylist.arr))
_notify(setting, PROP_MAC_ADDRESS_DENYLIST);
}
/**
* nm_setting_wired_get_mac_address_blacklist:
* @setting: the #NMSettingWired
*
* Returns: the #NMSettingWired:mac-address-blacklist property of the setting
*
* Deprecated: 1.48. Use nm_setting_wired_get_mac_address_denylist() instead.
**/
const char *const *
nm_setting_wired_get_mac_address_blacklist(NMSettingWired *setting)
{
return nm_setting_wired_get_mac_address_denylist(setting);
}
/**
* nm_setting_wired_get_num_mac_blacklist_items:
* @setting: the #NMSettingWired
*
* Returns: the number of blacklisted MAC addresses
*
* Deprecated: 1.48. Use nm_setting_wired_get_num_mac_denylist_items() instead.
**/
guint32
nm_setting_wired_get_num_mac_blacklist_items(NMSettingWired *setting)
{
return nm_setting_wired_get_num_mac_denylist_items(setting);
}
/**
* nm_setting_wired_get_mac_blacklist_item:
* @setting: the #NMSettingWired
* @idx: the zero-based index of the MAC address entry
*
* Since 1.48, access at index "len" is allowed and returns NULL.
*
* Returns: the blacklisted MAC address string (hex-digits-and-colons notation)
* at index @idx
*
* Deprecated: 1.48. Use nm_setting_wired_get_mac_denylist_item() instead.
**/
const char *
nm_setting_wired_get_mac_blacklist_item(NMSettingWired *setting, guint32 idx)
{
return nm_setting_wired_get_mac_denylist_item(setting, idx);
}
/**
* nm_setting_wired_add_mac_blacklist_item:
* @setting: the #NMSettingWired
* @mac: the MAC address string (hex-digits-and-colons notation) to blacklist
*
* Adds a new MAC address to the #NMSettingWired:mac-address-blacklist property.
*
* Returns: %TRUE if the MAC address was added; %FALSE if the MAC address
* is invalid or was already present
*
* Deprecated: 1.48. Use nm_setting_wired_add_mac_denylist_item() instead.
**/
gboolean
nm_setting_wired_add_mac_blacklist_item(NMSettingWired *setting, const char *mac)
{
return nm_setting_wired_add_mac_denylist_item(setting, mac);
}
/**
* nm_setting_wired_remove_mac_blacklist_item:
* @setting: the #NMSettingWired
* @idx: index number of the MAC address
*
* Removes the MAC address at index @idx from the blacklist.
*
* Deprecated: 1.48. Use nm_setting_wired_remove_mac_denylist_item() instead.
**/
void
nm_setting_wired_remove_mac_blacklist_item(NMSettingWired *setting, guint32 idx)
{
return nm_setting_wired_remove_mac_denylist_item(setting, idx);
}
/**
* nm_setting_wired_remove_mac_blacklist_item_by_value:
* @setting: the #NMSettingWired
* @mac: the MAC address string (hex-digits-and-colons notation) to remove from
* the blacklist
*
* Removes the MAC address @mac from the blacklist.
*
* Returns: %TRUE if the MAC address was found and removed; %FALSE if it was not.
*
* Deprecated: 1.48. Use nm_setting_wired_remove_mac_denylist_item_by_value() instead.
**/
gboolean
nm_setting_wired_remove_mac_blacklist_item_by_value(NMSettingWired *setting, const char *mac)
{
return nm_setting_wired_remove_mac_denylist_item_by_value(setting, mac);
}
/**
* nm_setting_wired_clear_mac_blacklist_items:
* @setting: the #NMSettingWired
*
* Removes all blacklisted MAC addresses.
*
* Deprecated: 1.48. Use nm_setting_wired_clear_mac_denylist_items() instead.
**/
void
nm_setting_wired_clear_mac_blacklist_items(NMSettingWired *setting)
{
g_return_if_fail(NM_IS_SETTING_WIRED(setting));
return nm_setting_wired_clear_mac_denylist_items(setting);
}
if (nm_strvarray_clear(&NM_SETTING_WIRED_GET_PRIVATE(setting)->mac_address_blacklist.arr))
_notify(setting, PROP_MAC_ADDRESS_BLACKLIST);
gboolean
_nm_setting_wired_mac_blacklist_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
const gchar **mac_blacklist;
if (!_nm_setting_use_legacy_property(setting,
connection_dict,
NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST,
NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST)) {
*out_is_modified = FALSE;
return TRUE;
}
mac_blacklist = g_variant_get_strv(value, NULL);
g_object_set(setting, NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, mac_blacklist, NULL);
return TRUE;
}
gboolean
_nm_setting_wired_mac_denylist_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
{
const gchar **mac_denylist;
if (!_nm_setting_use_legacy_property(setting,
connection_dict,
NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST,
NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST)) {
*out_is_modified = FALSE;
return TRUE;
}
mac_denylist = g_variant_get_strv(value, NULL);
g_object_set(setting, NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST, mac_denylist, NULL);
return TRUE;
}
GVariant *
_nm_setting_wired_mac_denylist_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
{
const char *const *mac_denylist;
/* FIXME: `mac-address-denylist` is an alias of `mac-address-blacklist` property.
* Serializing the property to the clients would break them as they won't
* be able to drop it if they are not aware of the existance of
* `mac-address-denylist`. In order to give them time to adapt their code,
* NetworkManager is not serializing `mac-address-denylist` on DBus.
*/
if (_nm_utils_is_manager_process) {
return NULL;
}
mac_denylist = nm_setting_wired_get_mac_address_denylist(NM_SETTING_WIRED(setting));
return g_variant_new_strv(mac_denylist, -1);
}
/**
@ -820,9 +999,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
return FALSE;
}
if (priv->mac_address_blacklist.arr) {
for (i = 0; i < priv->mac_address_blacklist.arr->len; i++) {
const char *mac = nm_g_array_index(priv->mac_address_blacklist.arr, const char *, i);
if (priv->mac_address_denylist.arr) {
for (i = 0; i < priv->mac_address_denylist.arr->len; i++) {
const char *mac = nm_g_array_index(priv->mac_address_denylist.arr, const char *, i);
if (!nm_utils_hwaddr_valid(mac, ETH_ALEN)) {
g_set_error(error,
@ -833,7 +1012,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
g_prefix_error(error,
"%s.%s: ",
NM_SETTING_WIRED_SETTING_NAME,
NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST);
NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST);
return FALSE;
}
}
@ -1151,6 +1330,7 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS(klass);
NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
GArray *properties_override = _nm_sett_info_property_override_create_array();
guint prop_idx;
object_class->get_property = get_property;
object_class->set_property = set_property;
@ -1461,16 +1641,67 @@ nm_setting_wired_class_init(NMSettingWiredClass *klass)
* example: HWADDR_BLACKLIST="00:22:68:11:69:08 00:11:22:11:44:55"
* ---end---
*/
_nm_setting_property_define_direct_strv(properties_override,
obj_properties,
NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST,
PROP_MAC_ADDRESS_BLACKLIST,
NM_SETTING_PARAM_FUZZY_IGNORE,
NULL,
NMSettingWiredPrivate,
mac_address_blacklist,
.direct_set_strv_normalize_hwaddr = TRUE,
.direct_strv_not_null = TRUE);
prop_idx = _nm_setting_property_define_direct_strv(
properties_override,
obj_properties,
NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST,
PROP_MAC_ADDRESS_BLACKLIST,
NM_SETTING_PARAM_FUZZY_IGNORE,
NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_STRING_ARRAY,
.direct_type = NM_VALUE_TYPE_STRV,
.compare_fcn = _nm_setting_property_compare_fcn_direct,
.to_dbus_fcn = _nm_setting_property_to_dbus_fcn_direct,
.from_dbus_fcn =
_nm_setting_wired_mac_blacklist_from_dbus, ),
NMSettingWiredPrivate,
mac_address_denylist,
.direct_set_strv_normalize_hwaddr = TRUE,
.direct_strv_not_null = TRUE,
.direct_is_aliased_field = TRUE,
.is_deprecated = TRUE);
/**
* NMSettingWired:mac-address-denylist:
*
* If specified, this connection will never apply to the Ethernet device
* whose permanent MAC address matches an address in the list. Each MAC
* address is in the standard hex-digits-and-colons notation
* (00:11:22:33:44:55).
**/
/* ---keyfile---
* property: mac-address-denylist
* format: list of MACs (separated with semicolons)
* description: MAC address denylist.
* example: mac-address-denylist= 00:22:68:12:79:A6;00:22:68:12:79:78
* ---end---
*/
/* ---ifcfg-rh---
* property: mac-address-denylist
* variable: HWADDR_BLACKLIST(+)
* description: It denies usage of the connection for any device whose address
* is listed.
* example: HWADDR_BLACKLIST="00:22:68:11:69:08 00:11:22:11:44:55"
* ---end---
*/
_nm_setting_property_define_direct_strv(
properties_override,
obj_properties,
NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST,
PROP_MAC_ADDRESS_DENYLIST,
NM_SETTING_PARAM_FUZZY_IGNORE,
NM_SETT_INFO_PROPERT_TYPE_DBUS(G_VARIANT_TYPE_STRING_ARRAY,
.direct_type = NM_VALUE_TYPE_STRV,
.compare_fcn = _nm_setting_property_compare_fcn_direct,
.to_dbus_fcn = _nm_setting_wired_mac_denylist_to_dbus,
.from_dbus_fcn = _nm_setting_wired_mac_denylist_from_dbus, ),
NMSettingWiredPrivate,
mac_address_denylist,
.direct_set_strv_normalize_hwaddr = TRUE,
.direct_strv_not_null = TRUE,
.direct_also_notify = obj_properties[PROP_MAC_ADDRESS_BLACKLIST], );
nm_g_array_index(properties_override, NMSettInfoProperty, prop_idx).direct_also_notify =
obj_properties[PROP_MAC_ADDRESS_DENYLIST];
/**
* NMSettingWired:mtu:

View File

@ -2733,7 +2733,8 @@ _nm_setting_property_compare_fcn_direct(_NM_SETT_INFO_PROP_COMPARE_FCN_ARGS _nm_
_nm_setting_connection_controller_to_dbus,
_nm_setting_connection_port_type_to_dbus,
_nm_setting_connection_autoconnect_ports_to_dbus,
_nm_setting_wireless_mac_denylist_to_dbus));
_nm_setting_wireless_mac_denylist_to_dbus,
_nm_setting_wired_mac_denylist_to_dbus));
if (!property_info->param_spec)
return nm_assert_unreachable_val(NM_TERNARY_DEFAULT);

View File

@ -4048,6 +4048,7 @@ test_connection_diff_a_only(void)
{NM_SETTING_WIRED_CLONED_MAC_ADDRESS, NM_SETTING_DIFF_RESULT_IN_A},
{NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK, NM_SETTING_DIFF_RESULT_IN_A},
{NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, NM_SETTING_DIFF_RESULT_IN_A},
{NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST, NM_SETTING_DIFF_RESULT_IN_A},
{NM_SETTING_WIRED_MTU, NM_SETTING_DIFF_RESULT_IN_A},
{NM_SETTING_WIRED_S390_SUBCHANNELS, NM_SETTING_DIFF_RESULT_IN_A},
{NM_SETTING_WIRED_S390_NETTYPE, NM_SETTING_DIFF_RESULT_IN_A},

View File

@ -4734,7 +4734,8 @@ test_setting_metadata(void)
g_assert(g_variant_type_equal(sip->property_type->dbus_type, "as"));
g_assert(NM_IN_SET(sip->property_type->to_dbus_fcn,
_nm_setting_property_to_dbus_fcn_direct,
_nm_setting_wireless_mac_denylist_to_dbus));
_nm_setting_wireless_mac_denylist_to_dbus,
_nm_setting_wired_mac_denylist_to_dbus));
g_assert(sip->param_spec);
g_assert(sip->param_spec->value_type == G_TYPE_STRV);
} else

View File

@ -73,6 +73,7 @@ typedef enum /*< flags >*/ {
#define NM_SETTING_WIRED_CLONED_MAC_ADDRESS "cloned-mac-address"
#define NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK "generate-mac-address-mask"
#define NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST "mac-address-blacklist"
#define NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST "mac-address-denylist"
#define NM_SETTING_WIRED_MTU "mtu"
#define NM_SETTING_WIRED_S390_SUBCHANNELS "s390-subchannels"
#define NM_SETTING_WIRED_S390_NETTYPE "s390-nettype"
@ -99,14 +100,30 @@ NMTernary nm_setting_wired_get_accept_all_mac_addresses(NMSettingWired *setting)
NM_AVAILABLE_IN_1_4
const char *nm_setting_wired_get_generate_mac_address_mask(NMSettingWired *setting);
NM_DEPRECATED_IN_1_48
const char *const *nm_setting_wired_get_mac_address_blacklist(NMSettingWired *setting);
guint32 nm_setting_wired_get_num_mac_blacklist_items(NMSettingWired *setting);
const char *nm_setting_wired_get_mac_blacklist_item(NMSettingWired *setting, guint32 idx);
NM_DEPRECATED_IN_1_48
guint32 nm_setting_wired_get_num_mac_blacklist_items(NMSettingWired *setting);
NM_DEPRECATED_IN_1_48
const char *nm_setting_wired_get_mac_blacklist_item(NMSettingWired *setting, guint32 idx);
NM_DEPRECATED_IN_1_48
gboolean nm_setting_wired_add_mac_blacklist_item(NMSettingWired *setting, const char *mac);
void nm_setting_wired_remove_mac_blacklist_item(NMSettingWired *setting, guint32 idx);
NM_DEPRECATED_IN_1_48
void nm_setting_wired_remove_mac_blacklist_item(NMSettingWired *setting, guint32 idx);
NM_DEPRECATED_IN_1_48
gboolean nm_setting_wired_remove_mac_blacklist_item_by_value(NMSettingWired *setting,
const char *mac);
void nm_setting_wired_clear_mac_blacklist_items(NMSettingWired *setting);
NM_DEPRECATED_IN_1_48
void nm_setting_wired_clear_mac_blacklist_items(NMSettingWired *setting);
const char *const *nm_setting_wired_get_mac_address_denylist(NMSettingWired *setting);
guint32 nm_setting_wired_get_num_mac_denylist_items(NMSettingWired *setting);
const char *nm_setting_wired_get_mac_denylist_item(NMSettingWired *setting, guint32 idx);
gboolean nm_setting_wired_add_mac_denylist_item(NMSettingWired *setting, const char *mac);
void nm_setting_wired_remove_mac_denylist_item(NMSettingWired *setting, guint32 idx);
gboolean nm_setting_wired_remove_mac_denylist_item_by_value(NMSettingWired *setting,
const char *mac);
void nm_setting_wired_clear_mac_denylist_items(NMSettingWired *setting);
guint32 nm_setting_wired_get_mtu(NMSettingWired *setting);

View File

@ -8059,6 +8059,7 @@ static const NMMetaPropertyInfo *const property_infos_WIRED[] = {
),
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST,
.property_type = &_pt_multilist,
.hide_if_default = TRUE,
.property_typ_data = DEFINE_PROPERTY_TYP_DATA (
PROPERTY_TYP_DATA_SUBTYPE (multilist,
.get_num_fcn_u32 = MULTILIST_GET_NUM_FCN_U32 (NMSettingWired, nm_setting_wired_get_num_mac_blacklist_items),
@ -8071,6 +8072,20 @@ static const NMMetaPropertyInfo *const property_infos_WIRED[] = {
.list_items_doc_format = NM_META_PROPERTY_TYPE_FORMAT_MAC,
),
),
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST,
.property_type = &_pt_multilist,
.property_typ_data = DEFINE_PROPERTY_TYP_DATA (
PROPERTY_TYP_DATA_SUBTYPE (multilist,
.get_num_fcn_u = MULTILIST_GET_NUM_FCN_U (NMSettingWired, nm_setting_wired_get_num_mac_denylist_items),
.add_fcn = MULTILIST_ADD_FCN (NMSettingWired, nm_setting_wired_add_mac_denylist_item),
.remove_by_idx_fcn_u = MULTILIST_REMOVE_BY_IDX_FCN_U (NMSettingWired, nm_setting_wired_remove_mac_denylist_item),
.remove_by_value_fcn = MULTILIST_REMOVE_BY_VALUE_FCN (NMSettingWired, nm_setting_wired_remove_mac_denylist_item_by_value),
.validate2_fcn = _multilist_validate2_fcn_mac_addr,
.strsplit_plain = TRUE,
),
.list_items_doc_format = NM_META_PROPERTY_TYPE_FORMAT_MAC,
),
),
PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MTU,
.is_cli_option = TRUE,
.property_alias = "mtu",

View File

@ -394,6 +394,7 @@
#define DESCRIBE_DOC_NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK N_("With \"cloned-mac-address\" setting \"random\" or \"stable\", by default all bits of the MAC address are scrambled and a locally-administered, unicast MAC address is created. This property allows to specify that certain bits are fixed. Note that the least significant bit of the first MAC address will always be unset to create a unicast MAC address. If the property is NULL, it is eligible to be overwritten by a default connection setting. If the value is still NULL or an empty string, the default is to create a locally-administered, unicast MAC address. If the value contains one MAC address, this address is used as mask. The set bits of the mask are to be filled with the current MAC address of the device, while the unset bits are subject to randomization. Setting \"FE:FF:FF:00:00:00\" means to preserve the OUI of the current MAC address and only randomize the lower 3 bytes using the \"random\" or \"stable\" algorithm. If the value contains one additional MAC address after the mask, this address is used instead of the current MAC address to fill the bits that shall not be randomized. For example, a value of \"FE:FF:FF:00:00:00 68:F7:28:00:00:00\" will set the OUI of the MAC address to 68:F7:28, while the lower bits are randomized. A value of \"02:00:00:00:00:00 00:00:00:00:00:00\" will create a fully scrambled globally-administered, burned-in MAC address. If the value contains more than one additional MAC addresses, one of them is chosen randomly. For example, \"02:00:00:00:00:00 00:00:00:00:00:00 02:00:00:00:00:00\" will create a fully scrambled MAC address, randomly locally or globally administered.")
#define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS N_("If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing).")
#define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST N_("If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list. Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55).")
#define DESCRIBE_DOC_NM_SETTING_WIRED_MAC_ADDRESS_DENYLIST N_("If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list. Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55).")
#define DESCRIBE_DOC_NM_SETTING_WIRED_MTU N_("If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames.")
#define DESCRIBE_DOC_NM_SETTING_WIRED_PORT N_("Specific port type to use if the device supports multiple attachment methods. One of \"tp\" (Twisted Pair), \"aui\" (Attachment Unit Interface), \"bnc\" (Thin Ethernet) or \"mii\" (Media Independent Interface). If the device supports only one port type, this setting is ignored.")
#define DESCRIBE_DOC_NM_SETTING_WIRED_S390_NETTYPE N_("s390 network device type; one of \"qeth\", \"lcs\", or \"ctc\", representing the different types of virtual network devices available on s390 systems.")

View File

@ -363,6 +363,9 @@
<property name="mac-address-blacklist"
nmcli-description="If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list. Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55)."
format="list of MAC addresses" />
<property name="mac-address-denylist"
nmcli-description="If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list. Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55)."
format="list of MAC addresses" />
<property name="mtu"
alias="mtu"
nmcli-description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames."

File diff suppressed because it is too large Load Diff

View File

@ -54,6 +54,9 @@ ALIASED_PROPERTIES = {
NM.SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST, "mac-address-denylist"
)
],
NM.SETTING_WIRED_SETTING_NAME: [
AliasedProperty(NM.SETTING_WIRED_MAC_ADDRESS_BLACKLIST, "mac-address-denylist")
],
}
###############################################################################