path: root/discover/device-handler.h
diff options
authorSamuel Mendoza-Jonas <>2019-02-15 10:40:14 +1100
committerSamuel Mendoza-Jonas <>2019-03-26 16:46:38 +1100
commitf583f0cf35fc227db5f73ecd04daf7702735b740 (patch)
treea53121f28618766c0b79dc322897bb08f695fada /discover/device-handler.h
parent5f8fa2c151b8f0e568dc4015b7d307250b354a04 (diff)
discover: Recognise and open LUKS encrypted partitions
Handle devices encrypted with LUKS and call cryptsetup to open them if a client sends the associated password. If a new device has the "crypto_LUKS" filesystem type it is marked as a LUKS device and sent to clients but further discovery is not performed. Once a client sends the device's password cryptsetup is called to open it. The opened device will appear separately, so the source device is "forgotten" at this point and then the newly opened device is treated as a normal partition. On destruction the device is "closed" with cryptsetup so that discovery can start from the beginning. Signed-off-by: Samuel Mendoza-Jonas <>
Diffstat (limited to 'discover/device-handler.h')
1 files changed, 8 insertions, 0 deletions
diff --git a/discover/device-handler.h b/discover/device-handler.h
index 9619a2d..6591120 100644
--- a/discover/device-handler.h
+++ b/discover/device-handler.h
@@ -33,6 +33,7 @@ struct discover_device {
bool mounted;
bool mounted_rw;
bool unmount;
+ bool crypt_device;
bool notified;
@@ -89,6 +90,9 @@ const struct plugin_option *device_handler_get_plugin(
struct network *device_handler_get_network(
const struct device_handler *handler);
+bool device_handler_found_crypt_device(struct device_handler *handler,
+ const char *name);
struct discover_device *discover_device_create(struct device_handler *handler,
const char *uuid, const char *id);
void device_handler_add_device(struct device_handler *handler,
@@ -98,6 +102,10 @@ void device_handler_add_ramdisk(struct device_handler *handler,
struct ramdisk_device *device_handler_get_ramdisk(
struct device_handler *handler);
void device_handler_release_ramdisk(struct discover_device *device);
+void device_handler_open_encrypted_dev(struct device_handler *handler,
+ char *password, char *device_id);
+void device_handler_add_encrypted_dev(struct device_handler *handler,
+ struct discover_device *dev);
int device_handler_discover(struct device_handler *handler,
struct discover_device *dev);
int device_handler_dhcp(struct device_handler *handler,
OpenPOWER on IntegriCloud