xref: /illumos-gate/usr/src/uts/common/sys/fs/hsfs_rrip.h (revision 2d6eb4a5)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5fc1c62b8Sfrankho  * Common Development and Distribution License (the "License").
6fc1c62b8Sfrankho  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
217c478bd9Sstevel@tonic-gate /*
227c478bd9Sstevel@tonic-gate  * ISO 9660 RRIP extension filesystem specifications
23fc1c62b8Sfrankho  */
24fc1c62b8Sfrankho /*
25*d10b6702Sfrankho  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
26fc1c62b8Sfrankho  * Use is subject to license terms.
277c478bd9Sstevel@tonic-gate  */
287c478bd9Sstevel@tonic-gate 
297c478bd9Sstevel@tonic-gate #ifndef	_SYS_FS_HSFS_RRIP_H
307c478bd9Sstevel@tonic-gate #define	_SYS_FS_HSFS_RRIP_H
317c478bd9Sstevel@tonic-gate 
327c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
337c478bd9Sstevel@tonic-gate extern "C" {
347c478bd9Sstevel@tonic-gate #endif
357c478bd9Sstevel@tonic-gate 
367c478bd9Sstevel@tonic-gate /*
377c478bd9Sstevel@tonic-gate  * Mount options specific to HSFS.
387c478bd9Sstevel@tonic-gate  * This is not a good place for them; we should probably have a file
397c478bd9Sstevel@tonic-gate  * named hsfs_mount.h for such stuff.
407c478bd9Sstevel@tonic-gate  */
41fc1c62b8Sfrankho #define	HSFSMNT_NORRIP		0x1	/* -nrr option found		 */
42fc1c62b8Sfrankho #define	HSFSMNT_NOTRAILDOT	0x2	/* ignore trailing '.'		 */
43fc1c62b8Sfrankho #define	HSFSMNT_NOMAPLCASE	0x4	/* do not map filenames to lcase */
44fc1c62b8Sfrankho #define	HSFSMNT_NOTRAILSPACE	0x8	/* no trailing space in iso 9660 */
45fc1c62b8Sfrankho #define	HSFSMNT_NOVERSION	0x10	/* no version info in iso 9660 */
46fc1c62b8Sfrankho #define	HSFSMNT_NOJOLIET	0x20	/* ignore Joliet even if present */
47fc1c62b8Sfrankho #define	HSFSMNT_JOLIETLONG	0x40	/* do not truncate Joliet filenames */
48fc1c62b8Sfrankho #define	HSFSMNT_NOVERS2		0x80	/* ignore ISO-9660:1999		 */
49*d10b6702Sfrankho #define	HSFSMNT_INODE		0x1000	/* May use ext_lbn as inode #, */
50*d10b6702Sfrankho 					/* FS is from a recent mkisofs */
517c478bd9Sstevel@tonic-gate 
527c478bd9Sstevel@tonic-gate /*
537c478bd9Sstevel@tonic-gate  * XXX: The following flag was used in the past to instruct the kernel to
547c478bd9Sstevel@tonic-gate  *	ignore Rock Ridge extensions on a CD. Unfortunately, this was
557c478bd9Sstevel@tonic-gate  *	implemented as part of the generic mount flags, a bad idea.
567c478bd9Sstevel@tonic-gate  *	This flag should not be used anymore. The HSFSMNT_NORRIP
577c478bd9Sstevel@tonic-gate  *	flag should be used in its place. The hsfs_mount code currently
587c478bd9Sstevel@tonic-gate  *	understands this flag, but this functionality should go
597c478bd9Sstevel@tonic-gate  *	away in the future.
607c478bd9Sstevel@tonic-gate  */
617c478bd9Sstevel@tonic-gate #define	MS_NO_RRIP		0x800000  /* if set, don't use Rock Ridge */
627c478bd9Sstevel@tonic-gate 
637c478bd9Sstevel@tonic-gate 
647c478bd9Sstevel@tonic-gate #define	MIN(a, b)   ((a) < (b) ? (a) : (b))
657c478bd9Sstevel@tonic-gate 
667c478bd9Sstevel@tonic-gate /*
677c478bd9Sstevel@tonic-gate  * Make sure we have this first
687c478bd9Sstevel@tonic-gate  */
697c478bd9Sstevel@tonic-gate 
707c478bd9Sstevel@tonic-gate #define	RRIP_VERSION		1
717c478bd9Sstevel@tonic-gate #define	RRIP_SUF_VERSION	1
727c478bd9Sstevel@tonic-gate #define	RRIP_EXT_VERSION	1
737c478bd9Sstevel@tonic-gate 
747c478bd9Sstevel@tonic-gate #define	RRIP_BIT	1	/* loc. in extension_name_table in susp.c */
757c478bd9Sstevel@tonic-gate 
767c478bd9Sstevel@tonic-gate #define	IS_RRIP_IMPLEMENTED(fsp) (IS_IMPL_BIT_SET(fsp, RRIP_BIT) ? 1 : 0)
777c478bd9Sstevel@tonic-gate 
787c478bd9Sstevel@tonic-gate 
797c478bd9Sstevel@tonic-gate 
807c478bd9Sstevel@tonic-gate /*
817c478bd9Sstevel@tonic-gate  * RRIP signature macros
827c478bd9Sstevel@tonic-gate  */
837c478bd9Sstevel@tonic-gate #define	RRIP_CL		"CL"
847c478bd9Sstevel@tonic-gate #define	RRIP_NM		"NM"
857c478bd9Sstevel@tonic-gate #define	RRIP_PL		"PL"
867c478bd9Sstevel@tonic-gate #define	RRIP_PN		"PN"
877c478bd9Sstevel@tonic-gate #define	RRIP_PX		"PX"
887c478bd9Sstevel@tonic-gate #define	RRIP_RE		"RE"
897c478bd9Sstevel@tonic-gate #define	RRIP_RR		"RR"
907c478bd9Sstevel@tonic-gate #define	RRIP_SL		"SL"
917c478bd9Sstevel@tonic-gate #define	RRIP_TF		"TF"
927c478bd9Sstevel@tonic-gate 
937c478bd9Sstevel@tonic-gate /*
947c478bd9Sstevel@tonic-gate  * RRIP ER extension fields
957c478bd9Sstevel@tonic-gate  */
967c478bd9Sstevel@tonic-gate #define	RRIP_ER_EXT_ID		"RRIP_1991A"
977c478bd9Sstevel@tonic-gate 
987c478bd9Sstevel@tonic-gate #define	RRIP_ER_EXT_DES		"THE ROCK RIDGE INTERCHANGE PROTOCOL PROVIDES \
997c478bd9Sstevel@tonic-gate SUPPORT FOR POSIX FILE SYSTEM SEMANTICS."
1007c478bd9Sstevel@tonic-gate 
1017c478bd9Sstevel@tonic-gate #define	RRIP_ER_EXT_SRC		"PLEASE CONTACT DISC PUBLISHER FOR \
1027c478bd9Sstevel@tonic-gate SPECIFICATION SOURCE.  SEE PUBLISHER IDENTIFIER IN PRIMARY VOLUME DESCRIPTOR \
1037c478bd9Sstevel@tonic-gate FOR CONTACT INFORMATION."
1047c478bd9Sstevel@tonic-gate 
1057c478bd9Sstevel@tonic-gate /*
1067c478bd9Sstevel@tonic-gate  * "TF" time macros
1077c478bd9Sstevel@tonic-gate  */
1087c478bd9Sstevel@tonic-gate #define	RRIP_TF_FLAGS(x)	*(RRIP_tf_flags(x))
1097c478bd9Sstevel@tonic-gate #define	RRIP_tf_flags(x)	(&((uchar_t *)(x))[4])
1107c478bd9Sstevel@tonic-gate 
1117c478bd9Sstevel@tonic-gate #define	RRIP_TIME_START_BP	5
1127c478bd9Sstevel@tonic-gate 
1137c478bd9Sstevel@tonic-gate #define	RRIP_TF_TIME_LENGTH(x)	(IS_TIME_BIT_SET(RRIP_TF_FLAGS(x), \
1147c478bd9Sstevel@tonic-gate 					RRIP_TF_LONG_BIT) ? \
1157c478bd9Sstevel@tonic-gate 					ISO_DATE_LEN : ISO_SHORT_DATE_LEN)
1167c478bd9Sstevel@tonic-gate 
1177c478bd9Sstevel@tonic-gate /*
1187c478bd9Sstevel@tonic-gate  * Time location bits
1197c478bd9Sstevel@tonic-gate  */
1207c478bd9Sstevel@tonic-gate #define	RRIP_TF_CREATION_BIT	0x01
1217c478bd9Sstevel@tonic-gate #define	RRIP_TF_MODIFY_BIT	0x02
1227c478bd9Sstevel@tonic-gate #define	RRIP_TF_ACCESS_BIT	0x04
1237c478bd9Sstevel@tonic-gate #define	RRIP_TF_ATTRIBUTES_BIT	0x08
1247c478bd9Sstevel@tonic-gate #define	RRIP_TF_BACKUP_BIT	0x10
1257c478bd9Sstevel@tonic-gate #define	RRIP_TF_EXPIRATION_BIT	0x20
1267c478bd9Sstevel@tonic-gate #define	RRIP_TF_EFFECTIVE_BIT	0x40
1277c478bd9Sstevel@tonic-gate #define	RRIP_TF_LONG_BIT	0x80
1287c478bd9Sstevel@tonic-gate 
1297c478bd9Sstevel@tonic-gate 
1307c478bd9Sstevel@tonic-gate 
1317c478bd9Sstevel@tonic-gate #define	RRIP_tf_creation(x)	(&((uchar_t *)x)[RRIP_TIME_START_BP])
1327c478bd9Sstevel@tonic-gate #define	RRIP_tf_modify(x)	(&((uchar_t *)x)[RRIP_TIME_START_BP + \
1337c478bd9Sstevel@tonic-gate 			(RRIP_TF_TIME_LENGTH(x) * \
1347c478bd9Sstevel@tonic-gate 				(IS_TIME_BIT_SET(RRIP_TF_FLAGS(x), \
1357c478bd9Sstevel@tonic-gate 				RRIP_TF_CREATION_BIT)))])
1367c478bd9Sstevel@tonic-gate 
1377c478bd9Sstevel@tonic-gate #define	RRIP_tf_access(x)	(&((uchar_t *)x)[RRIP_TIME_START_BP + \
1387c478bd9Sstevel@tonic-gate 			(RRIP_TF_TIME_LENGTH(x) * \
1397c478bd9Sstevel@tonic-gate 			(IS_TIME_BIT_SET(RRIP_TF_FLAGS(x), \
1407c478bd9Sstevel@tonic-gate 					RRIP_TF_CREATION_BIT) + \
1417c478bd9Sstevel@tonic-gate 			IS_TIME_BIT_SET(RRIP_TF_FLAGS(x), \
1427c478bd9Sstevel@tonic-gate 					RRIP_TF_MODIFY_BIT)))])
1437c478bd9Sstevel@tonic-gate 
1447c478bd9Sstevel@tonic-gate #define	RRIP_tf_attributes(x)	(&((uchar_t *)x)[RRIP_TIME_START_BP + \
1457c478bd9Sstevel@tonic-gate 			(RRIP_TF_TIME_LENGTH(x) * \
1467c478bd9Sstevel@tonic-gate 				(IS_TIME_BIT_SET(RRIP_TF_FLAGS(x), \
1477c478bd9Sstevel@tonic-gate 						RRIP_TF_CREATION_BIT) + \
1487c478bd9Sstevel@tonic-gate 				IS_TIME_BIT_SET(RRIP_TF_FLAGS(x), \
1497c478bd9Sstevel@tonic-gate 						RRIP_TF_MODIFY_BIT) + \
1507c478bd9Sstevel@tonic-gate 				IS_TIME_BIT_SET(RRIP_TF_FLAGS(x), \
1517c478bd9Sstevel@tonic-gate 						RRIP_TF_ACCESS_BIT)))])
1527c478bd9Sstevel@tonic-gate 
1537c478bd9Sstevel@tonic-gate 
1547c478bd9Sstevel@tonic-gate 
1557c478bd9Sstevel@tonic-gate /*
1567c478bd9Sstevel@tonic-gate  * Check if TF Bits are set.
1577c478bd9Sstevel@tonic-gate  *
1587c478bd9Sstevel@tonic-gate  * Note : IS_TIME_BIT_SET(x, y)  must be kept returning 1 and 0.
1597c478bd9Sstevel@tonic-gate  * 	see RRIP_tf_*(x) Macros
1607c478bd9Sstevel@tonic-gate  */
1617c478bd9Sstevel@tonic-gate #define	IS_TIME_BIT_SET(x, y)	(((x) & (y))  ? 1 : 0)
1627c478bd9Sstevel@tonic-gate #define	SET_TIME_BIT(x, y)	((x) |= (y))
1637c478bd9Sstevel@tonic-gate 
1647c478bd9Sstevel@tonic-gate 
1657c478bd9Sstevel@tonic-gate /*
1667c478bd9Sstevel@tonic-gate  * "PX" Posix attibutes
1677c478bd9Sstevel@tonic-gate  */
1687c478bd9Sstevel@tonic-gate #define	RRIP_mode(x)		(&((uchar_t *)x)[4])
1697c478bd9Sstevel@tonic-gate #define	RRIP_MODE(x)		(mode_t)BOTH_INT(RRIP_mode(x))
1707c478bd9Sstevel@tonic-gate 
1717c478bd9Sstevel@tonic-gate #define	RRIP_nlink(x)		(&((uchar_t *)x)[12])
1727c478bd9Sstevel@tonic-gate #define	RRIP_NLINK(x)		(short)BOTH_INT(RRIP_nlink(x))
1737c478bd9Sstevel@tonic-gate 
1747c478bd9Sstevel@tonic-gate #define	RRIP_uid(x)		(&((uchar_t *)x)[20])
1757c478bd9Sstevel@tonic-gate #define	RRIP_UID(x)		(uid_t)BOTH_INT(RRIP_uid(x))
1767c478bd9Sstevel@tonic-gate 
1777c478bd9Sstevel@tonic-gate #define	RRIP_gid(x)		(&((uchar_t *)x)[28])
1787c478bd9Sstevel@tonic-gate #define	RRIP_GID(x)		(gid_t)BOTH_INT(RRIP_gid(x))
1797c478bd9Sstevel@tonic-gate 
180*d10b6702Sfrankho #define	RRIP_ino(x)		(&((uchar_t *)x)[36])
181*d10b6702Sfrankho #define	RRIP_INO(x)		(uint32_t)BOTH_INT(RRIP_ino(x))
182*d10b6702Sfrankho 
183*d10b6702Sfrankho #define	RRIP_PX_OLD_SIZE	36
184*d10b6702Sfrankho #define	RRIP_PX_SIZE		44
185*d10b6702Sfrankho 
1867c478bd9Sstevel@tonic-gate /*
1877c478bd9Sstevel@tonic-gate  * "PN" Posix major/minor numbers
1887c478bd9Sstevel@tonic-gate  */
1897c478bd9Sstevel@tonic-gate 
1907c478bd9Sstevel@tonic-gate #define	RRIP_major(x)		(&((uchar_t *)x)[4])
1917c478bd9Sstevel@tonic-gate #define	RRIP_MAJOR(x)		BOTH_INT(RRIP_major(x))
1927c478bd9Sstevel@tonic-gate 
1937c478bd9Sstevel@tonic-gate #define	RRIP_minor(x)		(&((uchar_t *)x)[12])
1947c478bd9Sstevel@tonic-gate #define	RRIP_MINOR(x)		BOTH_INT(RRIP_minor(x))
1957c478bd9Sstevel@tonic-gate 
1967c478bd9Sstevel@tonic-gate 
1977c478bd9Sstevel@tonic-gate /*
1987c478bd9Sstevel@tonic-gate  *  "NM" alternate name and "SL" symbolic link macros...
1997c478bd9Sstevel@tonic-gate  */
2007c478bd9Sstevel@tonic-gate 
2017c478bd9Sstevel@tonic-gate #define	SYM_LINK_LEN(x)		(strlen(x) + 1)
2027c478bd9Sstevel@tonic-gate #define	RRIP_NAME_LEN_BASE	5
2037c478bd9Sstevel@tonic-gate #define	RRIP_NAME_LEN(x)	(SUF_LEN(x) - RRIP_NAME_LEN_BASE)
2047c478bd9Sstevel@tonic-gate 
2057c478bd9Sstevel@tonic-gate #define	RRIP_NAME_FLAGS(x)	(((uchar_t *)x)[4])
2067c478bd9Sstevel@tonic-gate 
2077c478bd9Sstevel@tonic-gate /*
2087c478bd9Sstevel@tonic-gate  * These are for the flag bits in the NM and SL and must remain <= 8 bits
2097c478bd9Sstevel@tonic-gate  */
2107c478bd9Sstevel@tonic-gate #define	RRIP_NAME_CONTINUE	0x01
2117c478bd9Sstevel@tonic-gate #define	RRIP_NAME_CURRENT	0x02
2127c478bd9Sstevel@tonic-gate #define	RRIP_NAME_PARENT	0x04
2137c478bd9Sstevel@tonic-gate #define	RRIP_NAME_ROOT		0x08
2147c478bd9Sstevel@tonic-gate #define	RRIP_NAME_VOLROOT	0x10
2157c478bd9Sstevel@tonic-gate #define	RRIP_NAME_HOST		0x20
2167c478bd9Sstevel@tonic-gate 
2177c478bd9Sstevel@tonic-gate 
2187c478bd9Sstevel@tonic-gate /*
2197c478bd9Sstevel@tonic-gate  * These are unique to use in the > 8 bits of sig_args.name_flags
2207c478bd9Sstevel@tonic-gate  * They are > 8 so that we can share bits from above.
2217c478bd9Sstevel@tonic-gate  * This can grow to 32 bits.
2227c478bd9Sstevel@tonic-gate  */
2237c478bd9Sstevel@tonic-gate #define	RRIP_NAME_CHANGE	0x40
2247c478bd9Sstevel@tonic-gate #define	RRIP_SYM_LINK_COMPLETE	0x80	/* set if sym link already read */
2257c478bd9Sstevel@tonic-gate 					/* from SUA (no longer than a short) */
2267c478bd9Sstevel@tonic-gate 
2277c478bd9Sstevel@tonic-gate /*
2287c478bd9Sstevel@tonic-gate  * Bit handling....
2297c478bd9Sstevel@tonic-gate  */
2307c478bd9Sstevel@tonic-gate #define	SET_NAME_BIT(x, y)	((x) |= (y))
2317c478bd9Sstevel@tonic-gate #define	UNSET_NAME_BIT(x, y)	((x) &= ~(y))
2327c478bd9Sstevel@tonic-gate #define	IS_NAME_BIT_SET(x, y)	((x) & (y))
2337c478bd9Sstevel@tonic-gate #define	NAME_HAS_CHANGED(flag)	\
2347c478bd9Sstevel@tonic-gate 			(IS_NAME_BIT_SET(flag, RRIP_NAME_CHANGE) ? 1 : 0)
2357c478bd9Sstevel@tonic-gate 
2367c478bd9Sstevel@tonic-gate #define	RRIP_name(x)		(&((uchar_t *)x)[5])
2377c478bd9Sstevel@tonic-gate #define	RRIP_NAME(x)		RRIP_name(x)
2387c478bd9Sstevel@tonic-gate 
2397c478bd9Sstevel@tonic-gate /*
2407c478bd9Sstevel@tonic-gate  * This is the maximum filename length that we support
2417c478bd9Sstevel@tonic-gate  */
2427c478bd9Sstevel@tonic-gate #define	RRIP_FILE_NAMELEN	255
2437c478bd9Sstevel@tonic-gate 
2447c478bd9Sstevel@tonic-gate 
2457c478bd9Sstevel@tonic-gate /*
2467c478bd9Sstevel@tonic-gate  * SL Symbolic link macros (in addition to common name flag macos
2477c478bd9Sstevel@tonic-gate  */
2487c478bd9Sstevel@tonic-gate /* these two macros are from the SL SUF pointer */
2497c478bd9Sstevel@tonic-gate #define	RRIP_sl_comp(x)		(&((uchar_t *)x)[5])
2507c478bd9Sstevel@tonic-gate #define	RRIP_SL_COMP(x)		RRIP_sl_comp(x)
2517c478bd9Sstevel@tonic-gate #define	RRIP_SL_FLAGS(x)	(((uchar_t *)x)[4])
2527c478bd9Sstevel@tonic-gate 
2537c478bd9Sstevel@tonic-gate 
2547c478bd9Sstevel@tonic-gate /* these macros are from the component pointer within the SL SUF */
2557c478bd9Sstevel@tonic-gate #define	RRIP_comp(x)		(&((uchar_t *)x)[2])
2567c478bd9Sstevel@tonic-gate #define	RRIP_COMP(x)		RRIP_comp(x)
2577c478bd9Sstevel@tonic-gate #define	RRIP_COMP_FLAGS(x)	(((uchar_t *)x)[0])
2587c478bd9Sstevel@tonic-gate #define	RRIP_COMP_LEN(x)	(RRIP_COMP_NAME_LEN(x) + 2)
2597c478bd9Sstevel@tonic-gate #define	RRIP_COMP_NAME_LEN(x)	(((uchar_t *)x)[1])
2607c478bd9Sstevel@tonic-gate 
2617c478bd9Sstevel@tonic-gate 
2627c478bd9Sstevel@tonic-gate /*
2637c478bd9Sstevel@tonic-gate  * Directory hierarchy macros
2647c478bd9Sstevel@tonic-gate  */
2657c478bd9Sstevel@tonic-gate 
2667c478bd9Sstevel@tonic-gate /*
2677c478bd9Sstevel@tonic-gate  * Macros for checking relocation bits in flags member of dlist
2687c478bd9Sstevel@tonic-gate  * structure defined in iso_impl.h
2697c478bd9Sstevel@tonic-gate  */
2707c478bd9Sstevel@tonic-gate #define	IS_RELOC_BIT_SET(x, y)	(((x) & (y))  ? 1 : 0)
2717c478bd9Sstevel@tonic-gate #define	SET_RELOC_BIT(x, y)	((x) |= (y))
2727c478bd9Sstevel@tonic-gate 
2737c478bd9Sstevel@tonic-gate #define	CHILD_LINK		0x01
2747c478bd9Sstevel@tonic-gate #define	PARENT_LINK		0x02
2757c478bd9Sstevel@tonic-gate #define	RELOCATED_DIR		0x04
2767c478bd9Sstevel@tonic-gate 
2777c478bd9Sstevel@tonic-gate #define	RRIP_child_lbn(x)	(&((uchar_t *)x)[4])
2787c478bd9Sstevel@tonic-gate #define	RRIP_CHILD_LBN(x)	(uint_t)BOTH_INT(RRIP_child_lbn(x))
2797c478bd9Sstevel@tonic-gate 
2807c478bd9Sstevel@tonic-gate #define	RRIP_parent_lbn(x)	(&((uchar_t *)x)[4])
2817c478bd9Sstevel@tonic-gate #define	RRIP_PARENT_LBN(x)	(uint_t)BOTH_INT(RRIP_parent_lbn(x))
2827c478bd9Sstevel@tonic-gate 
2837c478bd9Sstevel@tonic-gate 
2847c478bd9Sstevel@tonic-gate #ifdef _KERNEL
2857c478bd9Sstevel@tonic-gate 
2867c478bd9Sstevel@tonic-gate /*
2877c478bd9Sstevel@tonic-gate  * Forward declarations
2887c478bd9Sstevel@tonic-gate  */
2897c478bd9Sstevel@tonic-gate extern uchar_t *rrip_name(sig_args_t *);
2907c478bd9Sstevel@tonic-gate extern uchar_t *rrip_file_attr(sig_args_t *);
2917c478bd9Sstevel@tonic-gate extern uchar_t *rrip_dev_nodes(sig_args_t *);
2927c478bd9Sstevel@tonic-gate extern uchar_t *rrip_file_time(sig_args_t *);
2937c478bd9Sstevel@tonic-gate extern uchar_t *rrip_sym_link(sig_args_t *);
2947c478bd9Sstevel@tonic-gate extern uchar_t *rrip_parent_link(sig_args_t *);
2957c478bd9Sstevel@tonic-gate extern uchar_t *rrip_child_link(sig_args_t *);
2967c478bd9Sstevel@tonic-gate extern uchar_t *rrip_reloc_dir(sig_args_t *);
2977c478bd9Sstevel@tonic-gate extern uchar_t *rrip_rock_ridge(sig_args_t *);
2987c478bd9Sstevel@tonic-gate extern void hs_check_root_dirent(struct vnode *vp, struct hs_direntry *hdp);
299*d10b6702Sfrankho extern int rrip_namecopy(char *from, char *to, char *tmp_name,
300*d10b6702Sfrankho 				uchar_t *dirp, uint_t last_offset,
3017c478bd9Sstevel@tonic-gate 				struct hsfs *fsp, struct hs_direntry *hdp);
3027c478bd9Sstevel@tonic-gate #endif	/* _KERNEL */
3037c478bd9Sstevel@tonic-gate 
3047c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
3057c478bd9Sstevel@tonic-gate }
3067c478bd9Sstevel@tonic-gate #endif
3077c478bd9Sstevel@tonic-gate 
3087c478bd9Sstevel@tonic-gate #endif	/* _SYS_FS_HSFS_RRIP_H */
309