diff options
-rw-r--r-- | extras/volume_id/udev_volume_id.c | 2 | ||||
-rw-r--r-- | extras/volume_id/volume_id/Makefile.inc | 92 | ||||
-rw-r--r-- | extras/volume_id/volume_id/cramfs.c (renamed from extras/volume_id/volume_id/cramfs/cramfs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/cramfs.h (renamed from extras/volume_id/volume_id/cramfs/cramfs.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/dasd.c (renamed from extras/volume_id/volume_id/dasd/dasd.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/dasd.h (renamed from extras/volume_id/volume_id/dasd/dasd.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/ext.c (renamed from extras/volume_id/volume_id/ext/ext.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/ext.h (renamed from extras/volume_id/volume_id/ext/ext.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/fat.c (renamed from extras/volume_id/volume_id/fat/fat.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/fat.h (renamed from extras/volume_id/volume_id/fat/fat.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/hfs.c (renamed from extras/volume_id/volume_id/hfs/hfs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/hfs.h (renamed from extras/volume_id/volume_id/hfs/hfs.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/highpoint.c (renamed from extras/volume_id/volume_id/highpoint/highpoint.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/highpoint.h (renamed from extras/volume_id/volume_id/highpoint/highpoint.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/hpfs.c (renamed from extras/volume_id/volume_id/hpfs/hpfs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/hpfs.h (renamed from extras/volume_id/volume_id/hpfs/hpfs.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/iso9660.c (renamed from extras/volume_id/volume_id/iso9660/iso9660.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/iso9660.h (renamed from extras/volume_id/volume_id/iso9660/iso9660.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/jfs.c (renamed from extras/volume_id/volume_id/jfs/jfs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/jfs.h (renamed from extras/volume_id/volume_id/jfs/jfs.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/linux_raid.c (renamed from extras/volume_id/volume_id/linux_raid/linux_raid.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/linux_raid.h (renamed from extras/volume_id/volume_id/linux_raid/linux_raid.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/linux_swap.c (renamed from extras/volume_id/volume_id/linux_swap/linux_swap.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/linux_swap.h (renamed from extras/volume_id/volume_id/linux_swap/linux_swap.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/luks.c | 106 | ||||
-rw-r--r-- | extras/volume_id/volume_id/luks.h | 26 | ||||
-rw-r--r-- | extras/volume_id/volume_id/lvm.c (renamed from extras/volume_id/volume_id/lvm/lvm.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/lvm.h (renamed from extras/volume_id/volume_id/lvm/lvm.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/mac.c (renamed from extras/volume_id/volume_id/mac/mac.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/mac.h (renamed from extras/volume_id/volume_id/mac/mac.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/msdos.c (renamed from extras/volume_id/volume_id/msdos/msdos.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/msdos.h (renamed from extras/volume_id/volume_id/msdos/msdos.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/ntfs.c (renamed from extras/volume_id/volume_id/ntfs/ntfs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/ntfs.h (renamed from extras/volume_id/volume_id/ntfs/ntfs.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/reiserfs.c (renamed from extras/volume_id/volume_id/reiserfs/reiserfs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/reiserfs.h (renamed from extras/volume_id/volume_id/reiserfs/reiserfs.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/romfs.c (renamed from extras/volume_id/volume_id/romfs/romfs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/romfs.h (renamed from extras/volume_id/volume_id/romfs/romfs.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/sysv.c (renamed from extras/volume_id/volume_id/sysv/sysv.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/sysv.h (renamed from extras/volume_id/volume_id/sysv/sysv.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/udf.c (renamed from extras/volume_id/volume_id/udf/udf.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/udf.h (renamed from extras/volume_id/volume_id/udf/udf.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/ufs.c (renamed from extras/volume_id/volume_id/ufs/ufs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/ufs.h (renamed from extras/volume_id/volume_id/ufs/ufs.h) | 0 | ||||
-rw-r--r-- | extras/volume_id/volume_id/util.c | 2 | ||||
-rw-r--r-- | extras/volume_id/volume_id/volume_id.c | 47 | ||||
-rw-r--r-- | extras/volume_id/volume_id/volume_id.h | 3 | ||||
-rw-r--r-- | extras/volume_id/volume_id/xfs.c (renamed from extras/volume_id/volume_id/xfs/xfs.c) | 6 | ||||
-rw-r--r-- | extras/volume_id/volume_id/xfs.h (renamed from extras/volume_id/volume_id/xfs/xfs.h) | 0 |
49 files changed, 275 insertions, 129 deletions
diff --git a/extras/volume_id/udev_volume_id.c b/extras/volume_id/udev_volume_id.c index 843b70baf5..c36b89f8bd 100644 --- a/extras/volume_id/udev_volume_id.c +++ b/extras/volume_id/udev_volume_id.c @@ -31,7 +31,7 @@ #include "../../udev_utils.h" #include "../../logging.h" #include "volume_id/volume_id.h" -#include "volume_id/dasd/dasd.h" +#include "volume_id/dasd.h" #define BLKGETSIZE64 _IOR(0x12,114,size_t) diff --git a/extras/volume_id/volume_id/Makefile.inc b/extras/volume_id/volume_id/Makefile.inc index d010f7778e..9cadec20cc 100644 --- a/extras/volume_id/volume_id/Makefile.inc +++ b/extras/volume_id/volume_id/Makefile.inc @@ -1,48 +1,50 @@ -VOLUME_ID_OBJS= \ - $(VOLUME_ID_BASE)/ext/ext.o \ - $(VOLUME_ID_BASE)/fat/fat.o \ - $(VOLUME_ID_BASE)/hfs/hfs.o \ - $(VOLUME_ID_BASE)/highpoint/highpoint.o \ - $(VOLUME_ID_BASE)/iso9660/iso9660.o \ - $(VOLUME_ID_BASE)/jfs/jfs.o \ - $(VOLUME_ID_BASE)/linux_raid/linux_raid.o \ - $(VOLUME_ID_BASE)/linux_swap/linux_swap.o \ - $(VOLUME_ID_BASE)/lvm/lvm.o \ - $(VOLUME_ID_BASE)/mac/mac.o \ - $(VOLUME_ID_BASE)/msdos/msdos.o \ - $(VOLUME_ID_BASE)/ntfs/ntfs.o \ - $(VOLUME_ID_BASE)/reiserfs/reiserfs.o \ - $(VOLUME_ID_BASE)/udf/udf.o \ - $(VOLUME_ID_BASE)/ufs/ufs.o \ - $(VOLUME_ID_BASE)/xfs/xfs.o \ - $(VOLUME_ID_BASE)/cramfs/cramfs.o \ - $(VOLUME_ID_BASE)/hpfs/hpfs.o \ - $(VOLUME_ID_BASE)/romfs/romfs.o \ - $(VOLUME_ID_BASE)/sysv/sysv.o \ - $(VOLUME_ID_BASE)/dasd/dasd.o \ - $(VOLUME_ID_BASE)/volume_id.o \ +VOLUME_ID_OBJS= \ + $(VOLUME_ID_BASE)/ext.o \ + $(VOLUME_ID_BASE)/fat.o \ + $(VOLUME_ID_BASE)/hfs.o \ + $(VOLUME_ID_BASE)/highpoint.o \ + $(VOLUME_ID_BASE)/iso9660.o \ + $(VOLUME_ID_BASE)/jfs.o \ + $(VOLUME_ID_BASE)/linux_raid.o \ + $(VOLUME_ID_BASE)/linux_swap.o \ + $(VOLUME_ID_BASE)/lvm.o \ + $(VOLUME_ID_BASE)/mac.o \ + $(VOLUME_ID_BASE)/msdos.o \ + $(VOLUME_ID_BASE)/ntfs.o \ + $(VOLUME_ID_BASE)/reiserfs.o \ + $(VOLUME_ID_BASE)/udf.o \ + $(VOLUME_ID_BASE)/ufs.o \ + $(VOLUME_ID_BASE)/xfs.o \ + $(VOLUME_ID_BASE)/cramfs.o \ + $(VOLUME_ID_BASE)/hpfs.o \ + $(VOLUME_ID_BASE)/romfs.o \ + $(VOLUME_ID_BASE)/sysv.o \ + $(VOLUME_ID_BASE)/dasd.o \ + $(VOLUME_ID_BASE)/luks.o \ + $(VOLUME_ID_BASE)/volume_id.o \ $(VOLUME_ID_BASE)/util.o -VOLUME_ID_HEADERS= \ - $(VOLUME_ID_BASE)/ext/ext.h \ - $(VOLUME_ID_BASE)/fat/fat.h \ - $(VOLUME_ID_BASE)/hfs/hfs.h \ - $(VOLUME_ID_BASE)/highpoint/highpoint.h \ - $(VOLUME_ID_BASE)/iso9660/iso9660.h \ - $(VOLUME_ID_BASE)/jfs/jfs.h \ - $(VOLUME_ID_BASE)/linux_raid/linux_raid.h \ - $(VOLUME_ID_BASE)/linux_swap/linux_swap.h \ - $(VOLUME_ID_BASE)/lvm/lvm.h \ - $(VOLUME_ID_BASE)/mac/mac.h \ - $(VOLUME_ID_BASE)/msdos/msdos.h \ - $(VOLUME_ID_BASE)/ntfs/ntfs.h \ - $(VOLUME_ID_BASE)/reiserfs/reiserfs.h \ - $(VOLUME_ID_BASE)/udf/udf.h \ - $(VOLUME_ID_BASE)/ufs/ufs.h \ - $(VOLUME_ID_BASE)/xfs/xfs.h \ - $(VOLUME_ID_BASE)/cramfs/cramfs.h \ - $(VOLUME_ID_BASE)/sysv/sysv.h \ - $(VOLUME_ID_BASE)/romfs/romfs.h \ - $(VOLUME_ID_BASE)/dasd/dasd.h \ - $(VOLUME_ID_BASE)/volume_id.h \ +VOLUME_ID_HEADERS= \ + $(VOLUME_ID_BASE)/ext.h \ + $(VOLUME_ID_BASE)/fat.h \ + $(VOLUME_ID_BASE)/hfs.h \ + $(VOLUME_ID_BASE)/highpoint.h \ + $(VOLUME_ID_BASE)/iso9660.h \ + $(VOLUME_ID_BASE)/jfs.h \ + $(VOLUME_ID_BASE)/linux_raid.h \ + $(VOLUME_ID_BASE)/linux_swap.h \ + $(VOLUME_ID_BASE)/lvm.h \ + $(VOLUME_ID_BASE)/mac.h \ + $(VOLUME_ID_BASE)/msdos.h \ + $(VOLUME_ID_BASE)/ntfs.h \ + $(VOLUME_ID_BASE)/reiserfs.h \ + $(VOLUME_ID_BASE)/udf.h \ + $(VOLUME_ID_BASE)/ufs.h \ + $(VOLUME_ID_BASE)/xfs.h \ + $(VOLUME_ID_BASE)/cramfs.h \ + $(VOLUME_ID_BASE)/sysv.h \ + $(VOLUME_ID_BASE)/romfs.h \ + $(VOLUME_ID_BASE)/dasd.h \ + $(VOLUME_ID_BASE)/luks.h \ + $(VOLUME_ID_BASE)/volume_id.h \ $(VOLUME_ID_BASE)/util.h diff --git a/extras/volume_id/volume_id/cramfs/cramfs.c b/extras/volume_id/volume_id/cramfs.c index a1d51f107d..a8058646d1 100644 --- a/extras/volume_id/volume_id/cramfs/cramfs.c +++ b/extras/volume_id/volume_id/cramfs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "cramfs.h" struct cramfs_super { diff --git a/extras/volume_id/volume_id/cramfs/cramfs.h b/extras/volume_id/volume_id/cramfs.h index b94445b8b7..b94445b8b7 100644 --- a/extras/volume_id/volume_id/cramfs/cramfs.h +++ b/extras/volume_id/volume_id/cramfs.h diff --git a/extras/volume_id/volume_id/dasd/dasd.c b/extras/volume_id/volume_id/dasd.c index 2df6a09e81..6f403cb928 100644 --- a/extras/volume_id/volume_id/dasd/dasd.c +++ b/extras/volume_id/volume_id/dasd.c @@ -34,9 +34,9 @@ #include <sys/ioctl.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "dasd.h" static unsigned char EBCtoASC[256] = diff --git a/extras/volume_id/volume_id/dasd/dasd.h b/extras/volume_id/volume_id/dasd.h index 751b9fda60..751b9fda60 100644 --- a/extras/volume_id/volume_id/dasd/dasd.h +++ b/extras/volume_id/volume_id/dasd.h diff --git a/extras/volume_id/volume_id/ext/ext.c b/extras/volume_id/volume_id/ext.c index 0940e452fc..b7bdf05d97 100644 --- a/extras/volume_id/volume_id/ext/ext.c +++ b/extras/volume_id/volume_id/ext.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../util.h" -#include "../logging.h" +#include "volume_id.h" +#include "util.h" +#include "logging.h" #include "ext.h" struct ext2_super_block { diff --git a/extras/volume_id/volume_id/ext/ext.h b/extras/volume_id/volume_id/ext.h index 6b9b85876b..6b9b85876b 100644 --- a/extras/volume_id/volume_id/ext/ext.h +++ b/extras/volume_id/volume_id/ext.h diff --git a/extras/volume_id/volume_id/fat/fat.c b/extras/volume_id/volume_id/fat.c index 7c658fe5f4..58aa2aba05 100644 --- a/extras/volume_id/volume_id/fat/fat.c +++ b/extras/volume_id/volume_id/fat.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "fat.h" #define FAT12_MAX 0xff5 diff --git a/extras/volume_id/volume_id/fat/fat.h b/extras/volume_id/volume_id/fat.h index 51ad94df85..51ad94df85 100644 --- a/extras/volume_id/volume_id/fat/fat.h +++ b/extras/volume_id/volume_id/fat.h diff --git a/extras/volume_id/volume_id/hfs/hfs.c b/extras/volume_id/volume_id/hfs.c index 905471cb35..327461c676 100644 --- a/extras/volume_id/volume_id/hfs/hfs.c +++ b/extras/volume_id/volume_id/hfs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "hfs.h" struct hfs_finder_info{ diff --git a/extras/volume_id/volume_id/hfs/hfs.h b/extras/volume_id/volume_id/hfs.h index b23ccd30c8..b23ccd30c8 100644 --- a/extras/volume_id/volume_id/hfs/hfs.h +++ b/extras/volume_id/volume_id/hfs.h diff --git a/extras/volume_id/volume_id/highpoint/highpoint.c b/extras/volume_id/volume_id/highpoint.c index b301450086..e13fd6de61 100644 --- a/extras/volume_id/volume_id/highpoint/highpoint.c +++ b/extras/volume_id/volume_id/highpoint.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "highpoint.h" struct hpt37x { diff --git a/extras/volume_id/volume_id/highpoint/highpoint.h b/extras/volume_id/volume_id/highpoint.h index 5a5614afef..5a5614afef 100644 --- a/extras/volume_id/volume_id/highpoint/highpoint.h +++ b/extras/volume_id/volume_id/highpoint.h diff --git a/extras/volume_id/volume_id/hpfs/hpfs.c b/extras/volume_id/volume_id/hpfs.c index 212e74ee41..a8daea7892 100644 --- a/extras/volume_id/volume_id/hpfs/hpfs.c +++ b/extras/volume_id/volume_id/hpfs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "hpfs.h" struct hpfs_super diff --git a/extras/volume_id/volume_id/hpfs/hpfs.h b/extras/volume_id/volume_id/hpfs.h index bd8d4c90c9..bd8d4c90c9 100644 --- a/extras/volume_id/volume_id/hpfs/hpfs.h +++ b/extras/volume_id/volume_id/hpfs.h diff --git a/extras/volume_id/volume_id/iso9660/iso9660.c b/extras/volume_id/volume_id/iso9660.c index 1d7cfd5037..ffccf609dc 100644 --- a/extras/volume_id/volume_id/iso9660/iso9660.c +++ b/extras/volume_id/volume_id/iso9660.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "iso9660.h" #define ISO_SUPERBLOCK_OFFSET 0x8000 diff --git a/extras/volume_id/volume_id/iso9660/iso9660.h b/extras/volume_id/volume_id/iso9660.h index c187e25f94..c187e25f94 100644 --- a/extras/volume_id/volume_id/iso9660/iso9660.h +++ b/extras/volume_id/volume_id/iso9660.h diff --git a/extras/volume_id/volume_id/jfs/jfs.c b/extras/volume_id/volume_id/jfs.c index ab0b83081c..ac4eab502d 100644 --- a/extras/volume_id/volume_id/jfs/jfs.c +++ b/extras/volume_id/volume_id/jfs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "jfs.h" struct jfs_super_block { diff --git a/extras/volume_id/volume_id/jfs/jfs.h b/extras/volume_id/volume_id/jfs.h index 28c48ffe53..28c48ffe53 100644 --- a/extras/volume_id/volume_id/jfs/jfs.h +++ b/extras/volume_id/volume_id/jfs.h diff --git a/extras/volume_id/volume_id/linux_raid/linux_raid.c b/extras/volume_id/volume_id/linux_raid.c index ca03030ee4..0ea8596ad6 100644 --- a/extras/volume_id/volume_id/linux_raid/linux_raid.c +++ b/extras/volume_id/volume_id/linux_raid.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "linux_raid.h" struct mdp_super_block { diff --git a/extras/volume_id/volume_id/linux_raid/linux_raid.h b/extras/volume_id/volume_id/linux_raid.h index 0aaaaa6ade..0aaaaa6ade 100644 --- a/extras/volume_id/volume_id/linux_raid/linux_raid.h +++ b/extras/volume_id/volume_id/linux_raid.h diff --git a/extras/volume_id/volume_id/linux_swap/linux_swap.c b/extras/volume_id/volume_id/linux_swap.c index 2fb16377a8..39a2c4aab3 100644 --- a/extras/volume_id/volume_id/linux_swap/linux_swap.c +++ b/extras/volume_id/volume_id/linux_swap.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "linux_swap.h" struct swap_header_v1_2 { diff --git a/extras/volume_id/volume_id/linux_swap/linux_swap.h b/extras/volume_id/volume_id/linux_swap.h index 5de0f93849..5de0f93849 100644 --- a/extras/volume_id/volume_id/linux_swap/linux_swap.h +++ b/extras/volume_id/volume_id/linux_swap.h diff --git a/extras/volume_id/volume_id/luks.c b/extras/volume_id/volume_id/luks.c new file mode 100644 index 0000000000..2001692731 --- /dev/null +++ b/extras/volume_id/volume_id/luks.c @@ -0,0 +1,106 @@ +/* + * volume_id - reads filesystem label and uuid + * + * Copyright (C) 2005 W. Michael Petullo <mike@flyn.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <netinet/in.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> +#include <ctype.h> +#include <asm/types.h> + +#include "volume_id.h" +#include "util.h" +#include "logging.h" +#include "luks.h" + +/* from cryptsetup-luks internal.h */ +#define SECTOR_SHIFT 9 +#define SECTOR_SIZE (1 << SECTOR_SHIFT) + +/* from cryptsetup-luks luks.h */ +#define LUKS_CIPHERNAME_L 32 +#define LUKS_CIPHERMODE_L 32 +#define LUKS_HASHSPEC_L 32 +#define LUKS_DIGESTSIZE 20 /* since SHA1 */ +#define LUKS_SALTSIZE 32 +#define LUKS_NUMKEYS 8 + +/* from cryptsetup-luks luks.h */ +const unsigned char LUKS_MAGIC[] = {'L','U','K','S', 0xba, 0xbe}; +#define LUKS_MAGIC_L 6 + +/* from cryptsetup-luks luks.h */ +#define LUKS_PHDR_SIZE (sizeof(struct luks_phdr)/SECTOR_SIZE+1) + +/* from cryptsetup-luks luks.h */ +#define UUID_STRING_L 40 + +int volume_id_probe_luks(struct volume_id *id, __u64 off) +{ + /* from cryptsetup-luks luks.h */ + struct luks_phdr { + char magic[LUKS_MAGIC_L]; + uint16_t version; + char cipherName[LUKS_CIPHERNAME_L]; + char cipherMode[LUKS_CIPHERMODE_L]; + char hashSpec[LUKS_HASHSPEC_L]; + uint32_t payloadOffset; + uint32_t keyBytes; + char mkDigest[LUKS_DIGESTSIZE]; + char mkDigestSalt[LUKS_SALTSIZE]; + uint32_t mkDigestIterations; + char uuid[UUID_STRING_L]; + struct { + uint32_t active; + + /* parameters used for password processing */ + uint32_t passwordIterations; + char passwordSalt[LUKS_SALTSIZE]; + + /* parameters used for AF store/load */ + uint32_t keyMaterialOffset; + uint32_t stripes; + } keyblock[LUKS_NUMKEYS]; + } *header; + + header = (struct luks_phdr*) volume_id_get_buffer(id, off, LUKS_PHDR_SIZE); + + if (header == NULL) + return -1; + + if (memcmp(header->magic, LUKS_MAGIC, LUKS_MAGIC_L)) + return -1; + + volume_id_set_usage(id, VOLUME_ID_CRYPTO); + volume_id_set_uuid(id, header->uuid, UUID_DCE); + id->type = "crypto_LUKS"; + + return 0; +} diff --git a/extras/volume_id/volume_id/luks.h b/extras/volume_id/volume_id/luks.h new file mode 100644 index 0000000000..180336f573 --- /dev/null +++ b/extras/volume_id/volume_id/luks.h @@ -0,0 +1,26 @@ +/* + * volume_id - reads filesystem label and uuid + * + * Copyright (C) 2005 W. Michael Petullo <mike@flyn.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef _VOLUME_ID_LUKS_ +#define _VOLUME_ID_LUKS_ + +extern int volume_id_probe_luks(struct volume_id *id, __u64 off); + +#endif diff --git a/extras/volume_id/volume_id/lvm/lvm.c b/extras/volume_id/volume_id/lvm.c index ed1a83aeb4..bfc2ef2343 100644 --- a/extras/volume_id/volume_id/lvm/lvm.c +++ b/extras/volume_id/volume_id/lvm.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "lvm.h" struct lvm1_super_block { diff --git a/extras/volume_id/volume_id/lvm/lvm.h b/extras/volume_id/volume_id/lvm.h index 2e44cda75b..2e44cda75b 100644 --- a/extras/volume_id/volume_id/lvm/lvm.h +++ b/extras/volume_id/volume_id/lvm.h diff --git a/extras/volume_id/volume_id/mac/mac.c b/extras/volume_id/volume_id/mac.c index 895316d26c..2e2db486f2 100644 --- a/extras/volume_id/volume_id/mac/mac.c +++ b/extras/volume_id/volume_id/mac.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "mac.h" struct mac_driver_desc { diff --git a/extras/volume_id/volume_id/mac/mac.h b/extras/volume_id/volume_id/mac.h index 888c1c527d..888c1c527d 100644 --- a/extras/volume_id/volume_id/mac/mac.h +++ b/extras/volume_id/volume_id/mac.h diff --git a/extras/volume_id/volume_id/msdos/msdos.c b/extras/volume_id/volume_id/msdos.c index a90b9efc33..fc2f99d4d0 100644 --- a/extras/volume_id/volume_id/msdos/msdos.c +++ b/extras/volume_id/volume_id/msdos.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "msdos.h" struct msdos_partition_entry { diff --git a/extras/volume_id/volume_id/msdos/msdos.h b/extras/volume_id/volume_id/msdos.h index 55185c006b..55185c006b 100644 --- a/extras/volume_id/volume_id/msdos/msdos.h +++ b/extras/volume_id/volume_id/msdos.h diff --git a/extras/volume_id/volume_id/ntfs/ntfs.c b/extras/volume_id/volume_id/ntfs.c index e46bc64bb2..84d6fbb843 100644 --- a/extras/volume_id/volume_id/ntfs/ntfs.c +++ b/extras/volume_id/volume_id/ntfs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "ntfs.h" struct ntfs_super_block { diff --git a/extras/volume_id/volume_id/ntfs/ntfs.h b/extras/volume_id/volume_id/ntfs.h index 63b1161d51..63b1161d51 100644 --- a/extras/volume_id/volume_id/ntfs/ntfs.h +++ b/extras/volume_id/volume_id/ntfs.h diff --git a/extras/volume_id/volume_id/reiserfs/reiserfs.c b/extras/volume_id/volume_id/reiserfs.c index d54013e4c5..b74b8ae576 100644 --- a/extras/volume_id/volume_id/reiserfs/reiserfs.c +++ b/extras/volume_id/volume_id/reiserfs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "reiserfs.h" struct reiserfs_super_block { diff --git a/extras/volume_id/volume_id/reiserfs/reiserfs.h b/extras/volume_id/volume_id/reiserfs.h index 14f094578f..14f094578f 100644 --- a/extras/volume_id/volume_id/reiserfs/reiserfs.h +++ b/extras/volume_id/volume_id/reiserfs.h diff --git a/extras/volume_id/volume_id/romfs/romfs.c b/extras/volume_id/volume_id/romfs.c index c04dc98f10..fe5e5a4827 100644 --- a/extras/volume_id/volume_id/romfs/romfs.c +++ b/extras/volume_id/volume_id/romfs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "romfs.h" struct romfs_super { diff --git a/extras/volume_id/volume_id/romfs/romfs.h b/extras/volume_id/volume_id/romfs.h index b0108f3dde..b0108f3dde 100644 --- a/extras/volume_id/volume_id/romfs/romfs.h +++ b/extras/volume_id/volume_id/romfs.h diff --git a/extras/volume_id/volume_id/sysv/sysv.c b/extras/volume_id/volume_id/sysv.c index 313ac1732a..6c4408d80c 100644 --- a/extras/volume_id/volume_id/sysv/sysv.c +++ b/extras/volume_id/volume_id/sysv.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "sysv.h" #define SYSV_NICINOD 100 diff --git a/extras/volume_id/volume_id/sysv/sysv.h b/extras/volume_id/volume_id/sysv.h index bd5a3500fb..bd5a3500fb 100644 --- a/extras/volume_id/volume_id/sysv/sysv.h +++ b/extras/volume_id/volume_id/sysv.h diff --git a/extras/volume_id/volume_id/udf/udf.c b/extras/volume_id/volume_id/udf.c index 79d25ad890..06b521545f 100644 --- a/extras/volume_id/volume_id/udf/udf.c +++ b/extras/volume_id/volume_id/udf.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "udf.h" struct volume_descriptor { diff --git a/extras/volume_id/volume_id/udf/udf.h b/extras/volume_id/volume_id/udf.h index b112e46ffc..b112e46ffc 100644 --- a/extras/volume_id/volume_id/udf/udf.h +++ b/extras/volume_id/volume_id/udf.h diff --git a/extras/volume_id/volume_id/ufs/ufs.c b/extras/volume_id/volume_id/ufs.c index 12672ffe01..37e74aee6f 100644 --- a/extras/volume_id/volume_id/ufs/ufs.c +++ b/extras/volume_id/volume_id/ufs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "ufs.h" struct ufs_super_block { diff --git a/extras/volume_id/volume_id/ufs/ufs.h b/extras/volume_id/volume_id/ufs.h index 82b4e1d064..82b4e1d064 100644 --- a/extras/volume_id/volume_id/ufs/ufs.h +++ b/extras/volume_id/volume_id/ufs.h diff --git a/extras/volume_id/volume_id/util.c b/extras/volume_id/volume_id/util.c index 0cd2eadec1..6159a59928 100644 --- a/extras/volume_id/volume_id/util.c +++ b/extras/volume_id/volume_id/util.c @@ -53,6 +53,8 @@ static char *usage_to_string(enum volume_id_usage usage_id) return "raid"; case VOLUME_ID_DISKLABEL: return "disklabel"; + case VOLUME_ID_CRYPTO: + return "crypto"; case VOLUME_ID_UNPROBED: return "unprobed"; case VOLUME_ID_UNUSED: diff --git a/extras/volume_id/volume_id/volume_id.c b/extras/volume_id/volume_id/volume_id.c index 95f7f5b127..f93cc91161 100644 --- a/extras/volume_id/volume_id/volume_id.c +++ b/extras/volume_id/volume_id/volume_id.c @@ -41,25 +41,28 @@ #include "logging.h" #include "util.h" -#include "ext/ext.h" -#include "reiserfs/reiserfs.h" -#include "fat/fat.h" -#include "hfs/hfs.h" -#include "jfs/jfs.h" -#include "xfs/xfs.h" -#include "ufs/ufs.h" -#include "ntfs/ntfs.h" -#include "iso9660/iso9660.h" -#include "udf/udf.h" -#include "highpoint/highpoint.h" -#include "linux_swap/linux_swap.h" -#include "linux_raid/linux_raid.h" -#include "lvm/lvm.h" -#include "cramfs/cramfs.h" -#include "hpfs/hpfs.h" -#include "romfs/romfs.h" -#include "mac/mac.h" -#include "msdos/msdos.h" +#include "ext.h" +#include "reiserfs.h" +#include "fat.h" +#include "hfs.h" +#include "jfs.h" +#include "xfs.h" +#include "ufs.h" +#include "ntfs.h" +#include "iso9660.h" +#include "udf.h" +#include "luks.h" +#include "highpoint.h" +#include "linux_swap.h" +#include "linux_raid.h" +#include "lvm.h" +#include "cramfs.h" +#include "hpfs.h" +#include "romfs.h" +#include "sysv.h" +#include "luks.h" +#include "mac.h" +#include "msdos.h" int volume_id_probe_all(struct volume_id *id, unsigned long long off, unsigned long long size) { @@ -79,6 +82,9 @@ int volume_id_probe_all(struct volume_id *id, unsigned long long off, unsigned l if (volume_id_probe_highpoint_ataraid(id, off) == 0) goto exit; + if (volume_id_probe_luks(id, off) == 0) + goto exit; + /* signature in the first block, only small buffer needed */ if (volume_id_probe_vfat(id, off) == 0) goto exit; @@ -128,6 +134,9 @@ int volume_id_probe_all(struct volume_id *id, unsigned long long off, unsigned l if (volume_id_probe_hpfs(id, off) == 0) goto exit; + if (volume_id_probe_sysv(id, off) == 0) + goto exit; + return -1; exit: diff --git a/extras/volume_id/volume_id/volume_id.h b/extras/volume_id/volume_id/volume_id.h index 5b845602c6..c22a5e60ae 100644 --- a/extras/volume_id/volume_id/volume_id.h +++ b/extras/volume_id/volume_id/volume_id.h @@ -21,7 +21,7 @@ #ifndef _VOLUME_ID_H_ #define _VOLUME_ID_H_ -#define VOLUME_ID_VERSION 34 +#define VOLUME_ID_VERSION 35 #define VOLUME_ID_LABEL_SIZE 64 #define VOLUME_ID_UUID_SIZE 16 @@ -38,6 +38,7 @@ enum volume_id_usage { VOLUME_ID_PARTITIONTABLE, VOLUME_ID_RAID, VOLUME_ID_DISKLABEL, + VOLUME_ID_CRYPTO, }; struct volume_id_partition { diff --git a/extras/volume_id/volume_id/xfs/xfs.c b/extras/volume_id/volume_id/xfs.c index efbe06ec58..12a89aafcb 100644 --- a/extras/volume_id/volume_id/xfs/xfs.c +++ b/extras/volume_id/volume_id/xfs.c @@ -34,9 +34,9 @@ #include <ctype.h> #include <asm/types.h> -#include "../volume_id.h" -#include "../logging.h" -#include "../util.h" +#include "volume_id.h" +#include "logging.h" +#include "util.h" #include "xfs.h" struct xfs_super_block { diff --git a/extras/volume_id/volume_id/xfs/xfs.h b/extras/volume_id/volume_id/xfs.h index 76b1725664..76b1725664 100644 --- a/extras/volume_id/volume_id/xfs/xfs.h +++ b/extras/volume_id/volume_id/xfs.h |