UDEV_CTRL_START_EXEC_QUEUE,
UDEV_CTRL_RELOAD_RULES,
UDEV_CTRL_SET_ENV,
- UDEV_CTRL_SET_MAX_CHILDS,
- UDEV_CTRL_SET_MAX_CHILDS_RUNNING,
+ UDEV_CTRL_SET_CHILDREN_MAX,
UDEV_CTRL_SETTLE,
};
socklen_t addrlen;
};
-struct udev_ctrl *udev_ctrl_new_from_socket(struct udev *udev, const char *socket_path)
+static struct udev_ctrl *udev_ctrl_new(struct udev *udev)
{
struct udev_ctrl *uctrl;
return NULL;
uctrl->refcount = 1;
uctrl->udev = udev;
+ return uctrl;
+}
+
+struct udev_ctrl *udev_ctrl_new_from_socket(struct udev *udev, const char *socket_path)
+{
+ struct udev_ctrl *uctrl;
+
+ uctrl = udev_ctrl_new(udev);
+ if (uctrl == NULL)
+ return NULL;
uctrl->sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
if (uctrl->sock < 0) {
/* translate leading '@' to abstract namespace */
if (uctrl->saddr.sun_path[0] == '@')
uctrl->saddr.sun_path[0] = '\0';
+ return uctrl;
+}
+
+struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd)
+{
+ struct udev_ctrl *uctrl;
+
+ uctrl = udev_ctrl_new(udev);
+ if (uctrl == NULL)
+ return NULL;
+ uctrl->sock = fd;
return uctrl;
}
int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl)
{
int err;
- const int feature_on = 1;
-
- err= bind(uctrl->sock, (struct sockaddr *)&uctrl->saddr, uctrl->addrlen);
- if (err < 0) {
- err(uctrl->udev, "bind failed: %m\n");
- return err;
+ const int on = 1;
+
+ if (uctrl->addrlen > 0) {
+ err = bind(uctrl->sock, (struct sockaddr *)&uctrl->saddr, uctrl->addrlen);
+ if (err < 0) {
+ err(uctrl->udev, "bind failed: %m\n");
+ return err;
+ }
}
/* enable receiving of the sender credentials */
- setsockopt(uctrl->sock, SOL_SOCKET, SO_PASSCRED, &feature_on, sizeof(feature_on));
+ setsockopt(uctrl->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
return 0;
}
return ctrl_send(uctrl, UDEV_CTRL_SET_ENV, 0, key);
}
-int udev_ctrl_send_set_max_childs(struct udev_ctrl *uctrl, int count)
+int udev_ctrl_send_set_children_max(struct udev_ctrl *uctrl, int count)
{
- return ctrl_send(uctrl, UDEV_CTRL_SET_MAX_CHILDS, count, NULL);
+ return ctrl_send(uctrl, UDEV_CTRL_SET_CHILDREN_MAX, count, NULL);
}
int udev_ctrl_send_settle(struct udev_ctrl *uctrl)
return NULL;
}
-int udev_ctrl_get_set_max_childs(struct udev_ctrl_msg *ctrl_msg)
+int udev_ctrl_get_set_children_max(struct udev_ctrl_msg *ctrl_msg)
{
- if (ctrl_msg->ctrl_msg_wire.type == UDEV_CTRL_SET_MAX_CHILDS)
+ if (ctrl_msg->ctrl_msg_wire.type == UDEV_CTRL_SET_CHILDREN_MAX)
return ctrl_msg->ctrl_msg_wire.intval;
return -1;
}