]> git.wh0rd.org - dump.git/blobdiff - compat/include/protocols/dumprestore.h
Added EA/ACL support in dump and restore.
[dump.git] / compat / include / protocols / dumprestore.h
index 0d6e0c8ed99af5cd8b37b17d2be33654c568384f..816a83f508a33e336ba30b9c74f92876a658b1dd 100644 (file)
@@ -2,8 +2,10 @@
  *     Ported to Linux's Second Extended File System as part of the
  *     dump and restore backup suit
  *     Remy Card <card@Linux.EU.Org>, 1994-1997
- *      Stelian Pop <pop@cybercable.fr>, 1999
+ *     Stelian Pop <stelian@popies.net>, 1999-2000
+ *     Stelian Pop <stelian@popies.net> - AlcĂ´ve <www.alcove.com>, 2000-2002
  *
+ *     $Id: dumprestore.h,v 1.24 2005/05/02 15:10:46 stelian Exp $
  */
 
 /*
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
- *
- * $Id: dumprestore.h,v 1.4 2000/01/07 19:24:04 tiniou Exp $
  */
 
 #ifndef _PROTOCOLS_DUMPRESTORE_H_
 #define _PROTOCOLS_DUMPRESTORE_H_
 
+#include <config.h>
+
 /*
  * TP_BSIZE is the size of file blocks on the dump tapes.
  * Note that TP_BSIZE must be a multiple of DEV_BSIZE.
 #define NTREC          10
 #define HIGHDENSITYTREC        32
 #define TP_NINDIR      (TP_BSIZE/2)
+#define TP_NINOS       (TP_NINDIR / sizeof (int32_t))
 #define LBLSIZE                16
 #define NAMELEN                64
 
 #define OFS_MAGIC      (int)60011
 #define NFS_MAGIC      (int)60012
+#define FS_UFS2_MAGIC   (int)0x19540119
 #define CHECKSUM       (int)84446
 
+#ifdef __linux__
+typedef u_int32_t      dump_ino_t;
+#endif
+
+#ifdef sunos
+typedef unsigned int   dump_ino_t;
+#endif
+
+union u_data {
+       char    s_addrs[TP_NINDIR];     /* 1 => data; 0 => hole in inode */
+       int32_t s_inos[TP_NINOS];       /* table of first inode on each volume */
+} u_data;
+
 union u_spcl {
        char dummy[TP_BSIZE];
        struct  s_spcl {
                int32_t c_type;             /* record type (see below) */
-               time_t  c_date;             /* date of this dump */
-               time_t  c_ddate;            /* date of previous dump */
+               int32_t c_date;             /* date of this dump */
+               int32_t c_ddate;            /* date of previous dump */
                int32_t c_volume;           /* dump volume number */
-               daddr_t c_tapea;            /* logical block of this record */
-               ino_t   c_inumber;          /* number of inode */
+               u_int32_t c_tapea;          /* logical block of this record */
+               dump_ino_t c_inumber;       /* number of inode */
                int32_t c_magic;            /* magic number (see above) */
                int32_t c_checksum;         /* record checksum */
 #ifdef __linux__
                struct  new_bsd_inode c_dinode;
+#else
+#ifdef sunos
+               struct  new_bsd_inode c_dinode;
 #else
                struct  dinode  c_dinode;   /* ownership and mode of inode */
+#endif
 #endif
                int32_t c_count;            /* number of valid c_addr entries */
-               char    c_addr[TP_NINDIR];  /* 1 => data; 0 => hole in inode */
+               union u_data c_data;        /* see above */
                char    c_label[LBLSIZE];   /* dump label */
                int32_t c_level;            /* level of this dump */
                char    c_filesys[NAMELEN]; /* name of dumpped file system */
@@ -97,10 +114,15 @@ union u_spcl {
                char    c_host[NAMELEN];    /* name of dumpped host */
                int32_t c_flags;            /* additional information */
                int32_t c_firstrec;         /* first record on volume */
-               int32_t c_spare[32];        /* reserved for future uses */
+               int32_t c_ntrec;            /* blocksize on volume */
+                int32_t        c_extattributes;    /* additional inode info */
+                int32_t        c_spare[30];        /* reserved for future uses */
        } s_spcl;
 } u_spcl;
 #define spcl u_spcl.s_spcl
+#define c_addr c_data.s_addrs
+#define c_inos c_data.s_inos
+
 /*
  * special record types
  */
@@ -116,5 +138,42 @@ union u_spcl {
  */
 #define DR_NEWHEADER   0x0001  /* new format tape header */
 #define DR_NEWINODEFMT 0x0002  /* new format inodes on tape */
+#define DR_COMPRESSED  0x0080  /* dump tape is compressed */
+#define DR_METAONLY    0x0100  /* only the metadata of the inode has
+                                  been dumped */
+#define DR_INODEINFO   0x0002  /* TS_END header contains c_inos information */
+#define DR_EXTATTRIBUTES       0x8000
+
+/*
+ * extattributes inode info
+ */
+#define EXT_REGULAR            0
+#define EXT_MACOSFNDRINFO      1
+#define EXT_MACOSRESFORK       2
+#define EXT_XATTR              3
+
+/*
+ * compression flags for the tapebuf header.
+ */
+#define COMPRESS_ZLIB  0
+#define COMPRESS_BZLIB 1
+#define COMPRESS_LZO   2
+
+/* used for compressed dump tapes */
+struct tapebuf {
+       unsigned int    compressed:1;
+       unsigned int    flags:3;
+       unsigned int    length:28;
+#ifdef sunos
+       char            buf;
+#else
+       char            buf[0]; /* the data */
+#endif
+};
+
+/* used for EA on tape */
+#define EXT2_GOOD_OLD_INODE_SIZE       128
+#define EXT2_XATTR_MAGIC               0xEA020000      /* block EA */
+#define EXT2_XATTR_MAGIC2              0xEA020001      /* in inode EA */
 
 #endif /* !_DUMPRESTORE_H_ */