xref: /netbsd-src/usr.sbin/sysinst/menus.pm (revision f3cfa6f6ce31685c6c4a758bc430e69eb99f50a4)
1/*	$NetBSD: menus.pm,v 1.1 2018/09/20 12:27:42 rin Exp $	*/
2/*	NetBSD: menus.mi,v 1.14 2018/09/11 08:05:18 martin Exp 		*/
3
4/*-
5 * Copyright (c) 2003 The NetBSD Foundation, Inc.
6 * All rights reserved.
7 *
8 * This code is derived from software contributed to The NetBSD Foundation
9 * by David Laight.
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 *
20 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 */
32
33/* Menu system definitions -- extended partitioning */
34
35menu pmdiskentry, x=50, y=5, exit, default exit;
36	option MSG_editbsdpart, exit, action { pm_make_bsd_partitions(pm); };
37	option MSG_editmbr,		exit, action { md_get_info();
38											md_pre_disklabel();
39											memset(&pm->bsdlabel, 0, sizeof pm->bsdlabel);};
40	option MSG_switchgpt,	exit, action { if (pm_gpt_convert(pm) == 0)
41												pm_partusage(pm, -1, 1); };
42	option MSG_renamedisk,	exit, action { pm->unsaved = 1; pm_rename(pm); };
43	option MSG_fmtasraid,	exit, action { pm->unsaved = 1;
44											pm_partusage(pm, -1, 1);
45											layoutkind = LY_NEWRAID;
46											md_make_bsd_partitions();};
47	option MSG_fmtaslvm,	exit, action { pm->unsaved = 1;
48											pm_partusage(pm, -1, 1);
49											layoutkind = LY_NEWLVM;
50											md_make_bsd_partitions(); };
51	option MSG_encrypt,		exit, action { pm->unsaved = 1;
52											pm_partusage(pm, -1, 1);
53											layoutkind = LY_NEWCGD;
54											md_make_bsd_partitions();
55											pm_cgd_edit(0, &(part_entry_t)
56												{.dev_ptr = pm, .dev_num = PART_E}
57											); };
58	option MSG_setbootable,	exit, action { pm->unsaved = 1;
59											pm->bootable = !pm->bootable; };
60	option MSG_erase,		next menu shred_modes;
61	option MSG_undo,		exit, action { label_read(); pm->unsaved = 0;
62											pm_partusage(pm, -1, 1); };
63	option MSG_unconfig,	exit, action { if (pm_unconfigure(pm) == 0)
64												pm_partusage(pm, -1, 1); };
65
66menu pmpartentry, x=50, y=5, exit, default exit;
67	option MSG_edit,		exit, action {
68									pm->unsaved = 1;
69									int tpfs = pm->bsdlabel[*(int*)arg].pi_fstype;
70									int tplvm = pm->bsdlabel[*(int*)arg].lvmpv;
71									pm_editpart(*(int*)arg);
72									if (tpfs != pm->bsdlabel[*(int*)arg].pi_fstype ||
73										tplvm != pm->bsdlabel[*(int*)arg].lvmpv)
74										/* Oops, partition type changed */
75										pm_partusage(pm, *(int*)arg, 1);
76								};
77	option MSG_fmtasraid,	exit, action {
78									if (pm->gpt || pm->isspecial) {
79										process_menu(MENU_ok, __UNCONST(MSG_notsupported));
80										return -1;
81									}
82									pm->unsaved = 1;
83									pm_partusage(pm, *(int*)arg, 1);
84									pm_setfstype(pm, *(int*)arg, FS_RAID);
85								};
86	option MSG_fmtaslvm,	exit, action {
87									if (pm->gpt || pm->isspecial) {
88										process_menu(MENU_ok, __UNCONST(MSG_notsupported));
89										return -1;
90									}
91									pm->unsaved = 1;
92									pm_partusage(pm, *(int*)arg, 1);
93									pm_setfstype(pm, *(int*)arg, FS_BSDFFS);
94								    pm->bsdlabel[*(int*)arg].lvmpv = 1;
95								};
96	option MSG_encrypt,		exit, action {
97									if (pm->gpt || pm->isspecial) {
98										process_menu(MENU_ok, __UNCONST(MSG_notsupported));
99										return -1;
100									}
101									pm->unsaved = 1;
102									pm_partusage(pm, *(int*)arg, 1);
103									pm_setfstype(pm, *(int*)arg, FS_CGD);
104									pm_cgd_edit(0,
105										&(part_entry_t){.dev_ptr = pm,
106														.dev_num = *(int*)arg});
107								};
108	option MSG_erase,		next menu shred_modes;
109	option MSG_doumount,	exit, action { pm_umount(pm, *(int*)arg); };
110	option MSG_Delete_partition,	exit, action {
111									pm->unsaved = 1;
112									pm_partusage(pm, *(int*)arg, 1);
113									if (pm->isspecial)
114										pm_unconfigure(pm);
115									else
116										pm->bsdlabel[*(int*)arg].pi_fstype = FS_UNUSED;
117									};
118
119menu pmgptentry, x=50, y=8, exit, default exit;
120	option MSG_editbsdpart, exit, action { pm_make_bsd_partitions(pm); };
121	option MSG_switchmbr,	exit, action { if (pm_gpt_convert(pm) == 0)
122												pm_partusage(pm, -1, 1); };
123	option MSG_setbootable,	exit, action { pm->unsaved = 1;
124												pm->bootable = !pm->bootable; };
125	option MSG_erase,		next menu shred_modes;
126	option MSG_undo,		exit, action { label_read(); pm->unsaved = 0;
127											pm_partusage(pm, -1, 1); };
128	option MSG_unconfig,	exit, action { if (pm_unconfigure(pm) == 0)
129												pm_partusage(pm, -1, 1); };
130
131menu shred_modes, x=50, y=5, exit, default exit;
132	option MSG_fillzeros,	exit,
133							action { pm_shred(pm, *(int*)arg, SHRED_ZEROS); };
134	option MSG_fillrandom,	exit,
135							action { pm_shred(pm, *(int*)arg, SHRED_RANDOM); };
136	option MSG_fillcrypto,	exit,
137							action { pm_shred(pm, *(int*)arg, SHRED_CRYPTO); };
138
139menu raidlevel;
140	option MSG_raid0, exit, action { *(int *)arg = 0; };
141	option MSG_raid1, exit, action { *(int *)arg = 1; };
142	option MSG_raid4, exit, action { *(int *)arg = 4; };
143	option MSG_raid5, exit, action { *(int *)arg = 5; };
144
145menu cgd_enctype;
146	option "aes-xts",			exit, action { *(const char**)arg = "aes-xts"; };
147	option "aes-cbc",			exit, action { *(const char**)arg = "aes-cbc"; };
148	option "3des-cbc",			exit, action { *(const char**)arg = "3des-cbc"; };
149	option "blowfish-cbc",		exit, action { *(const char**)arg = "blowfish-cbc"; };
150
151menu cgd_ivtype;
152	option "encblkno1",			exit, action { *(const char**)arg = "encblkno1"; };
153	option "encblkno8",			exit, action { *(const char**)arg = "encblkno8"; };
154
155menu cgd_keygentype;
156	option "pkcs5_pbkdf2/sha1",	exit, action { *(const char**)arg = "pkcs5_pbkdf2/sha1"; };
157	option "pkcs5_pbkdf2",		exit, action { *(const char**)arg = "pkcs5_pbkdf2"; };
158	option "storedkey",			exit, action { *(const char**)arg = "storedkey"; };
159	option "randomkey",			exit, action { *(const char**)arg = "randomkey"; };
160	option "urandomkey",		exit, action { *(const char**)arg = "urandomkey"; };
161	option "shell_cmd",			exit, action { *(const char**)arg = "shell_cmd"; };
162
163menu cgd_verifytype;
164	option "none",				exit, action { *(const char**)arg = "none"; };
165	option "disklabel",			exit, action { *(const char**)arg = "disklabel"; };
166	option "ffs",				exit, action { *(const char**)arg = "ffs"; };
167	option "re-enter",			exit, action { *(const char**)arg = "re-enter"; };
168