summaryrefslogtreecommitdiffstats
path: root/loader
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2008-11-17 10:44:30 -1000
committerDavid Cantrell <dcantrell@redhat.com>2008-11-17 11:05:48 -1000
commitb27dcdc6a37b5429b50579dbf0650e880a95988c (patch)
treed2b0fabe17ea333a1e1b052d970d54572a1d2380 /loader
parentef6e19535cf181ef06a1e76fc02792807fc78334 (diff)
downloadanaconda-b27dcdc6a37b5429b50579dbf0650e880a95988c.tar.gz
anaconda-b27dcdc6a37b5429b50579dbf0650e880a95988c.tar.xz
anaconda-b27dcdc6a37b5429b50579dbf0650e880a95988c.zip
Do not bring up network for non-remote kickstart locations (#471658)
If the user passes ks=hd: or another non-remote kickstart location, do not bring up networking during installation. However, if they pass the 'vnc' parameter, make sure we do bring up networking early because we can't let them configure it by the time we get to stage2.
Diffstat (limited to 'loader')
-rw-r--r--loader/kickstart.c21
-rw-r--r--loader/kickstart.h1
-rw-r--r--loader/loader.c13
3 files changed, 29 insertions, 6 deletions
diff --git a/loader/kickstart.c b/loader/kickstart.c
index 2a3226f39..75231c4a5 100644
--- a/loader/kickstart.c
+++ b/loader/kickstart.c
@@ -401,6 +401,27 @@ static char *newKickstartLocation(const char *origLocation) {
return retval;
}
+int isKickstartFileRemote(char *ksFile) {
+ char *location = NULL;
+
+ if (ksFile == NULL) {
+ return 0;
+ }
+
+ if (!strncmp(ksFile, "ks=", 3)) {
+ location = ksFile + 3;
+ }
+
+ if (!strncmp(location, "ks", 2) ||
+ !strncmp(location, "http://", 7) ||
+ !strncmp(location, "ftp://", 6) ||
+ !strncmp(location, "nfs:", 4))
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
void getKickstartFile(struct loaderData_s *loaderData) {
char *c;
int rc = 1;
diff --git a/loader/kickstart.h b/loader/kickstart.h
index c8d4a7861..0ca12dcae 100644
--- a/loader/kickstart.h
+++ b/loader/kickstart.h
@@ -45,6 +45,7 @@ int ksReadCommands(char * cmdFile);
int ksGetCommand(int cmd, char ** last, int * argc, char *** argv);
int ksHasCommand(int cmd);
+int isKickstartFileRemote(char *ksFile);
void getKickstartFile(struct loaderData_s * loaderData);
void runKickstart(struct loaderData_s * loaderData);
int getKickstartFromBlockDevice(char *device, char *path);
diff --git a/loader/loader.c b/loader/loader.c
index 575aa7fee..6df8a7547 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1121,7 +1121,13 @@ static void parseCmdLineFlags(struct loaderData_s * loaderData,
flags |= LOADER_FLAGS_GRAPHICAL;
}
- if (!strncasecmp(argv[i], "syslog", 6)) {
+ /* the following things require networking to be configured
+ * by loader, so an active connection is ready once we get
+ * to anaconda
+ */
+ if (!strncasecmp(argv[i], "syslog", 6) ||
+ !strncasecmp(argv[i], "vnc", 3) ||
+ isKickstartFileRemote(loaderData->ksFile)) {
logMessage(INFO, "early networking required for syslog");
flags |= LOADER_FLAGS_EARLY_NETWORKING;
}
@@ -1979,11 +1985,6 @@ int main(int argc, char ** argv) {
* kind of weird. */
if (loaderData.ksFile || ksFile) {
logMessage(INFO, "getting kickstart file");
- iface_init_iface_t(&iface);
-
- if (kickstartNetworkUp(&loaderData, &iface)) {
- logMessage(ERROR, "failed to bring up %s for kickstart", loaderData.netDev);
- }
if (!ksFile)
getKickstartFile(&loaderData);