]> git.ozlabs.org Git - petitboot/blobdiff - discover/udev.c
Hook up udev events to device handler
[petitboot] / discover / udev.c
index 9c1b399cd7857a9d59c6bb1b4884a26bbd315c8a..16d050e7702aae28de901f7ed969494804c3d129 100644 (file)
 #include "log.h"
 #include "waiter.h"
 #include "pb-discover.h"
+#include "device-handler.h"
 
 #define PBOOT_DEVICE_SOCKET "/tmp/petitboot.udev"
 
 #define max(a, b) ((a) > (b) ? (a) : (b))
 
 struct udev {
+       struct device_handler *handler;
        int socket;
 };
 
@@ -132,6 +134,8 @@ static void handle_udev_message(struct udev *udev, char *buf, int len)
 
        print_event(event);
 
+       device_handler_event(udev->handler, event);
+
        talloc_free(event);
 
        return;
@@ -168,7 +172,7 @@ static int udev_destructor(void *p)
        return 0;
 }
 
-struct udev *udev_init(void)
+struct udev *udev_init(struct device_handler *handler)
 {
        struct sockaddr_un addr;
        struct udev *udev;
@@ -177,6 +181,8 @@ struct udev *udev_init(void)
 
        udev = talloc(NULL, struct udev);
 
+       udev->handler = handler;
+
        udev->socket = socket(PF_UNIX, SOCK_DGRAM, 0);
        if (udev->socket < 0) {
                pb_log("Error creating udev socket: %s\n", strerror(errno));