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