master
  1/*	$NetBSD: cd9660_extern.h,v 1.27.30.1 2024/06/22 10:57:10 martin Exp $	*/
  2
  3/*-
  4 * Copyright (c) 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 *	@(#)iso.h	8.4 (Berkeley) 12/5/94
 37 */
 38
 39/*
 40 * Definitions used in the kernel for cd9660 file system support.
 41 */
 42#ifndef _ISOFS_CD9660_CD9660_EXTERN_H_
 43#define _ISOFS_CD9660_CD9660_EXTERN_H_
 44
 45/*
 46 * Sysctl values for the cd9660 filesystem.
 47 */
 48#define CD9660_UTF8_JOLIET	1	/* UTF-8 encode Joliet file names */
 49
 50/* CD-ROM Format type */
 51enum ISO_FTYPE  { ISO_FTYPE_DEFAULT, ISO_FTYPE_9660, ISO_FTYPE_RRIP, ISO_FTYPE_ECMA };
 52
 53#ifndef	ISOFSMNT_ROOT
 54#define	ISOFSMNT_ROOT	0
 55#endif
 56
 57struct iso_mnt {
 58	int im_flags;
 59	int im_joliet_level;
 60
 61	struct mount *im_mountp;
 62	dev_t im_dev;
 63	struct vnode *im_devvp;
 64
 65	int logical_block_size;
 66	int im_bshift;
 67	int im_bmask;
 68
 69	int volume_space_size;
 70
 71	char root[ISODCL (157, 190)];
 72	int root_extent;
 73	int root_size;
 74	enum ISO_FTYPE  iso_ftype;
 75
 76	int rr_skip;
 77	int rr_skip0;
 78};
 79
 80#define VFSTOISOFS(mp)	((struct iso_mnt *)((mp)->mnt_data))
 81
 82#define cd9660_blkoff(imp, loc)		((loc) & (imp)->im_bmask)
 83#define cd9660_lblktosize(imp, blk)	((blk) << (imp)->im_bshift)
 84#define cd9660_lblkno(imp, loc)	((loc) >> (imp)->im_bshift)
 85#define cd9660_blksize(imp, ip, lbn)	((imp)->logical_block_size)
 86
 87#ifdef _KERNEL
 88
 89VFS_PROTOS(cd9660);
 90
 91#include <sys/mallocvar.h>
 92MALLOC_DECLARE(M_ISOFSMNT);
 93
 94extern struct pool cd9660_node_pool;
 95extern int cd9660_utf8_joliet;
 96
 97int cd9660_mountroot(void);
 98
 99extern int (**cd9660_vnodeop_p)(void *);
100extern int (**cd9660_specop_p)(void *);
101extern int (**cd9660_fifoop_p)(void *);
102
103ino_t isodirino(struct iso_directory_record *, struct iso_mnt *);
104#endif /* _KERNEL */
105
106int isochar(const u_char *, const u_char *, int, u_int16_t *);
107int isofncmp(const u_char *, size_t, const u_char *, size_t, int);
108void isofntrans(const u_char *, int, u_char *, u_short *, int, int, int, int);
109
110#endif /* _ISOFS_CD9660_CD9660_EXTERN_H_ */