xref: /illumos-gate/usr/src/test/util-tests/tests/smbios/smbios_test.h (revision 49f72993927fbcc8093ddd143715f814931de21a)
1176a9270SRobert Mustacchi /*
2176a9270SRobert Mustacchi  * This file and its contents are supplied under the terms of the
3176a9270SRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4176a9270SRobert Mustacchi  * You may only use this file in accordance with the terms of version
5176a9270SRobert Mustacchi  * 1.0 of the CDDL.
6176a9270SRobert Mustacchi  *
7176a9270SRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8176a9270SRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9176a9270SRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10176a9270SRobert Mustacchi  */
11176a9270SRobert Mustacchi 
12176a9270SRobert Mustacchi /*
13064d431aSRobert Mustacchi  * Copyright 2024 Oxide Computer Company
14176a9270SRobert Mustacchi  */
15176a9270SRobert Mustacchi 
16176a9270SRobert Mustacchi #ifndef _SMBIOS_TEST_H
17176a9270SRobert Mustacchi #define	_SMBIOS_TEST_H
18176a9270SRobert Mustacchi 
19176a9270SRobert Mustacchi /*
20176a9270SRobert Mustacchi  * Test framework for SMBIOS tests
21176a9270SRobert Mustacchi  */
22176a9270SRobert Mustacchi 
23176a9270SRobert Mustacchi #include <smbios.h>
24176a9270SRobert Mustacchi #include <sys/smbios.h>
25176a9270SRobert Mustacchi #include <sys/smbios_impl.h>
26176a9270SRobert Mustacchi #include <err.h>
27176a9270SRobert Mustacchi #include <stdint.h>
28176a9270SRobert Mustacchi #include <endian.h>
29176a9270SRobert Mustacchi #include <stdlib.h>
30176a9270SRobert Mustacchi 
31176a9270SRobert Mustacchi #ifdef __cplusplus
32176a9270SRobert Mustacchi extern "C" {
33176a9270SRobert Mustacchi #endif
34176a9270SRobert Mustacchi 
35176a9270SRobert Mustacchi /*
36176a9270SRobert Mustacchi  * Number of bytes we allocate at a given time for an SMBIOS table.
37176a9270SRobert Mustacchi  */
38176a9270SRobert Mustacchi #define	SMBIOS_TEST_ALLOC_SIZE	1024
39176a9270SRobert Mustacchi 
40176a9270SRobert Mustacchi typedef struct smbios_test_table {
41176a9270SRobert Mustacchi 	smbios_entry_point_t	stt_type;
42176a9270SRobert Mustacchi 	void			*stt_data;
43176a9270SRobert Mustacchi 	size_t			stt_buflen;
44176a9270SRobert Mustacchi 	size_t			stt_offset;
45176a9270SRobert Mustacchi 	uint_t			stt_nents;
46176a9270SRobert Mustacchi 	uint_t			stt_version;
47176a9270SRobert Mustacchi 	uint_t			stt_nextid;
48176a9270SRobert Mustacchi 	smbios_entry_t		stt_entry;
49176a9270SRobert Mustacchi } smbios_test_table_t;
50176a9270SRobert Mustacchi 
51176a9270SRobert Mustacchi /*
52176a9270SRobert Mustacchi  * General Interfaces used to construct tables.
53176a9270SRobert Mustacchi  */
54176a9270SRobert Mustacchi extern smbios_test_table_t *smbios_test_table_init(smbios_entry_point_t,
55176a9270SRobert Mustacchi     uint_t);
56176a9270SRobert Mustacchi extern void smbios_test_table_append_raw(smbios_test_table_t *, const void *,
57176a9270SRobert Mustacchi     size_t);
58176a9270SRobert Mustacchi extern void smbios_test_table_append_string(smbios_test_table_t *,
59176a9270SRobert Mustacchi     const char *);
60d53cdfabSRobert Mustacchi extern void smbios_test_table_str_fini(smbios_test_table_t *);
61176a9270SRobert Mustacchi extern uint16_t smbios_test_table_append(smbios_test_table_t *, const void *,
62176a9270SRobert Mustacchi     size_t);
63176a9270SRobert Mustacchi extern void smbios_test_table_append_eot(smbios_test_table_t *);
64176a9270SRobert Mustacchi 
65176a9270SRobert Mustacchi typedef boolean_t (*smbios_test_mktable_f)(smbios_test_table_t *);
66176a9270SRobert Mustacchi typedef boolean_t (*smbios_test_verify_f)(smbios_hdl_t *);
67176a9270SRobert Mustacchi 
68176a9270SRobert Mustacchi typedef struct smbios_test {
69176a9270SRobert Mustacchi 	int			st_entry;
70176a9270SRobert Mustacchi 	int			st_tvers;
71176a9270SRobert Mustacchi 	int			st_libvers;
72176a9270SRobert Mustacchi 	smbios_test_mktable_f	st_mktable;
73176a9270SRobert Mustacchi 	boolean_t		st_canopen;
74176a9270SRobert Mustacchi 	smbios_test_verify_f	st_verify;
75176a9270SRobert Mustacchi 	const char		*st_desc;
76176a9270SRobert Mustacchi } smbios_test_t;
77176a9270SRobert Mustacchi 
78176a9270SRobert Mustacchi /*
79176a9270SRobert Mustacchi  * Test functions
80176a9270SRobert Mustacchi  */
81176a9270SRobert Mustacchi extern boolean_t smbios_test_slot_mktable(smbios_test_table_t *);
82c6795799SRobert Mustacchi extern boolean_t smbios_test_slot_mktable_34_nopeers(smbios_test_table_t *);
83c6795799SRobert Mustacchi extern boolean_t smbios_test_slot_mktable_34_peers(smbios_test_table_t *);
84d53cdfabSRobert Mustacchi extern boolean_t smbios_test_slot_mktable_35(smbios_test_table_t *);
85176a9270SRobert Mustacchi extern boolean_t smbios_test_slot_verify(smbios_hdl_t *);
86c6795799SRobert Mustacchi extern boolean_t smbios_test_slot_verify_34_nopeers(smbios_hdl_t *);
87c6795799SRobert Mustacchi extern boolean_t smbios_test_slot_verify_34_peers(smbios_hdl_t *);
88d53cdfabSRobert Mustacchi extern boolean_t smbios_test_slot_verify_34_overrun(smbios_hdl_t *);
89d53cdfabSRobert Mustacchi extern boolean_t smbios_test_slot_verify_35(smbios_hdl_t *);
90d53cdfabSRobert Mustacchi 
91176a9270SRobert Mustacchi extern boolean_t smbios_test_badvers_mktable(smbios_test_table_t *);
92d53cdfabSRobert Mustacchi extern boolean_t smbios_test_verify_badids(smbios_hdl_t *);
93176a9270SRobert Mustacchi 
94176a9270SRobert Mustacchi extern boolean_t smbios_test_memdevice_mktable_32(smbios_test_table_t *);
95176a9270SRobert Mustacchi extern boolean_t smbios_test_memdevice_mktable_33(smbios_test_table_t *);
96176a9270SRobert Mustacchi extern boolean_t smbios_test_memdevice_mktable_33ext(smbios_test_table_t *);
976bc074b1SRobert Mustacchi extern boolean_t smbios_test_memdevice_mktable_37(smbios_test_table_t *);
98176a9270SRobert Mustacchi extern boolean_t smbios_test_memdevice_verify_32(smbios_hdl_t *);
99176a9270SRobert Mustacchi extern boolean_t smbios_test_memdevice_verify_32_33(smbios_hdl_t *);
1006bc074b1SRobert Mustacchi extern boolean_t smbios_test_memdevice_verify_32_37(smbios_hdl_t *);
101176a9270SRobert Mustacchi extern boolean_t smbios_test_memdevice_verify_33(smbios_hdl_t *);
102176a9270SRobert Mustacchi extern boolean_t smbios_test_memdevice_verify_33ext(smbios_hdl_t *);
1036bc074b1SRobert Mustacchi extern boolean_t smbios_test_memdevice_verify_37(smbios_hdl_t *);
104176a9270SRobert Mustacchi 
105176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_mktable_amd64(smbios_test_table_t *);
106176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_verify_amd64(smbios_hdl_t *);
107176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_mktable_riscv(smbios_test_table_t *);
108176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_verify_riscv(smbios_hdl_t *);
109176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_mktable_invlen1(smbios_test_table_t *);
110176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_mktable_invlen2(smbios_test_table_t *);
111176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_mktable_invlen3(smbios_test_table_t *);
112176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_mktable_invlen4(smbios_test_table_t *);
113176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_verify_invlen1(smbios_hdl_t *);
114176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_verify_invlen2(smbios_hdl_t *);
115176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_verify_invlen3(smbios_hdl_t *);
116176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_verify_invlen4(smbios_hdl_t *);
117176a9270SRobert Mustacchi extern boolean_t smbios_test_pinfo_verify_badtype(smbios_hdl_t *);
118176a9270SRobert Mustacchi 
119d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_mktable_invlen1(smbios_test_table_t *);
120d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_mktable_invlen2(smbios_test_table_t *);
121d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_mktable_badstr(smbios_test_table_t *);
122d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_mktable_basic(smbios_test_table_t *);
123d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_verify_invlen1(smbios_hdl_t *);
124d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_verify_invlen2(smbios_hdl_t *);
125d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_verify_badstr(smbios_hdl_t *);
126d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_verify_badtype(smbios_hdl_t *);
127d53cdfabSRobert Mustacchi extern boolean_t smbios_test_strprop_verify_basic(smbios_hdl_t *);
128d53cdfabSRobert Mustacchi 
129d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_mktable_invlen_base(smbios_test_table_t *);
130d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_mktable_invlen_comps(smbios_test_table_t *);
131d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_mktable_nocomps(smbios_test_table_t *);
132d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_mktable_comps(smbios_test_table_t *);
133d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_verify_invlen_base(smbios_hdl_t *);
134d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_verify_invlen_comps(smbios_hdl_t *);
135d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_verify_badtype(smbios_hdl_t *);
136d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_verify_nocomps(smbios_hdl_t *);
137d53cdfabSRobert Mustacchi extern boolean_t smbios_test_fwinfo_verify_comps(smbios_hdl_t *);
138d53cdfabSRobert Mustacchi 
139d53cdfabSRobert Mustacchi extern boolean_t smbios_test_verify_strings(smbios_hdl_t *);
140d53cdfabSRobert Mustacchi 
141d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_mktable_invlen_base(smbios_test_table_t *);
142d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_mktable_base(smbios_test_table_t *);
143851677fbSRobert Mustacchi extern boolean_t smbios_test_chassis_mktable_part(smbios_test_table_t *);
144d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_mktable_comps(smbios_test_table_t *);
145d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_mktable_sku(smbios_test_table_t *);
146d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_mktable_sku_nocomps(smbios_test_table_t *);
147d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_verify_invlen(smbios_hdl_t *);
148d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_verify_base(smbios_hdl_t *);
149d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_verify_comps(smbios_hdl_t *);
150d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_verify_sku_nocomps(smbios_hdl_t *);
151d53cdfabSRobert Mustacchi extern boolean_t smbios_test_chassis_verify_sku(smbios_hdl_t *);
152d53cdfabSRobert Mustacchi 
1531d1fc316SRobert Mustacchi extern boolean_t smbios_test_proc_mktable_25(smbios_test_table_t *);
1541d1fc316SRobert Mustacchi extern boolean_t smbios_test_proc_mktable_36(smbios_test_table_t *);
155*49f72993SRobert Mustacchi extern boolean_t smbios_test_proc_mktable_38(smbios_test_table_t *);
1561d1fc316SRobert Mustacchi extern boolean_t smbios_test_proc_verify_25(smbios_hdl_t *);
1571d1fc316SRobert Mustacchi extern boolean_t smbios_test_proc_verify_36(smbios_hdl_t *);
1581d1fc316SRobert Mustacchi extern boolean_t smbios_test_proc_verify_36_25(smbios_hdl_t *);
159*49f72993SRobert Mustacchi extern boolean_t smbios_test_proc_verify_38(smbios_hdl_t *);
1601d1fc316SRobert Mustacchi 
161679a141eSToomas Soome extern boolean_t smbios_test_extmem_mktable_invlen_cs(smbios_test_table_t *);
162679a141eSToomas Soome extern boolean_t smbios_test_extmem_mktable_nocs(smbios_test_table_t *);
163679a141eSToomas Soome extern boolean_t smbios_test_extmem_mktable_cs(smbios_test_table_t *);
164679a141eSToomas Soome extern boolean_t smbios_test_extmem_verify_invlen_cs(smbios_hdl_t *);
165679a141eSToomas Soome extern boolean_t smbios_test_extmem_verify_nocs(smbios_hdl_t *);
166679a141eSToomas Soome extern boolean_t smbios_test_extmem_verify_cs(smbios_hdl_t *);
167679a141eSToomas Soome 
168064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_mktable_noent(smbios_test_table_t *);
169064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_mktable_ents(smbios_test_table_t *);
170064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_mktable_invlen_base(smbios_test_table_t *);
171064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_mktable_invlen_ent(smbios_test_table_t *);
172064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_mktable_invlen_multient(
173064d431aSRobert Mustacchi 	smbios_test_table_t *);
174064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_mktable_invlen_entdata(
175064d431aSRobert Mustacchi 	smbios_test_table_t *);
176064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_verify_noent(smbios_hdl_t *);
177064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_verify_ents(smbios_hdl_t *);
178064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_verify_invlen_base(smbios_hdl_t *);
179064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_verify_invlen_ent(smbios_hdl_t *);
180064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_verify_invlen_multient(smbios_hdl_t *);
181064d431aSRobert Mustacchi extern boolean_t smbios_test_addinfo_verify_invlen_entdata(smbios_hdl_t *);
182064d431aSRobert Mustacchi 
183176a9270SRobert Mustacchi #ifdef __cplusplus
184176a9270SRobert Mustacchi }
185176a9270SRobert Mustacchi #endif
186176a9270SRobert Mustacchi 
187176a9270SRobert Mustacchi #endif /* _SMBIOS_TEST_H */
188