1/* 2 * Copyright (c) 1997-2006 Erez Zadok 3 * Copyright (c) 1989 Jan-Simon Pendry 4 * Copyright (c) 1989 Imperial College of Science, Technology & Medicine 5 * Copyright (c) 1989 The Regents of the University of California. 6 * All rights reserved. 7 * 8 * This code is derived from software contributed to Berkeley by 9 * Jan-Simon Pendry at Imperial College, London. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions and the following disclaimer. 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in the 18 * documentation and/or other materials provided with the distribution. 19 * 3. All advertising materials mentioning features or use of this software 20 * must display the following acknowledgment: 21 * This product includes software developed by the University of 22 * California, Berkeley and its contributors. 23 * 4. Neither the name of the University nor the names of its contributors 24 * may be used to endorse or promote products derived from this software 25 * without specific prior written permission. 26 * 27 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 28 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 29 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 30 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 31 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37 * SUCH DAMAGE. 38 * 39 * 40 * File: am-utils/amd/amfs_error.c 41 * 42 */ 43 44/* 45 * Error file system. 46 * This is used as a last resort catchall if 47 * nothing else worked. EFS just returns lots 48 * of error codes, except for unmount which 49 * always works of course. 50 */ 51 52#ifdef HAVE_CONFIG_H 53# include <config.h> 54#endif /* HAVE_CONFIG_H */ 55#include <am_defs.h> 56#include <amd.h> 57 58static char *amfs_error_match(am_opts *fo); 59static int amfs_error_mount(am_node *am, mntfs *mf); 60static int amfs_error_umount(am_node *am, mntfs *mf); 61 62 63/* 64 * Ops structure 65 */ 66am_ops amfs_error_ops = 67{ 68 "error", 69 amfs_error_match, 70 0, /* amfs_error_init */ 71 amfs_error_mount, 72 amfs_error_umount, 73 amfs_error_lookup_child, 74 amfs_error_mount_child, 75 amfs_error_readdir, 76 0, /* amfs_error_readlink */ 77 0, /* amfs_error_mounted */ 78 0, /* amfs_error_umounted */ 79 amfs_generic_find_srvr, 80 0, /* amfs_error_get_wchan */ 81 FS_DISCARD, /* nfs_fs_flags */ 82#ifdef HAVE_FS_AUTOFS 83 AUTOFS_ERROR_FS_FLAGS, 84#endif /* HAVE_FS_AUTOFS */ 85}; 86 87 88 89/* 90 * EFS file system always matches 91 */ 92static char * 93amfs_error_match(am_opts *fo) 94{ 95 return strdup("(error-hook)"); 96} 97 98 99static int 100amfs_error_mount(am_node *am, mntfs *mf) 101{ 102 return ENOENT; 103} 104 105 106static int 107amfs_error_umount(am_node *am, mntfs *mf) 108{ 109 /* 110 * Always succeed 111 */ 112 return 0; 113} 114 115 116/* 117 * EFS interface to RPC lookup() routine. 118 * Should never get here in the automounter. 119 * If we do then just give an error. 120 */ 121am_node * 122amfs_error_lookup_child(am_node *mp, char *fname, int *error_return, int op) 123{ 124 *error_return = ESTALE; 125 return 0; 126} 127 128 129/* 130 * EFS interface to RPC lookup() routine. 131 * Should never get here in the automounter. 132 * If we do then just give an error. 133 */ 134am_node * 135amfs_error_mount_child(am_node *ap, int *error_return) 136{ 137 *error_return = ESTALE; 138 return 0; 139} 140 141 142/* 143 * EFS interface to RPC readdir() routine. 144 * Should never get here in the automounter. 145 * If we do then just give an error. 146 */ 147int 148amfs_error_readdir(am_node *mp, nfscookie cookie, nfsdirlist *dp, nfsentry *ep, u_int count) 149{ 150 return ESTALE; 151} 152