/*
 * e2image.h --- header file describing the ext2 image format
 *
 * Copyright (C) 2000 Theodore Ts'o.
 *
 * Note: this uses the POSIX IO interfaces, unlike most of the other
 * functions in this library.  So sue me.
 *
 * %Begin-Header%
 * This file may be redistributed under the terms of the GNU Library
 * General Public License, version 2.
 * %End-Header%
 */

/* Image types */
#define E2IMAGE_RAW	1
#define E2IMAGE_QCOW2	2

/* Image flags */
#define E2IMAGE_INSTALL_FLAG	1
#define E2IMAGE_SCRAMBLE_FLAG	2
#define E2IMAGE_IS_QCOW2_FLAG	3

struct ext2_image_hdr {
	__u32	magic_number;	/* This must be EXT2_ET_MAGIC_E2IMAGE */
	char	magic_descriptor[16]; /* "Ext2 Image 1.0", w/ null padding */
	char	fs_hostname[64];/* Hostname of machine of image */
	char	fs_netaddr[32];	/* Network address */
	__u32	fs_netaddr_type;/* 0 = IPV4, 1 = IPV6, etc. */
	__u32	fs_device;	/* Device number of image */
	char	fs_device_name[64]; /* Device name */
	char	fs_uuid[16];	/* UUID of filesystem */
	__u32	fs_blocksize;	/* Block size of the filesystem */
	__u32	fs_reserved[8];

	__u32	image_device;	/* Device number of image file */
	__u32	image_inode;	/* Inode number of image file */
	__u32	image_time;	/* Time of image creation */
	__u32	image_reserved[8];

	__u32	offset_super;	/* Byte offset of the sb and descriptors */
	__u32	offset_inode;	/* Byte offset of the inode table  */
	__u32	offset_inodemap; /* Byte offset of the inode bitmaps */
	__u32	offset_blockmap; /* Byte offset of the inode bitmaps */
	__u32	offset_reserved[8];
};
