1/* These structs are used by the system-use-sharing protocol, in which the 2 Rock Ridge extensions are embedded. It is quite possible that other 3 extensions are present on the disk, and this is fine as long as they 4 all use SUSP */ 5 6struct SU_SP{ 7 unsigned char magic[2]; 8 unsigned char skip; 9} __attribute__((packed)); 10 11struct SU_CE{ 12 char extent[8]; 13 char offset[8]; 14 char size[8]; 15}; 16 17struct SU_ER{ 18 unsigned char len_id; 19 unsigned char len_des; 20 unsigned char len_src; 21 unsigned char ext_ver; 22 char data[0]; 23} __attribute__((packed)); 24 25struct RR_RR{ 26 char flags[1]; 27} __attribute__((packed)); 28 29struct RR_PX{ 30 char mode[8]; 31 char n_links[8]; 32 char uid[8]; 33 char gid[8]; 34}; 35 36struct RR_PN{ 37 char dev_high[8]; 38 char dev_low[8]; 39}; 40 41 42struct SL_component{ 43 unsigned char flags; 44 unsigned char len; 45 char text[0]; 46} __attribute__((packed)); 47 48struct RR_SL{ 49 unsigned char flags; 50 struct SL_component link; 51} __attribute__((packed)); 52 53struct RR_NM{ 54 unsigned char flags; 55 char name[0]; 56} __attribute__((packed)); 57 58struct RR_CL{ 59 char location[8]; 60}; 61 62struct RR_PL{ 63 char location[8]; 64}; 65 66struct stamp{ 67 char time[7]; 68} __attribute__((packed)); 69 70struct RR_TF{ 71 char flags; 72 struct stamp times[0]; /* Variable number of these beasts */ 73} __attribute__((packed)); 74 75/* Linux-specific extension for transparent decompression */ 76struct RR_ZF{ 77 char algorithm[2]; 78 char parms[2]; 79 char real_size[8]; 80}; 81 82/* These are the bits and their meanings for flags in the TF structure. */ 83#define TF_CREATE 1 84#define TF_MODIFY 2 85#define TF_ACCESS 4 86#define TF_ATTRIBUTES 8 87#define TF_BACKUP 16 88#define TF_EXPIRATION 32 89#define TF_EFFECTIVE 64 90#define TF_LONG_FORM 128 91 92struct rock_ridge{ 93 char signature[2]; 94 unsigned char len; 95 unsigned char version; 96 union{ 97 struct SU_SP SP; 98 struct SU_CE CE; 99 struct SU_ER ER; 100 struct RR_RR RR; 101 struct RR_PX PX; 102 struct RR_PN PN; 103 struct RR_SL SL; 104 struct RR_NM NM; 105 struct RR_CL CL; 106 struct RR_PL PL; 107 struct RR_TF TF; 108 struct RR_ZF ZF; 109 } u; 110}; 111 112#define RR_PX 1 /* POSIX attributes */ 113#define RR_PN 2 /* POSIX devices */ 114#define RR_SL 4 /* Symbolic link */ 115#define RR_NM 8 /* Alternate Name */ 116#define RR_CL 16 /* Child link */ 117#define RR_PL 32 /* Parent link */ 118#define RR_RE 64 /* Relocation directory */ 119#define RR_TF 128 /* Timestamps */ 120