summaryrefslogtreecommitdiffstats
path: root/loader2/loader.h
blob: 4dc739577e3a6e772b0fd8dcac4c113a2e789f75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/*
 * loader.h
 *
 * Copyright (C) 2007  Red Hat, Inc.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <stdint.h>

#ifndef LOADER_H
#define LOADER_H

#define LOADER_OK 0
#define LOADER_BACK 1
#define LOADER_NOOP 2
#define LOADER_ERROR -1

#define GUI_STAGE2_RAM 196608

#define LOADER_FLAGS_TESTING            (((uint64_t) 1) << 0)
#define LOADER_FLAGS_EXPERT             (((uint64_t) 1) << 1)
#define LOADER_FLAGS_TEXT               (((uint64_t) 1) << 2)
#define LOADER_FLAGS_RESCUE             (((uint64_t) 1) << 3)
#define LOADER_FLAGS_KICKSTART          (((uint64_t) 1) << 4)
#define LOADER_FLAGS_KICKSTART_SEND_MAC (((uint64_t) 1) << 5)
#define LOADER_FLAGS_POWEROFF           (((uint64_t) 1) << 6)
#define LOADER_FLAGS_NONET              (((uint64_t) 1) << 7)
#define LOADER_FLAGS_MODDISK            (((uint64_t) 1) << 8)
/* #9 is the most delicious of all flags, also available for use */
#define LOADER_FLAGS_SERIAL             (((uint64_t) 1) << 10)
#define LOADER_FLAGS_UPDATES            (((uint64_t) 1) << 11)
#define LOADER_FLAGS_KSFILE             (((uint64_t) 1) << 12)
#define LOADER_FLAGS_HALT               (((uint64_t) 1) << 13)
#define LOADER_FLAGS_SELINUX            (((uint64_t) 1) << 14)
#define LOADER_FLAGS_VIRTPCONSOLE       (((uint64_t) 1) << 15)
#define LOADER_FLAGS_NOUSB              (((uint64_t) 1) << 16)
#define LOADER_FLAGS_NOSHELL            (((uint64_t) 1) << 17)
#define LOADER_FLAGS_NOPCMCIA           (((uint64_t) 1) << 18)
#define LOADER_FLAGS_TELNETD            (((uint64_t) 1) << 19)
#define LOADER_FLAGS_NOPASS             (((uint64_t) 1) << 20)
#define LOADER_FLAGS_UB                 (((uint64_t) 1) << 21)
#define LOADER_FLAGS_MEDIACHECK         (((uint64_t) 1) << 22)
#define LOADER_FLAGS_NOUSBSTORAGE       (((uint64_t) 1) << 23)
#define LOADER_FLAGS_ASKMETHOD          (((uint64_t) 1) << 24)
#define LOADER_FLAGS_ASKNETWORK         (((uint64_t) 1) << 25)
#define LOADER_FLAGS_NOIEEE1394         (((uint64_t) 1) << 26)
#define LOADER_FLAGS_NOFB               (((uint64_t) 1) << 27)
#define LOADER_FLAGS_CMDLINE            (((uint64_t) 1) << 28)
#define LOADER_FLAGS_GRAPHICAL          (((uint64_t) 1) << 29)
#define LOADER_FLAGS_NOSTORAGE          (((uint64_t) 1) << 30)
#define LOADER_FLAGS_NOIPV4             (((uint64_t) 1) << 31)
#define LOADER_FLAGS_NOIPV6             (((uint64_t) 1) << 32)
#define LOADER_FLAGS_IP_PARAM           (((uint64_t) 1) << 33)
#define LOADER_FLAGS_IPV6_PARAM         (((uint64_t) 1) << 34)
#define LOADER_FLAGS_IS_KICKSTART       (((uint64_t) 1) << 35)
#define LOADER_FLAGS_ALLOW_WIRELESS     (((uint64_t) 1) << 36)

#define FL_TESTING(a)            ((a) & LOADER_FLAGS_TESTING)
#define FL_EXPERT(a)             ((a) & LOADER_FLAGS_EXPERT)
#define FL_TEXT(a)               ((a) & LOADER_FLAGS_TEXT)
#define FL_RESCUE(a)             ((a) & LOADER_FLAGS_RESCUE)
#define FL_KICKSTART(a)          ((a) & LOADER_FLAGS_KICKSTART)
#define FL_KICKSTART_SEND_MAC(a) ((a) & LOADER_FLAGS_KICKSTART_SEND_MAC)
#define FL_POWEROFF(a)           ((a) & LOADER_FLAGS_POWEROFF)
#define FL_NONET(a)              ((a) & LOADER_FLAGS_NONET)
#define FL_MODDISK(a)            ((a) & LOADER_FLAGS_MODDISK)
#define FL_SERIAL(a)             ((a) & LOADER_FLAGS_SERIAL)
#define FL_UPDATES(a)            ((a) & LOADER_FLAGS_UPDATES)
#define FL_KSFILE(a)             ((a) & LOADER_FLAGS_KSFILE)
#define FL_NOUSB(a)              ((a) & LOADER_FLAGS_NOUSB)
#define FL_NOSHELL(a)            ((a) & LOADER_FLAGS_NOSHELL)
#define FL_NOFB(a)               ((a) & LOADER_FLAGS_NOFB)
#define FL_NOPCMCIA(a)           ((a) & LOADER_FLAGS_NOPCMCIA)
#define FL_RESCUE_NOMOUNT(a)     ((a) & LOADER_FLAGS_RESCUE_NOMOUNT)
#define FL_TELNETD(a)            ((a) & LOADER_FLAGS_TELNETD)
#define FL_NOPASS(a)             ((a) & LOADER_FLAGS_NOPASS)
#define FL_MEDIACHECK(a)         ((a) & LOADER_FLAGS_MEDIACHECK)
#define FL_NOUSBSTORAGE(a)       ((a) & LOADER_FLAGS_NOUSBSTORAGE)
#define FL_ASKMETHOD(a)          ((a) & LOADER_FLAGS_ASKMETHOD)
#define FL_NOPARPORT(a)          ((a) & LOADER_FLAGS_NOPARPORT)
#define FL_NOIEEE1394(a)         ((a) & LOADER_FLAGS_NOIEEE1394)
#define FL_NOFB(a)               ((a) & LOADER_FLAGS_NOFB)
#define FL_GRAPHICAL(a)          ((a) & LOADER_FLAGS_GRAPHICAL)
#define FL_CMDLINE(a)            ((a) & LOADER_FLAGS_CMDLINE)
#define FL_HALT(a)               ((a) & LOADER_FLAGS_HALT)
#define FL_SELINUX(a)            ((a) & LOADER_FLAGS_SELINUX)
#define FL_VIRTPCONSOLE(a)       ((a) & LOADER_FLAGS_VIRTPCONSOLE)
#define FL_NOSTORAGE(a)          ((a) & LOADER_FLAGS_NOSTORAGE)
#define FL_NOPROBE(a)            (FL_NOSTORAGE((a)) | FL_NONET((a)))
#define FL_ASKNETWORK(a)         ((a) & LOADER_FLAGS_ASKNETWORK)
#define FL_UB(a)                 ((a) & LOADER_FLAGS_UB)
#define FL_NOIPV4(a)             ((a) & LOADER_FLAGS_NOIPV4)
#define FL_NOIPV6(a)             ((a) & LOADER_FLAGS_NOIPV6)
#define FL_IP_PARAM(a)           ((a) & LOADER_FLAGS_IP_PARAM)
#define FL_IPV6_PARAM(a)         ((a) & LOADER_FLAGS_IPV6_PARAM)
#define FL_IS_KICKSTART(a)       ((a) & LOADER_FLAGS_IS_KICKSTART)
#define FL_ALLOW_WIRELESS(a)     ((a) & LOADER_FLAGS_ALLOW_WIRELESS)

void startNewt(void);
void stopNewt(void);
char * getProductName(void);
char * getProductPath(void);
char * getProductArch(void);

#include "modules.h"
#include "moduledeps.h"
/* JKFIXME: I don't like all of the _set attribs, but without them,
 * we can't tell if it was explicitly set by kickstart/cmdline or 
 * if we just got it going through the install.   */
struct loaderData_s {
    char * lang;
    int lang_set;
    char * kbd;
    int kbd_set;
    char * netDev;
    int netDev_set;
    char * bootIf;
    int bootIf_set;
    char * netCls;
    int netCls_set;
    char *ipv4, *ipv6, *netmask, *gateway, *dns, *hostname, *peerid, *ethtool, *subchannels, *portname, *essid, *wepkey, *nettype, *ctcprot;
    int mtu;
    int noDns;
    int ipinfo_set;
    int ipv6info_set;
    char * ksFile;
    int method;
    char * ddsrc;
    void * methodData;
    char * logLevel;
    char * updatessrc;

    pid_t fw_loader_pid;
    char *fw_search_pathz;
    size_t fw_search_pathz_len;

    moduleList modLoaded;
    moduleDeps * modDepsPtr;
    moduleInfoSet modInfo;
};

/* 64 bit platforms, definitions courtesy of glib */
#if defined (__x86_64__) || defined(__ia64__) || defined(__alpha__) || defined(__powerpc64__) || defined(__sparc64__) || defined(__s390x__)
#define POINTER_TO_INT(p)  ((int) (long) (p))
#define INT_TO_POINTER(i)  ((void *) (long) (i))
#else
#define POINTER_TO_INT(p)  ((int) (p))
#define INT_TO_POINTER(i)  ((void *) (i))
#endif

/* library paths */
#if defined(__x86_64__) || defined(__s390x__) || defined(__ppc64__)
#define LIBPATH "/lib64:/usr/lib64:/usr/X11R6/lib64:/usr/kerberos/lib64:/mnt/usr/lib64:/mnt/sysimage/lib64:/mnt/sysimage/usr/lib64"
#else
#define LIBPATH "/lib:/usr/lib:/usr/X11R6/lib:/usr/kerberos/lib:/mnt/usr/lib:/mnt/sysimage/lib:/mnt/sysimage/usr/lib"
#endif

#endif