struct event;
struct device;
struct waitset;
-
-enum conf_method {
- CONF_METHOD_LOCAL_FILE, /* discover by looking at local files on this
- block device */
-
- CONF_METHOD_DHCP, /* configuration from a DHCP response */
-
- CONF_METHOD_UNKNOWN = -1,
-};
-
+struct config;
struct discover_device {
struct device *device;
const char *uuid;
const char *label;
- const char *mount_path;
+ char *mount_path;
const char *device_path;
+ struct ramdisk_device *ramdisk;
+ bool mounted;
+ bool mounted_rw;
+ bool unmount;
bool notified;
struct discover_device *device;
struct list boot_options;
struct pb_url *conf_url;
- enum conf_method method;
+ struct network *network;
+ void *test_data;
+};
+
+struct ramdisk_device {
+ const char *path;
+ char *snapshot;
+ char *origin;
+ char *base;
+ uint64_t sectors;
};
struct device_handler *device_handler_init(struct discover_server *server,
const char *id);
void device_handler_add_device(struct device_handler *handler,
struct discover_device *device);
+void device_handler_add_ramdisk(struct device_handler *handler,
+ const char *path);
+struct ramdisk_device *device_handler_get_ramdisk(
+ struct device_handler *handler);
+void device_handler_release_ramdisk(struct discover_device *device);
int device_handler_discover(struct device_handler *handler,
- struct discover_device *dev, enum conf_method method);
+ struct discover_device *dev);
+int device_handler_dhcp(struct device_handler *handler,
+ struct discover_device *dev, struct event *event);
int device_handler_conf(struct device_handler *handler,
- struct discover_device *dev, struct pb_url *url,
- enum conf_method method);
+ struct discover_device *dev, struct pb_url *url);
void device_handler_remove(struct device_handler *handler,
struct discover_device *device);
const char *label);
struct discover_device *device_lookup_by_id(struct device_handler *handler,
const char *id);
+struct discover_device *device_lookup_by_serial(
+ struct device_handler *device_handler,
+ const char *serial);
void discover_device_set_param(struct discover_device *device,
const char *name, const char *value);
void device_handler_boot(struct device_handler *handler,
struct boot_command *cmd);
void device_handler_cancel_default(struct device_handler *handler);
+void device_handler_update_config(struct device_handler *handler,
+ struct config *config);
+void device_handler_process_url(struct device_handler *handler,
+ const char *url);
+void device_handler_reinit(struct device_handler *handler);
+
+int device_request_write(struct discover_device *dev, bool *release);
+void device_release_write(struct discover_device *dev, bool release);
#endif /* _DEVICE_HANDLER_H */