Ack. Radek Vykydal <rvykydal@xxxxxxxxxx> wrote: > To resotre rhel5 behaviour ... one more case found: > for media (non-network) installs kickstart network command should > not bring network up. > > Related: rhbz#638131 > --- > loader/kickstart.c | 14 ++++---------- > loader/kickstart.h | 2 +- > loader/loader.c | 6 ++++-- > loader/net.c | 27 ++++++++++++++++++++++++--- > loader/net.h | 1 + > 5 files changed, 34 insertions(+), 16 deletions(-) > > diff --git a/loader/kickstart.c b/loader/kickstart.c > index b418d74..3007f86 100644 > --- a/loader/kickstart.c > +++ b/loader/kickstart.c > @@ -370,13 +370,7 @@ int isKickstartFileRemote(char *ksFile) { > location = ksFile + 3; > } > > - if (!strncmp(location, "http", 4) || > - !strncmp(location, "ftp://", 6) || > - !strncmp(location, "nfs:", 4)) { > - return 1; > - } else { > - return 0; > - } > + return isURLRemote(location); > } > > void getKickstartFile(struct loaderData_s *loaderData) { > @@ -543,16 +537,16 @@ static void setMediaCheck(struct loaderData_s * loaderData, int argc, > return; > } > > -void addActivateToFirstKsNetworkCommand() { > +void markFirstKsNetworkCommand() { > int i = 0; > > for (i = 0; i < numCommands; i++) { > if (commands[i].code == KS_CMD_NETWORK) { > - logMessage(INFO, "adding --activate to first kickstart network command"); > + logMessage(DEBUGLVL, "marking first kickstart network command"); > commands[i].argc++; > commands[i].argv = g_realloc(commands[i].argv, > sizeof(gchar *) * (commands[i].argc + 1)); > - commands[i].argv[commands[i].argc -1] = "--activate"; > + commands[i].argv[commands[i].argc -1] = "--firstnetdev"; > commands[i].argv[commands[i].argc] = NULL; > break; > } > diff --git a/loader/kickstart.h b/loader/kickstart.h > index 2a3b334..24612cf 100644 > --- a/loader/kickstart.h > +++ b/loader/kickstart.h > @@ -50,6 +50,6 @@ int isKickstartFileRemote(char *ksFile); > void getKickstartFile(struct loaderData_s * loaderData); > void runKickstart(struct loaderData_s * loaderData); > int getKickstartFromBlockDevice(char *device, char *path); > -void addActivateToFirstKsNetworkCommand(); > +void markFirstKsNetworkCommand(); > > #endif > diff --git a/loader/loader.c b/loader/loader.c > index ac289a5..0154ce0 100644 > --- a/loader/loader.c > +++ b/loader/loader.c > @@ -1521,7 +1521,7 @@ static char *doLoaderMain(struct loaderData_s *loaderData, > > case STEP_NETWORK: { > if (((installMethods[validMethods[loaderData->method]].type != > - DEVICE_NETWORK) && (!hasGraphicalOverride()) && > + DEVICE_NETWORK) && > !FL_ASKNETWORK(flags) && > !FL_EARLY_NETWORKING(flags) && > !ibft_present()) || > @@ -2049,6 +2049,8 @@ int main(int argc, char ** argv) { > logMessage(INFO, "text mode forced due to serial/virtpconsole"); > flags |= LOADER_FLAGS_TEXT; > } > + if (hasGraphicalOverride()) > + flags |= LOADER_FLAGS_EARLY_NETWORKING; > set_fw_search_path(&loaderData, "/firmware:/lib/firmware"); > start_fw_loader(&loaderData); > > @@ -2238,7 +2240,7 @@ int main(int argc, char ** argv) { > getKickstartFile(&loaderData); > if (FL_KICKSTART(flags) && > (ksReadCommands((ksFile)?ksFile:loaderData.ksFile)!=LOADER_ERROR)) { > - addActivateToFirstKsNetworkCommand(); > + markFirstKsNetworkCommand(); > runKickstart(&loaderData); > } > } > diff --git a/loader/net.c b/loader/net.c > index 5a09ef9..1531d4f 100644 > --- a/loader/net.c > +++ b/loader/net.c > @@ -1524,7 +1524,7 @@ void setKickstartNetwork(struct loaderData_s * loaderData, int argc, > gchar *bootProto = NULL, *device = NULL, *class = NULL, *ethtool = NULL; > gchar *essid = NULL, *wepkey = NULL, *onboot = NULL, *gateway = NULL; > gint mtu = 1500, dhcpTimeout = -1; > - gboolean noipv4 = FALSE, noipv6 = FALSE, noDns = FALSE, noksdev = FALSE, activate = FALSE, nodefroute=FALSE; > + gboolean noipv4 = FALSE, noipv6 = FALSE, noDns = FALSE, noksdev = FALSE, activate = FALSE, nodefroute=FALSE, firstnetdev=FALSE; > GOptionContext *optCon = g_option_context_new(NULL); > GError *optErr = NULL; > struct in_addr addr; > @@ -1558,6 +1558,7 @@ void setKickstartNetwork(struct loaderData_s * loaderData, int argc, > { "onboot", 0, 0, G_OPTION_ARG_STRING, &onboot, NULL, NULL }, > { "notksdevice", 0, 0, G_OPTION_ARG_NONE, &noksdev, NULL, NULL }, > { "activate", 0, 0, G_OPTION_ARG_NONE, &activate, NULL, NULL }, > + { "firstnetdev", 0, 0, G_OPTION_ARG_NONE, &firstnetdev, NULL, NULL }, > { "nodefroute", 0, 0, G_OPTION_ARG_NONE, &nodefroute, NULL, NULL }, > { "dhcptimeout", 0, 0, G_OPTION_ARG_INT, &dhcpTimeout, NULL, NULL }, > { NULL }, > @@ -1712,8 +1713,13 @@ void setKickstartNetwork(struct loaderData_s * loaderData, int argc, > iface.defroute = 0; > } > > - if (!is_nm_connected()) { > - logMessage(INFO, "activating because no network connection is available"); > + if (firstnetdev && > + (loaderData->method == METHOD_URL || > + loaderData->method == METHOD_NFS || > + isURLRemote(loaderData->instRepo) || > + FL_EARLY_NETWORKING(flags) || > + ibft_present())) { > + logMessage(INFO, "activating first device from kickstart because network is needed"); > activateDevice(loaderData, &iface); > return; > } > @@ -2329,4 +2335,19 @@ int wait_for_iface_disconnection(char *ifname) { > g_object_unref(client); > return 3; > } > + > +int isURLRemote(char *url) { > + if (url == NULL) { > + return 0; > + } > + > + if (!strncmp(url, "http", 4) || > + !strncmp(url, "ftp://", 6) || > + !strncmp(url, "nfs:", 4)) { > + return 1; > + } else { > + return 0; > + } > +} > + > /* vim:set shiftwidth=4 softtabstop=4: */ > diff --git a/loader/net.h b/loader/net.h > index 308a116..a737e0c 100644 > --- a/loader/net.h > +++ b/loader/net.h > @@ -82,5 +82,6 @@ int disconnectDevice(char *device); > void splitHostname (char *str, char **host, char **port); > int wait_for_iface_activation(char * ifname); > int wait_for_iface_disconnection(char *ifname); > +int isURLRemote(char *url); > > #endif > -- > 1.7.2 > > _______________________________________________ > Anaconda-devel-list mailing list > Anaconda-devel-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/anaconda-devel-list -- David Cantrell <dcantrell@xxxxxxxxxx> Supervisor, Installer Engineering Team Red Hat, Inc. | Honolulu, HI | UTC-10 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list