#include "udevd.h"
#include "logging.h"
+#ifdef LOG
unsigned char logname[42];
-
-int log_ok(void)
+void log_message (int level, const char *format, ...)
{
- return 1;
+ va_list args;
+
+ va_start(args, format);
+ vsyslog(level, format, args);
+ va_end(args);
}
+#endif
static inline char *get_action(void)
{
struct sockaddr_un saddr;
socklen_t addrlen;
int started_daemon = 0;
- struct iovec iov;
- struct msghdr smsg;
- char cred_msg[CMSG_SPACE(sizeof(struct ucred))];
- struct cmsghdr *cmsg;
- struct ucred *cred;
-
-
#ifdef DEBUG
init_logging("udevsend");
#endif
+ dbg("version %s", UDEV_VERSION);
subsystem = argv[1];
if (subsystem == NULL) {
dbg("no subsystem");
goto exit;
}
+ dbg("subsystem = '%s'", subsystem);
devpath = get_devpath();
if (devpath == NULL) {
dbg("no devpath");
goto exit;
}
+ dbg("DEVPATH = '%s'", devpath);
action = get_action();
if (action == NULL) {
dbg("no action");
goto exit;
}
+ dbg("ACTION = '%s'", action);
seqnum = get_seqnum();
if (seqnum == NULL)
seq = -1;
else
seq = atoi(seqnum);
+ dbg("SEQNUM = '%d'", seq);
sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
if (sock == -1) {
size = build_hotplugmsg(&msg, action, devpath, subsystem, seq);
- /* prepare message with credentials to authenticate ourself */
- iov.iov_base = &msg;
- iov.iov_len = size;
-
- smsg.msg_name = &saddr;
- smsg.msg_namelen = addrlen;
- smsg.msg_iov = &iov;
- smsg.msg_iovlen = 1;
- smsg.msg_control = cred_msg;
- smsg.msg_controllen = CMSG_LEN(sizeof(struct ucred));;
- smsg.msg_flags = 0;
-
- cmsg = CMSG_FIRSTHDR(&smsg);
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_CREDENTIALS;
- cmsg->cmsg_len = sizeof(cred_msg);
- cred = (struct ucred *) CMSG_DATA(cmsg);
- cred->uid = getuid();
- cred->gid = getgid();
- cred->pid = getpid();
- cred->pid = getpid();
-
/* If we can't send, try to start daemon and resend message */
loop = UDEVSEND_CONNECT_RETRY;
while (loop--) {
- retval = sendmsg(sock, &smsg, 0);
+ retval = sendto(sock, &msg, size, 0, (struct sockaddr *)&saddr, addrlen);
if (retval != -1) {
retval = 0;
goto close_and_exit;