xref: /illumos-gate/usr/src/cmd/picl/plugins/lib/picld_pluginutil/picld_pluginutil_impl.h (revision a0955b86cd77e22e80846428a5065e871b6d8eb8)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 1999-2002 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #ifndef	_PICLD_PLUGINUTIL_IMPL_H
28 #define	_PICLD_PLUGINUTIL_IMPL_H
29 
30 #pragma ident	"%Z%%M%	%I%	%E% SMI"
31 
32 #ifdef	__cplusplus
33 extern "C" {
34 #endif
35 
36 #define	PER_ALLOC_COUNT		256
37 #define	RECORD_SIZE_MAX		1024
38 #define	STARTING_INDEX		0
39 #define	SUPPORTED_VERSION_NUM	1.1
40 
41 /* reserved keyword (case insensitive) */
42 #define	KEYWORD_INT_TYPE	"int"
43 #define	KEYWORD_UINT_TYPE	"uint"
44 #define	KEYWORD_FLOAT_TYPE	"float"
45 #define	KEYWORD_STRING_TYPE	"string"
46 #define	KEYWORD_VOID_TYPE	"void"
47 #define	KEYWORD_READ_MODE	"r"
48 #define	KEYWORD_WRITE_MODE	"w"
49 #define	KEYWORD_READWRITE_MODE	"rw"
50 #define	KEYWORD_WITH_STR	"with"
51 
52 #define	WHITESPACE		" \t\n"
53 #define	RECORD_WHITESPACE	": \t\n"
54 #define	DOUBLE_QUOTE		"\""
55 
56 typedef	struct {
57 	char			*path;
58 } path_cmd_t;
59 
60 typedef	struct {
61 	picl_nodehdl_t		nodeh;
62 	char			*nodename;
63 	char			*classname;
64 } node_cmd_t;
65 
66 typedef	struct {
67 	picl_prophdl_t		proph;
68 	size_t			size;
69 	int			type;
70 	int			accessmode;
71 	char			*pname;
72 	void			*valbuf;
73 } prop_cmd_t;
74 
75 typedef	struct {
76 	picl_prophdl_t		proph;
77 	char			*pname;
78 	char			*dstnode;
79 } refprop_cmd_t;
80 
81 typedef	struct {
82 	picl_nodehdl_t		nodeh;
83 	char			*newnodename;
84 	char			*newnodeclass;
85 	char			*dstnode;
86 } refnode_cmd_t;
87 
88 typedef	struct {
89 	picl_prophdl_t		tblh;
90 	int			newtbl;
91 	char			*tname;
92 } table_cmd_t;
93 
94 typedef	struct {
95 	int			index;
96 	int			nproph;
97 	picl_prophdl_t		*prophs;
98 } row_cmd_t;
99 
100 typedef	struct {
101 	int32_t			level;
102 } verbose_cmd_t;
103 
104 typedef struct {
105 	int			type;
106 	union {
107 		path_cmd_t	path;
108 		node_cmd_t	node;
109 		prop_cmd_t	prop;
110 		refprop_cmd_t	refprop;
111 		refnode_cmd_t	refnode;
112 		table_cmd_t	table;
113 		row_cmd_t	row;
114 		verbose_cmd_t	verbose;
115 	} u;
116 } command_t;
117 
118 typedef struct {
119 	int		count;
120 	int		allocated;
121 	float		version_no;
122 	int		inside_node_block;
123 	int		verbose;
124 	const char	*fname;
125 	int		inside_table_block;
126 	int		current_tbl;
127 	int		inside_row_block;
128 	int		current_row;
129 	command_t	*commands;
130 } cmdbuf_t;
131 
132 #define	pathcmd_name		u.path.path
133 #define	nodecmd_nodeh		u.node.nodeh
134 #define	nodecmd_nodename	u.node.nodename
135 #define	nodecmd_classname	u.node.classname
136 #define	nodecmd_classname	u.node.classname
137 #define	propcmd_proph		u.prop.proph
138 #define	propcmd_pname		u.prop.pname
139 #define	propcmd_type		u.prop.type
140 #define	propcmd_accessmode	u.prop.accessmode
141 #define	propcmd_size		u.prop.size
142 #define	propcmd_valbuf		u.prop.valbuf
143 #define	refpropcmd_proph	u.refprop.proph
144 #define	refpropcmd_pname	u.refprop.pname
145 #define	refpropcmd_dstnode	u.refprop.dstnode
146 #define	refnodecmd_nodeh	u.refnode.nodeh
147 #define	refnodecmd_name		u.refnode.newnodename
148 #define	refnodecmd_class	u.refnode.newnodeclass
149 #define	refnodecmd_dstnode	u.refnode.dstnode
150 #define	tablecmd_tblh		u.table.tblh
151 #define	tablecmd_newtbl		u.table.newtbl
152 #define	tablecmd_tname		u.table.tname
153 #define	rowcmd_index		u.row.index
154 #define	rowcmd_nproph		u.row.nproph
155 #define	rowcmd_prophs		u.row.prophs
156 #define	verbosecmd_level	u.verbose.level
157 
158 #ifdef	__cplusplus
159 }
160 #endif
161 
162 #endif	/* _PICLD_PLUGINUTIL_IMPL_H */
163