1/*-
2 * SPDX-License-Identifier: BSD-3-Clause
3 *
4 * Copyright (c) 1993, 1994
5 *	The Regents of the University of California.  All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley
8 * by Pace Willisson (pace@blitz.com).  The Rock Ridge Extension
9 * Support code is derived from software contributed to Berkeley
10 * by Atsushi Murai (amurai@spec.co.jp).
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 *    notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 *    notice, this list of conditions and the following disclaimer in the
19 *    documentation and/or other materials provided with the distribution.
20 * 3. Neither the name of the University nor the names of its contributors
21 *    may be used to endorse or promote products derived from this software
22 *    without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 */
36
37#ifndef _ISOFS_CD9660_CD9660_RRIP_H_
38#define _ISOFS_CD9660_CD9660_RRIP_H_
39
40typedef struct {
41	char   type			[ISODCL (  0,    1)];
42	u_char length			[ISODCL (  2,    2)]; /* 711 */
43	u_char version			[ISODCL (  3,    3)];
44} ISO_SUSP_HEADER;
45
46typedef struct {
47	ISO_SUSP_HEADER			h;
48	char mode			[ISODCL (  4,   11)]; /* 733 */
49	char links			[ISODCL ( 12,   19)]; /* 733 */
50	char uid			[ISODCL ( 20,   27)]; /* 733 */
51	char gid			[ISODCL ( 28,   35)]; /* 733 */
52} ISO_RRIP_ATTR;
53
54typedef struct {
55	ISO_SUSP_HEADER			h;
56	char dev_t_high			[ISODCL (  4,   11)]; /* 733 */
57	char dev_t_low			[ISODCL ( 12,   19)]; /* 733 */
58} ISO_RRIP_DEVICE;
59
60#define	ISO_SUSP_CFLAG_CONTINUE	0x01
61#define	ISO_SUSP_CFLAG_CURRENT	0x02
62#define	ISO_SUSP_CFLAG_PARENT	0x04
63#define	ISO_SUSP_CFLAG_ROOT	0x08
64#define	ISO_SUSP_CFLAG_VOLROOT	0x10
65#define	ISO_SUSP_CFLAG_HOST	0x20
66
67typedef struct {
68	u_char cflag			[ISODCL (  1,    1)];
69	u_char clen			[ISODCL (  2,    2)];
70	u_char name			[1];			/* XXX */
71} ISO_RRIP_SLINK_COMPONENT;
72#define	ISO_RRIP_SLSIZ	2
73
74typedef struct {
75	ISO_SUSP_HEADER			h;
76	u_char flags			[ISODCL (  4,	 4)];
77	u_char component		[ISODCL (  5,	 5)];
78} ISO_RRIP_SLINK;
79
80typedef struct {
81	ISO_SUSP_HEADER			h;
82	char flags			[ISODCL (  4,	 4)];
83} ISO_RRIP_ALTNAME;
84
85typedef struct {
86	ISO_SUSP_HEADER			h;
87	char dir_loc			[ISODCL (  4,	 11)]; /* 733 */
88} ISO_RRIP_CLINK;
89
90typedef struct {
91	ISO_SUSP_HEADER			h;
92	char dir_loc			[ISODCL (  4,	 11)]; /* 733 */
93} ISO_RRIP_PLINK;
94
95typedef struct {
96	ISO_SUSP_HEADER			h;
97} ISO_RRIP_RELDIR;
98
99#define	ISO_SUSP_TSTAMP_FORM17	0x80
100#define	ISO_SUSP_TSTAMP_FORM7	0x00
101#define	ISO_SUSP_TSTAMP_CREAT	0x01
102#define	ISO_SUSP_TSTAMP_MODIFY	0x02
103#define	ISO_SUSP_TSTAMP_ACCESS	0x04
104#define	ISO_SUSP_TSTAMP_ATTR	0x08
105#define	ISO_SUSP_TSTAMP_BACKUP	0x10
106#define	ISO_SUSP_TSTAMP_EXPIRE	0x20
107#define	ISO_SUSP_TSTAMP_EFFECT	0x40
108
109typedef struct {
110	ISO_SUSP_HEADER			h;
111	u_char flags			[ISODCL (  4,    4)];
112	u_char time			[ISODCL (  5,    5)];
113} ISO_RRIP_TSTAMP;
114
115typedef struct {
116	ISO_SUSP_HEADER			h;
117	u_char flags			[ISODCL (  4,    4)];
118} ISO_RRIP_IDFLAG;
119
120typedef struct {
121	ISO_SUSP_HEADER			h;
122	char len_id			[ISODCL (  4,	 4)];
123	char len_des			[ISODCL (  5,	 5)];
124	char len_src			[ISODCL (  6,	 6)];
125	char version			[ISODCL (  7,	 7)];
126} ISO_RRIP_EXTREF;
127
128typedef struct {
129	ISO_SUSP_HEADER			h;
130	char check			[ISODCL (  4,	 5)];
131	char skip			[ISODCL (  6,	 6)];
132} ISO_RRIP_OFFSET;
133
134typedef struct {
135	ISO_SUSP_HEADER			h;
136	u_char location			[ISODCL (  4,	11)];
137	u_char offset			[ISODCL ( 12,	19)];
138	u_char length			[ISODCL ( 20,	27)];
139} ISO_RRIP_CONT;
140
141#endif /* _ISOFS_CD9660_CD9660_RRIP_H_ */
142