xref: /trueos/contrib/amd/fsinfo/fsi_data.h (revision 2e06911c043c995eb8eb5f67a778b74564d0c018)
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 */
239