usr/src/cmd/boot/bootadm/bootadm.h
author setje
Thu, 08 May 2008 13:25:47 -0700
changeset 6582 1ece598243e4
parent 6448 dfd58b2129f6
child 6694 d1503f9c5de3
permissions -rw-r--r--
6654900 prtconf retreives non ascii character that attachs to the machine type 6667053 pse array size calculation is broken by newboot putback 6668123 archive creation should not be limited to sun4u and sun4v 6673009 Solaris does not boot with SUNW,Netra-T5440 platform path anymore after new boot putback in snv_80 6698810 kobj_open()'ing tiny compressed files results in corrupt data
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     1
/*
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     2
 * CDDL HEADER START
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     3
 *
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     5
 * Common Development and Distribution License (the "License").
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     6
 * You may not use this file except in compliance with the License.
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     7
 *
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    11
 * and limitations under the License.
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    12
 *
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    18
 *
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    19
 * CDDL HEADER END
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    20
 */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    21
/*
6319
03c1299ed2bb PSARC 2008/213 Bootadm: managing a diskless client
jg
parents: 5648
diff changeset
    22
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    23
 * Use is subject to license terms.
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    24
 */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    25
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    26
#ifndef _BOOTADM_H
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    27
#define	_BOOTADM_H
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    28
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    29
#pragma ident	"%Z%%M%	%I%	%E% SMI"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    30
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    31
#ifdef	__cplusplus
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    32
extern "C" {
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    33
#endif
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    34
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    35
#include <assert.h>
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    36
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    37
#ifndef	TEXT_DOMAIN
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    38
#define	TEXT_DOMAIN	"SUNW_OST_OSCMD"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    39
#endif  /* TEXT_DOMAIN */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    40
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    41
/* Type definitions */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    42
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    43
/* GRUB menu per-line classification */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    44
typedef enum {
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    45
	BAM_INVALID = 0,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    46
	BAM_EMPTY,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    47
	BAM_COMMENT,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    48
	BAM_GLOBAL,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    49
	BAM_ENTRY,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    50
	BAM_TITLE
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    51
} menu_flag_t;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    52
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    53
/* struct for menu.lst contents */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    54
typedef struct line {
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    55
	int  lineNum;	/* Line number in menu.lst */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    56
	int  entryNum;	/* menu boot entry #. ENTRY_INIT if not applicable */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    57
	char *cmd;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    58
	char *sep;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    59
	char *arg;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    60
	char *line;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    61
	menu_flag_t flags;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    62
	struct line *next;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    63
	struct line *prev;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    64
} line_t;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    65
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    66
typedef struct entry {
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    67
	struct entry *next;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    68
	struct entry *prev;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    69
	line_t *start;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    70
	line_t *end;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    71
	int	entryNum;
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    72
	uint_t	flags;
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    73
} entry_t;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    74
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    75
/* For flags value in entry_t */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    76
#define	BAM_ENTRY_BOOTADM	0x01	/* entry created by bootadm */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    77
#define	BAM_ENTRY_LU		0x02	/* entry created by Live Upgrade */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    78
#define	BAM_ENTRY_CHAINLOADER	0x04	/* chainloader entry; do not disturb */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    79
#define	BAM_ENTRY_ROOT		0x08	/* entry has a root line */
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    80
#define	BAM_ENTRY_FAILSAFE	0x10	/* failsafe entry  */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    81
#define	BAM_ENTRY_DBOOT		0x20	/* Is dboot (normal or failsafe) */
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    82
#define	BAM_ENTRY_32BIT		0x40	/* Is a 32-bit entry */
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
    83
#define	BAM_ENTRY_HV		0x80	/* Is a hypervisor entry */
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    84
#define	BAM_ENTRY_FINDROOT	0x100	/* entry has a findroot line */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    85
#define	BAM_ENTRY_MULTIBOOT	0x200	/* is multiboot (normal or failsafe) */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
    86
#define	BAM_ENTRY_64BIT		0x400	/* Is a 64-bit entry */
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    87
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    88
typedef struct {
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    89
	line_t	*start;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    90
	line_t	*end;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    91
	line_t	*curdefault;	/* line containing default */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    92
	line_t	*olddefault;	/* old default line (commented) */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    93
	line_t	*old_rc_default;	/* old default line for bootenv.rc */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    94
	entry_t	*entries;	/* os entries */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    95
} menu_t;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    96
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    97
typedef enum {
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    98
	BAM_ERROR = -1,	/* Must be negative. add_boot_entry() depends on it */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
    99
	BAM_SUCCESS = 0,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   100
	BAM_WRITE = 2,
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   101
	BAM_MSG	/* Used by upgrade_menu() */
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   102
} error_t;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   103
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   104
/*
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   105
 * Menu related
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   106
 * menu_cmd_t and menu_cmds must be kept in sync
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   107
 *
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   108
 * The *_DOLLAR_CMD values must be 1 greater than the
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   109
 * respective [KERNEL|MODULE]_CMD values.
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   110
 */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   111
typedef enum {
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   112
	DEFAULT_CMD = 0,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   113
	TIMEOUT_CMD,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   114
	TITLE_CMD,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   115
	ROOT_CMD,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   116
	KERNEL_CMD,
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   117
	KERNEL_DOLLAR_CMD,	/* Must be KERNEL_CMD + 1 */
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   118
	MODULE_CMD,
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   119
	MODULE_DOLLAR_CMD,	/* Must be MODULE_CMD + 1 */
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   120
	SEP_CMD,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   121
	COMMENT_CMD,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   122
	CHAINLOADER_CMD,
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   123
	ARGS_CMD,
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   124
	FINDROOT_CMD
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   125
} menu_cmd_t;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   126
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   127
extern char *menu_cmds[];
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   128
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   129
/* For multi- or direct-boot */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   130
typedef enum {
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   131
	BAM_DIRECT_NOT_SET,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   132
	BAM_DIRECT_MULTIBOOT,
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   133
	BAM_DIRECT_DBOOT
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   134
} direct_or_multi_t;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   135
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   136
/* Is there a hypervisor present? */
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   137
typedef enum {
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   138
	BAM_HV_UNKNOWN,
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   139
	BAM_HV_NO,
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   140
	BAM_HV_PRESENT
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   141
} hv_t;
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   142
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   143
/* Is there findroot capability present ? */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   144
typedef enum {
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   145
	BAM_FINDROOT_UNKNOWN,
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   146
	BAM_FINDROOT_ABSENT,
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   147
	BAM_FINDROOT_PRESENT
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   148
} findroot_t;
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   149
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   150
extern int bam_verbose;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   151
extern int bam_force;
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   152
extern direct_or_multi_t bam_direct;
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   153
extern hv_t bam_is_hv;
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   154
extern findroot_t bam_is_findroot;
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   155
extern int bam_debug;
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   156
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   157
extern void bam_add_line(menu_t *mp, entry_t *entry, line_t *prev, line_t *lp);
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   158
extern void update_numbering(menu_t *mp);
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   159
extern error_t upgrade_menu(menu_t *, char *, char *);
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   160
extern void *s_calloc(size_t, size_t);
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   161
extern void *s_realloc(void *, size_t);
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   162
extern char *s_fgets(char *buf, int n, FILE *fp);
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   163
extern void bam_error(char *format, ...);
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   164
extern void bam_print(char *, ...);
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   165
extern void bam_print_stderr(char *format, ...);
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   166
extern void bam_derror(char *format, ...);
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   167
extern error_t get_boot_cap(const char *osroot);
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   168
extern char *get_special(char *);
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   169
extern char *os_to_grubdisk(char *, int);
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   170
extern void update_line(line_t *);
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   171
extern int add_boot_entry(menu_t *, char *, char *, char *, char *, char *);
5648
161f8007cab9 6521412 PSARC 2006/525: new boot sparc
setje
parents: 5084
diff changeset
   172
extern int is_grub(const char *);
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   173
extern char *get_grubsign(char *osroot, char *osdev);
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   174
extern char *get_grubroot(char *osroot, char *osdev, char *menu_root);
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   175
extern int root_optional(char *osroot, char *menu_root);
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   176
extern void unlink_line(menu_t *mp, line_t *lp);
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   177
extern void line_free(line_t *lp);
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   178
extern char *s_strdup(char *);
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   179
extern int is_sparc(void);
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   180
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   181
#define	BAM_MAXLINE	8192
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   182
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   183
/* menu.lst comments created by bootadm */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   184
#define	BAM_BOOTADM_HDR	"---------- ADDED BY BOOTADM - DO NOT EDIT ----------"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   185
#define	BAM_BOOTADM_FTR	"---------------------END BOOTADM--------------------"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   186
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   187
/*
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   188
 * menu.lst comments create by Live Upgrade.  Note that these are the end of
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   189
 * the comment strings - there will be other text before them.
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   190
 */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   191
#define	BAM_LU_HDR	" - ADDED BY LIVE UPGRADE - DO NOT EDIT  -----"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   192
#define	BAM_LU_FTR	" -------------- END LIVE UPGRADE ------------"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   193
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   194
#define	BAM_OLDDEF	"BOOTADM SAVED DEFAULT: "
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   195
#define	BAM_OLD_RC_DEF	"BOOTADM RC SAVED DEFAULT: "
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   196
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   197
/* Title used for failsafe entries */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   198
#define	FAILSAFE_TITLE	"Solaris failsafe"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   199
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   200
/* Title used for hv entries */
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   201
#define	NEW_HV_ENTRY	"Solaris xVM"
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   202
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 6319
diff changeset
   203
/* ZFS boot option */
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 6319
diff changeset
   204
#define	ZFS_BOOT	"-B $ZFS-BOOTFS"
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 6319
diff changeset
   205
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   206
/* multiboot */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   207
#define	MULTI_BOOT	"/platform/i86pc/multiboot"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   208
#define	MULTI_BOOT_FAILSAFE	"/boot/multiboot"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   209
#define	MULTI_BOOT_FAILSAFE_UNIX	"kernel/unix"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   210
#define	MULTI_BOOT_FAILSAFE_LINE	"/boot/multiboot kernel/unix -s"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   211
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   212
/* directboot kernels */
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   213
#define	DIRECT_BOOT_32	"/platform/i86pc/kernel/unix"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   214
#define	DIRECT_BOOT_64	"/platform/i86pc/kernel/amd64/unix"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   215
#define	DIRECT_BOOT_KERNEL	"/platform/i86pc/kernel/$ISADIR/unix"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   216
#define	DIRECT_BOOT_FAILSAFE_KERNEL	"/boot/platform/i86pc/kernel/unix"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   217
#define	DIRECT_BOOT_FAILSAFE_LINE	DIRECT_BOOT_FAILSAFE_KERNEL " -s"
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 6319
diff changeset
   218
#define	DIRECT_BOOT_KERNEL_ZFS	DIRECT_BOOT_KERNEL " " ZFS_BOOT
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 6319
diff changeset
   219
#define	DIRECT_BOOT_FAILSAFE_LINE_ZFS	DIRECT_BOOT_FAILSAFE_LINE " " ZFS_BOOT
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   220
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   221
/* xVM kernels */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   222
#define	XEN_KERNEL_SUBSTR "xen.gz"
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   223
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   224
/* Boot archives */
6582
1ece598243e4 6654900 prtconf retreives non ascii character that attachs to the machine type
setje
parents: 6448
diff changeset
   225
#define	ARCHIVE_PREFIX		"/platform/"
1ece598243e4 6654900 prtconf retreives non ascii character that attachs to the machine type
setje
parents: 6448
diff changeset
   226
#define	ARCHIVE_SUFFIX		"/boot_archive"
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   227
#define	DIRECT_BOOT_ARCHIVE	"/platform/i86pc/$ISADIR/boot_archive"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   228
#define	DIRECT_BOOT_ARCHIVE_32	"/platform/i86pc/boot_archive"
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   229
#define	DIRECT_BOOT_ARCHIVE_64	"/platform/i86pc/amd64/boot_archive"
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   230
#define	MULTIBOOT_ARCHIVE	DIRECT_BOOT_ARCHIVE_32
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   231
#define	FAILSAFE_ARCHIVE	"/boot/x86.miniroot-safe"
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   232
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   233
/* Hypervisors */
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   234
#define	XEN_32			"/boot/xen.gz"
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   235
#define	XEN_64			"/boot/amd64/xen.gz"
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   236
#define	XEN_MENU		"/boot/$ISADIR/xen.gz"
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   237
#define	HYPERVISOR_KERNEL	"/platform/i86xpv/kernel/$ISADIR/unix"
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   238
#define	XEN_KERNEL_MODULE_LINE	HYPERVISOR_KERNEL " " HYPERVISOR_KERNEL
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   239
#define	XEN_KERNEL_MODULE_LINE_ZFS	\
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 6319
diff changeset
   240
	HYPERVISOR_KERNEL " " HYPERVISOR_KERNEL " " ZFS_BOOT
5084
7d838c5c0eed PSARC 2006/260 Solaris on Xen
johnlev
parents: 3446
diff changeset
   241
6448
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   242
/* A first guess at the number of entries in a menu */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   243
#define	BAM_ENTRY_NUM		10
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   244
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   245
/*
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   246
 * Debugging defines
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   247
 */
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   248
#define	INJECT_ERROR1(x, y)	\
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   249
{ \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   250
	if (bam_debug) { \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   251
		char *inj = getenv("_BOOTADM_INJECT"); \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   252
		if (inj && strcmp(inj, (x)) == 0) {  \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   253
			y;	\
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   254
		} \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   255
	} \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   256
}
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   257
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   258
#define	INJECT_ERROR2(x, y, z)	\
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   259
{ \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   260
	if (bam_debug) { \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   261
		char *inj = getenv("_BOOTADM_INJECT"); \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   262
		if (inj && strcmp(inj, (x)) == 0) {  \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   263
			y;	\
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   264
			z;	\
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   265
		} \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   266
	} \
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   267
}
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   268
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   269
#define	BAM_DPRINTF(x)	{if (bam_debug)  bam_derror x; }
dfd58b2129f6 PSARC 2008/201 Grub Findroot
vikram
parents: 6423
diff changeset
   270
3446
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   271
#ifdef __cplusplus
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   272
}
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   273
#endif
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   274
5903aece022d PSARC 2006/469 EOF and removal of eeprom -I
mrj
parents:
diff changeset
   275
#endif	/* _BOOTADM_H */