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