+
+ /* apply SECLABEL{$module}=$label */
+ udev_list_entry_foreach(entry, udev_list_get_entry(seclabel_list)) {
+ const char *name, *label;
+
+ name = udev_list_entry_get_name(entry);
+ label = udev_list_entry_get_value(entry);
+
+ if (streq(name, "selinux")) {
+ /* FIXME: hook up libselinux */
+ log_error("SECLABEL: failed to set selinux label '%s'", label);
+
+ } else if (streq(name, "smack")) {
+#ifdef HAVE_XATTR
+ if (lsetxattr(devnode, "security.SMACK64", label, strlen(label), 0) < 0)
+ log_error("SECLABEL: failed to set SMACK label '%s'", label);
+ else
+ log_debug("SECLABEL: set SMACK label '%s'", label);
+#endif
+
+ } else
+ log_error("SECLABEL: unknown subsystem, ignoring '%s'='%s'", name, label);
+ }