From fef051fb89071a5f58715e389f7a9c4d95231d78 Mon Sep 17 00:00:00 2001
From: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Date: Mon, 13 May 2019 10:16:46 +0200
Subject: Generate extended attribute table

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
---
 include/fstree.h   |  4 ++++
 include/squashfs.h | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)

(limited to 'include')

diff --git a/include/fstree.h b/include/fstree.h
index 96294b8..e8324a9 100644
--- a/include/fstree.h
+++ b/include/fstree.h
@@ -28,6 +28,10 @@ struct tree_xattr_t {
 	size_t num_attr;
 	size_t max_attr;
 
+	uint32_t block;
+	uint32_t offset;
+	uint32_t size;
+
 	/**
 	 * @brief Incremental index within all xattr blocks
 	 */
diff --git a/include/squashfs.h b/include/squashfs.h
index e599863..5574b29 100644
--- a/include/squashfs.h
+++ b/include/squashfs.h
@@ -164,6 +164,30 @@ typedef struct {
 	uint8_t name[];
 } sqfs_dir_index_t;
 
+typedef struct {
+	uint16_t type;
+	uint16_t size;
+	uint8_t key[];
+} sqfs_xattr_entry_t;
+
+typedef struct {
+	uint32_t size;
+	uint8_t value[];
+} sqfs_xattr_value_t;
+
+typedef struct {
+	uint64_t xattr;
+	uint32_t count;
+	uint32_t size;
+} sqfs_xattr_id_t;
+
+typedef struct {
+	uint64_t xattr_table_start;
+	uint32_t xattr_ids;
+	uint32_t unused;
+} sqfs_xattr_id_table_t;
+
+
 typedef enum {
 	SQFS_COMP_GZIP = 1,
 	SQFS_COMP_LZMA = 2,
@@ -207,6 +231,15 @@ typedef enum {
 	SQFS_INODE_EXT_SOCKET = 14,
 } E_SQFS_INODE_TYPE;
 
+typedef enum {
+	SQUASHFS_XATTR_USER = 0,
+	SQUASHFS_XATTR_TRUSTED = 1,
+	SQUASHFS_XATTR_SECURITY = 2,
+
+	SQUASHFS_XATTR_FLAG_OOL = 0x100,
+	SQUASHFS_XATTR_PREFIX_MASK = 0xFF,
+} E_SQFS_XATTR_TYPE;
+
 int sqfs_super_init(sqfs_super_t *super, size_t block_size, uint32_t mtime,
 		    E_SQFS_COMPRESSOR compressor);
 
-- 
cgit v1.2.3