filter: add filter for QRTR devices

Add support for devices using the subsystem "qrtr".
This commit is contained in:
Andrew Lassalle
2021-04-14 11:27:27 +02:00
committed by Aleksander Morgado
parent d2ffb47ec8
commit e24346128d
2 changed files with 27 additions and 13 deletions
+10
View File
@@ -178,6 +178,15 @@ mm_filter_port (MMFilter *self,
}
}
/* If this is a QRTR device, we always allow it. This check comes before
* checking for VIRTUAL since qrtr devices don't have a sysfs path, and the
* check for VIRTUAL will return FALSE. */
if ((self->priv->enabled_rules & MM_FILTER_RULE_QRTR) &&
g_str_equal (subsystem, "qrtr")) {
mm_obj_dbg (self, "(%s/%s) port allowed: qrtr device", subsystem, name);
return TRUE;
}
/* 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))) {
@@ -453,6 +462,7 @@ mm_filter_new (MMFilterRule enabled_rules,
mm_obj_dbg (self, " explicit whitelist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_EXPLICIT_WHITELIST));
mm_obj_dbg (self, " explicit blacklist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_EXPLICIT_BLACKLIST));
mm_obj_dbg (self, " plugin whitelist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_PLUGIN_WHITELIST));
mm_obj_dbg (self, " qrtr devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_QRTR));
mm_obj_dbg (self, " virtual devices forbidden: %s", RULE_ENABLED_STR (MM_FILTER_RULE_VIRTUAL));
mm_obj_dbg (self, " net devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_NET));
mm_obj_dbg (self, " usbmisc devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_USBMISC));
+17 -13
View File
@@ -50,25 +50,27 @@ typedef enum { /*< underscore_name=mm_filter_rule >*/
MM_FILTER_RULE_EXPLICIT_WHITELIST = 1 << 0,
MM_FILTER_RULE_EXPLICIT_BLACKLIST = 1 << 1,
MM_FILTER_RULE_PLUGIN_WHITELIST = 1 << 2,
MM_FILTER_RULE_VIRTUAL = 1 << 3,
MM_FILTER_RULE_NET = 1 << 4,
MM_FILTER_RULE_USBMISC = 1 << 5,
MM_FILTER_RULE_RPMSG = 1 << 6,
MM_FILTER_RULE_TTY = 1 << 7,
MM_FILTER_RULE_TTY_BLACKLIST = 1 << 8,
MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY = 1 << 9,
MM_FILTER_RULE_TTY_PLATFORM_DRIVER = 1 << 10,
MM_FILTER_RULE_TTY_DEFAULT_ALLOWED = 1 << 11,
MM_FILTER_RULE_TTY_DRIVER = 1 << 12,
MM_FILTER_RULE_TTY_ACM_INTERFACE = 1 << 13,
MM_FILTER_RULE_TTY_WITH_NET = 1 << 14,
MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN = 1 << 15,
MM_FILTER_RULE_QRTR = 1 << 3,
MM_FILTER_RULE_VIRTUAL = 1 << 4,
MM_FILTER_RULE_NET = 1 << 5,
MM_FILTER_RULE_USBMISC = 1 << 6,
MM_FILTER_RULE_RPMSG = 1 << 7,
MM_FILTER_RULE_TTY = 1 << 8,
MM_FILTER_RULE_TTY_BLACKLIST = 1 << 9,
MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY = 1 << 10,
MM_FILTER_RULE_TTY_PLATFORM_DRIVER = 1 << 11,
MM_FILTER_RULE_TTY_DEFAULT_ALLOWED = 1 << 12,
MM_FILTER_RULE_TTY_DRIVER = 1 << 13,
MM_FILTER_RULE_TTY_ACM_INTERFACE = 1 << 14,
MM_FILTER_RULE_TTY_WITH_NET = 1 << 15,
MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN = 1 << 16,
} MMFilterRule;
#define MM_FILTER_RULE_ALL \
(MM_FILTER_RULE_EXPLICIT_WHITELIST | \
MM_FILTER_RULE_EXPLICIT_BLACKLIST | \
MM_FILTER_RULE_PLUGIN_WHITELIST | \
MM_FILTER_RULE_QRTR | \
MM_FILTER_RULE_VIRTUAL | \
MM_FILTER_RULE_NET | \
MM_FILTER_RULE_USBMISC | \
@@ -104,6 +106,7 @@ typedef enum { /*< underscore_name=mm_filter_rule >*/
(MM_FILTER_RULE_EXPLICIT_WHITELIST | \
MM_FILTER_RULE_EXPLICIT_BLACKLIST | \
MM_FILTER_RULE_PLUGIN_WHITELIST | \
MM_FILTER_RULE_QRTR | \
MM_FILTER_RULE_VIRTUAL | \
MM_FILTER_RULE_NET | \
MM_FILTER_RULE_USBMISC | \
@@ -121,6 +124,7 @@ typedef enum { /*< underscore_name=mm_filter_rule >*/
(MM_FILTER_RULE_EXPLICIT_WHITELIST | \
MM_FILTER_RULE_EXPLICIT_BLACKLIST | \
MM_FILTER_RULE_PLUGIN_WHITELIST | \
MM_FILTER_RULE_QRTR | \
MM_FILTER_RULE_VIRTUAL | \
MM_FILTER_RULE_NET | \
MM_FILTER_RULE_USBMISC | \