udev: repurpose ID_MM_DEVICE_IGNORE and new MM_FILTER_RULE_EXPLICIT_BLACKLIST
Until now the ID_MM_DEVICE_IGNORE udev tag was being used in the internal blacklist of devices shipped by ModemManager when running in either DEFAULT or PARANOID filter modes. The name of the tag is extremely misleading because it doesn't really make the full device be ignored, the tag only applied to TTY ports. This commit repurposes the tag so that it applies to ANY kind of port (e.g. TTY, NET, cdc-wdm...) and also to any kind of filter type (i.e. also applicable in STRICT mode). The internal blacklist shipped by ModemManager, which should NOT be used in STRICT mode, uses a new tag name, ID_MM_TTY_BLACKLIST. The new ID_MM_DEVICE_IGNORE tag is therefore much more usable and its name is really meaningful. If there are users or third-party projects adding their own udev rules with the ID_MM_DEVICE_IGNORE tag name, they should have no problem as the new rule is more restrictive than the old one.
This commit is contained in:

committed by
Aleksander Morgado

parent
07c8a2b4f6
commit
250639e3da
@@ -60,6 +60,13 @@ mm_filter_port (MMFilter *self,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* If the device is explicitly blacklisted, we ignore every port. */
|
||||
if ((self->priv->enabled_rules & MM_FILTER_RULE_EXPLICIT_BLACKLIST) &&
|
||||
(mm_kernel_device_get_global_property_as_boolean (port, ID_MM_DEVICE_IGNORE))) {
|
||||
mm_dbg ("[filter] (%s/%s): port filtered: device is blacklisted", subsystem, name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* If this is a virtual device, don't allow it */
|
||||
if ((self->priv->enabled_rules & MM_FILTER_RULE_VIRTUAL) &&
|
||||
(!mm_kernel_device_get_physdev_sysfs_path (port))) {
|
||||
@@ -92,8 +99,8 @@ mm_filter_port (MMFilter *self,
|
||||
|
||||
/* Ignore blacklisted tty devices. */
|
||||
if ((self->priv->enabled_rules & MM_FILTER_RULE_TTY_BLACKLIST) &&
|
||||
(mm_kernel_device_get_global_property_as_boolean (port, ID_MM_DEVICE_IGNORE))) {
|
||||
mm_dbg ("[filter] (%s/%s): port filtered: device is blacklisted", subsystem, name);
|
||||
(mm_kernel_device_get_global_property_as_boolean (port, ID_MM_TTY_BLACKLIST))) {
|
||||
mm_dbg ("[filter] (%s/%s): port filtered: tty is blacklisted", subsystem, name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -285,6 +292,7 @@ mm_filter_new (MMFilterRule enabled_rules,
|
||||
|
||||
mm_dbg ("[filter] created");
|
||||
mm_dbg ("[filter] explicit whitelist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_EXPLICIT_WHITELIST));
|
||||
mm_dbg ("[filter] explicit blacklist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_EXPLICIT_BLACKLIST));
|
||||
mm_dbg ("[filter] virtual devices forbidden: %s", RULE_ENABLED_STR (MM_FILTER_RULE_VIRTUAL));
|
||||
mm_dbg ("[filter] net devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_NET));
|
||||
mm_dbg ("[filter] cdc-wdm devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_CDC_WDM));
|
||||
|
Reference in New Issue
Block a user