Remove reference to device.h
[petitboot] / discover / udev.c
index 9c1b399cd7857a9d59c6bb1b4884a26bbd315c8a..6747e78a8064f7a04a5b377b3535a6a412658a71 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;
 };
 
@@ -58,7 +60,7 @@ static void parse_event_params(struct udev_event *event, char *buf, int len)
        }
 }
 
-static const char *event_param(struct udev_event *event, const char *name)
+const char *udev_event_param(struct udev_event *event, const char *name)
 {
        int i;
 
@@ -84,7 +86,7 @@ static void print_event(struct udev_event *event)
 
        for (i = 0; params[i]; i++)
                printf("\t%-12s => %s\n",
-                               params[i], event_param(event, params[i]));
+                               params[i], udev_event_param(event, params[i]));
 
 }
 
@@ -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));