#include "udev.h"
#include "udev_rules.h"
#include "udevd.h"
+#include "udev_selinux.h"
static struct udev_rules rules;
static int udevd_sock = -1;
if (udev == NULL)
return -1;
strlcpy(udev->action, msg->action, sizeof(udev->action));
- sysfs_device_set_values(udev->dev, msg->devpath, msg->subsystem);
+ sysfs_device_set_values(udev->dev, msg->devpath, msg->subsystem, msg->driver);
udev->devt = msg->devt;
retval = udev_device_event(&rules, udev);
msg->devpath = &key[8];
else if (strncmp(key, "SUBSYSTEM=", 10) == 0)
msg->subsystem = &key[10];
+ else if (strncmp(key, "DRIVER=", 7) == 0)
+ msg->driver = &key[7];
else if (strncmp(key, "SEQNUM=", 7) == 0)
msg->seqnum = strtoull(&key[7], NULL, 10);
else if (strncmp(key, "PHYSDEVPATH=", 12) == 0)
static int init_udevd_socket(void)
{
struct sockaddr_un saddr;
- const int buffersize = 16 * 1024 * 1024;
socklen_t addrlen;
const int feature_on = 1;
int retval;
return -1;
}
- /* set receive buffersize */
- setsockopt(udevd_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize));
-
/* the bind takes care of ensuring only one copy running */
retval = bind(udevd_sock, (struct sockaddr *) &saddr, addrlen);
if (retval < 0) {
err("fatal, could not open /dev/null: %s", strerror(errno));
udev_config_init();
+ selinux_init();
dbg("version %s", UDEV_VERSION);
if (getuid() != 0) {