1/* 2 * Copyright (c) 1997-2014 Erez Zadok 3 * Copyright (c) 2005 Daniel P. Ottavio 4 * Copyright (c) 1990 Jan-Simon Pendry 5 * Copyright (c) 1990 Imperial College of Science, Technology & Medicine 6 * Copyright (c) 1990 The Regents of the University of California. 7 * All rights reserved. 8 * 9 * This code is derived from software contributed to Berkeley by 10 * Jan-Simon Pendry at Imperial College, London. 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 * File: am-utils/amd/sun_map.h 38 * 39 */ 40 41#ifndef _SUN_MAP_H 42#define _SUN_MAP_H 43 44/* host */ 45struct sun_host { 46 qelem head; /* link-list header */ 47 char *name; /* hostname */ 48 int weight; /* weight given to the host */ 49}; 50 51/* location */ 52struct sun_location { 53 qelem head; /* link-list header */ 54 char *path; /* server path */ 55 struct sun_host *host_list; /* list of hosts */ 56}; 57 58/* sun mount option */ 59struct sun_opt { 60 qelem head; /* link-list header */ 61 char *str; /* option string */ 62}; 63 64/* mount point */ 65struct sun_mountpt { 66 qelem head; /* link-list header */ 67 char *path; /* optional mount point path */ 68 char *fstype; /* filesystem type */ 69 struct sun_opt *opt_list; /* list of option strings */ 70 struct sun_location *location_list; /* list of 'struct s2a_location' */ 71}; 72 73/* automount entry */ 74struct sun_entry { 75 qelem head; /* link-list header */ 76 char *key; /* auto map key */ 77 char *fstype; /* filesystem type */ 78 struct sun_opt *opt_list; /* list of mount options */ 79 struct sun_location *location_list; /* list of mount locations */ 80 struct sun_mountpt *mountpt_list; /* list of mount points */ 81}; 82 83/* 84 * automount map file 85 * 86 * XXX: Only a place holder structure, not implemented yet. 87 */ 88struct sun_map { 89 qelem head; /* link-list header */ 90 char *path; /* directory path of the map file */ 91 char *mount_dir; /* top level mount point for this map */ 92 int lookup; /* lookup type i.e file, yp, program, etc. */ 93 int direct_bool; /* set true if this map is a direct map */ 94 struct sun_opt *opt_list; /* list of global map options */ 95 struct sun_opt *include_list; /* list of included map files */ 96 struct sun_entry *entry_list; /* list of 'struct s2a_entry' */ 97}; 98 99/* 100 * master map file 101 * 102 * XXX: Only a place holder structure, not implemented yet. 103 */ 104struct sun_mmap { 105 qelem head; /* link-list header */ 106 struct sun_opt *include_list; /* list of included master maps */ 107 struct sun_map *amap_list; /* list of 'struct s2a_amap' */ 108}; 109 110struct sun_list { 111 qelem *first; 112 qelem *last; 113}; 114 115 116/* 117 * EXTERNS 118 */ 119extern char *sun_entry2amd(const char *, const char *); 120extern struct sun_entry *sun_map_parse_read(const char *); 121extern void sun_list_add(struct sun_list *, qelem *); 122 123#endif /* not _SUN_MAP_H */ 124