]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/amd/fsinfo/fsi_data.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / amd / fsinfo / fsi_data.h
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/fsinfo/fsi_data.h
41  *
42  */
43
44 #ifndef _FSI_DATA_H
45 #define _FSI_DATA_H
46
47 typedef struct auto_tree auto_tree;
48 typedef struct automount automount;
49 typedef struct dict dict;
50 typedef struct dict_data dict_data;
51 typedef struct dict_ent dict_ent;
52 typedef struct disk_fs disk_fs;
53 typedef struct ether_if ether_if;
54 typedef struct fsmount fsmount;
55 typedef struct host host;
56 typedef struct ioloc ioloc;
57 typedef struct fsi_mount fsi_mount;
58
59
60 /*
61  * Automount tree
62  */
63 struct automount {
64   qelem a_q;
65   ioloc *a_ioloc;
66   char *a_name;                 /* Automount key */
67   char *a_volname;              /* Equivalent volume to be referenced */
68   char *a_symlink;              /* Symlink representation */
69   char *a_opts;                 /* opts for mounting */
70   char *a_hardwiredfs;          /* hack to bypass bogus fs definitions */
71   qelem *a_mount;               /* Tree representation */
72   dict_ent *a_mounted;
73 };
74
75 /*
76  * List of automount trees
77  */
78 struct auto_tree {
79   qelem t_q;
80   ioloc *t_ioloc;
81   char *t_defaults;
82   qelem *t_mount;
83 };
84
85 /*
86  * A host
87  */
88 struct host {
89   qelem q;
90   int h_mask;
91   ioloc *h_ioloc;
92   fsmount *h_netroot, *h_netswap;
93 #define HF_HOST 0
94   char *h_hostname;     /* The full name of the host */
95   char *h_lochost;      /* The name of the host with local domains stripped */
96   char *h_hostpath;     /* The filesystem path to the host (cf
97                            compute_hostpath) */
98 #define HF_ETHER 1
99   qelem *h_ether;
100 #define HF_CONFIG 2
101   qelem *h_config;
102 #define HF_ARCH 3
103   char *h_arch;
104 #define HF_CLUSTER 4
105   char *h_cluster;
106 #define HF_OS 5
107   char *h_os;
108   qelem *h_disk_fs;
109   qelem *h_mount;
110 };
111
112 /*
113  * An ethernet interface
114  */
115 struct ether_if {
116   qelem e_q;
117   int e_mask;
118   ioloc *e_ioloc;
119   char *e_if;
120 #define EF_INADDR 0
121   struct in_addr e_inaddr;
122 #define EF_NETMASK 1
123   u_long e_netmask;
124 #define EF_HWADDR 2
125   char *e_hwaddr;
126 };
127
128 /*
129  * Disk filesystem structure.
130  *
131  * If the DF_* numbers are changed
132  * disk_fs_strings in analyze.c will
133  * need updating.
134  */
135 struct disk_fs {
136   qelem d_q;
137   int d_mask;
138   ioloc *d_ioloc;
139   host *d_host;
140   char *d_mountpt;
141   char *d_dev;
142 #define DF_FSTYPE       0
143   char *d_fstype;
144 #define DF_OPTS         1
145   char *d_opts;
146 #define DF_DUMPSET      2
147   char *d_dumpset;
148 #define DF_PASSNO       3
149   int d_passno;
150 #define DF_FREQ         4
151   int d_freq;
152 #define DF_MOUNT        5
153   qelem *d_mount;
154 #define DF_LOG          6
155   char *d_log;
156 };
157
158 #define DF_REQUIRED     ((1<<DF_FSTYPE)|(1<<DF_OPTS)|(1<<DF_PASSNO)|(1<<DF_MOUNT))
159
160 /*
161  * A mount tree
162  */
163 struct fsi_mount {
164   qelem m_q;
165   ioloc *m_ioloc;
166   int m_mask;
167 #define DM_VOLNAME      0
168   char *m_volname;
169 #define DM_EXPORTFS     1
170   char *m_exportfs;
171 #define DM_SEL          2
172   char *m_sel;
173   char *m_name;
174   int m_name_len;
175   fsi_mount *m_parent;
176   disk_fs *m_dk;
177   fsi_mount *m_exported;
178   qelem *m_mount;
179 };
180
181 /*
182  * Additional filesystem mounts
183  *
184  * If the FM_* numbers are changed
185  * disk_fs_strings in analyze.c will
186  * need updating.
187  */
188 struct fsmount {
189   qelem f_q;
190   fsi_mount *f_ref;
191   ioloc *f_ioloc;
192   int f_mask;
193 #define FM_LOCALNAME    0
194   char *f_localname;
195 #define FM_VOLNAME      1
196   char *f_volname;
197 #define FM_FSTYPE       2
198   char *f_fstype;
199 #define FM_OPTS         3
200   char *f_opts;
201 #define FM_FROM         4
202   char *f_from;
203 #define FM_DIRECT       5
204 };
205
206 #define FM_REQUIRED     ((1<<FM_VOLNAME)|(1<<FM_FSTYPE)|(1<<FM_OPTS)|(1<<FM_FROM)|(1<<FM_LOCALNAME))
207 #define FM_NETROOT      0x01
208 #define FM_NETSWAP      0x02
209 #define FM_NETBOOT      (FM_NETROOT|FM_NETSWAP)
210
211 #define DICTHASH        5
212 struct dict_ent {
213   dict_ent *de_next;
214   char *de_key;
215   int de_count;
216   qelem de_q;
217 };
218
219 /*
220  * Dictionaries ...
221  */
222 struct dict_data {
223   qelem dd_q;
224   char *dd_data;
225 };
226
227 struct dict {
228   dict_ent *de[DICTHASH];
229 };
230
231 /*
232  * Source text location for error reports
233  */
234 struct ioloc {
235   int i_line;
236   char *i_file;
237 };
238 #endif /* not _FSI_DATA_H */