+ addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path+1) + 1;
+
+ memset(&msg, 0x00, sizeof(struct hotplug_msg));
+ strcpy(msg.magic, UDEV_MAGIC);
+ msg.seqnum = seq;
+ strfieldcpy(msg.action, action);
+ strfieldcpy(msg.devpath, devpath);
+ strfieldcpy(msg.subsystem, subsystem);
+
+ /* If we can't send, try to start daemon and resend message */
+ loop = UDEVSEND_CONNECT_RETRY;
+ while (loop--) {
+ retval = sendto(sock, &msg, sizeof(struct hotplug_msg), 0,
+ (struct sockaddr *)&saddr, addrlen);
+ if (retval != -1) {
+ retval = 0;
+ goto exit;
+ }
+
+ if (errno != ECONNREFUSED) {
+ dbg("error sending message");
+ goto fallback;
+ }