[PATCH 2/2] enable wpa in kickstart

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



---
 loader/kickstart.c |   65 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 62 insertions(+), 3 deletions(-)

diff --git a/loader/kickstart.c b/loader/kickstart.c
index ff5f6c4..379b849 100644
--- a/loader/kickstart.c
+++ b/loader/kickstart.c
@@ -647,10 +647,44 @@ cleanup:
     Py_XDECREF(attr);
 }
 
+int processKickstartWifi (struct loaderData_s * loaderData) {
+    char *ip_method = "";
+    int rc = -1;
+
+    if (loaderData->ipinfo_set == 1) { 
+        ip_method = "manual";
+    }
+    else {
+        ip_method = "auto";
+    }
+
+    if (loaderData->essid != NULL) {
+        if (loaderData->wepkey != NULL) {
+            rc = add_and_activate_wifi_connection(&(loaderData->netDev), loaderData->essid,
+                    "wep", loaderData->wepkey, ip_method, loaderData->ipv4);
+        }
+        else if (loaderData->wpakey != NULL) {
+            rc = add_and_activate_wifi_connection(&(loaderData->netDev), loaderData->essid,
+                    "wpa", loaderData->wpakey, ip_method, loaderData->ipv4);
+        }
+        else {
+            rc = add_and_activate_wifi_connection(&(loaderData->netDev), loaderData->essid,
+                    "unprotected", NULL, ip_method, loaderData->ipv4);
+        }
+    }
+
+    if (0 == rc) loaderData->netDev_set = 1;
+    else logMessage(ERROR, "wifi activation in kickstart failed");
+    return(rc);
+}
+
+
 static void setKickstartNetwork(struct loaderData_s * loaderData, PyObject *handler) {
     Py_ssize_t i;
     PyObject *list = getDataList(handler, "network");
     iface_t iface;
+    gboolean device_flushed = FALSE;
+    char *cmdline_device = NULL;
 
     if (!list)
         return;
@@ -686,6 +720,8 @@ static void setKickstartNetwork(struct loaderData_s * loaderData, PyObject *hand
         loaderData->essid = NULL;
         free(loaderData->wepkey);
         loaderData->wepkey = NULL;
+        free(loaderData->wpakey);
+        loaderData->wpakey = NULL;
         loaderData->mtu = 0;
 
 #ifdef ENABLE_IPV6
@@ -749,6 +785,11 @@ static void setKickstartNetwork(struct loaderData_s * loaderData, PyObject *hand
             loaderData->netDev_set = 1;
             logMessage(INFO, "kickstart network command - device %s", loaderData->netDev);
         } else {
+            cmdline_device = strdup(loaderData->netDev);
+            loaderData->netDev_set = 0;
+            free(loaderData->netDev);
+            loaderData->netDev = NULL;
+            device_flushed = TRUE;
             logMessage(INFO, "kickstart network command - unspecified device");
         }
 
@@ -758,6 +799,7 @@ static void setKickstartNetwork(struct loaderData_s * loaderData, PyObject *hand
         _setNetworkString(ele, "ethtool", &loaderData->ethtool, NULL);
         _setNetworkString(ele, "essid", &loaderData->essid, NULL);
         _setNetworkString(ele, "wepkey", &loaderData->wepkey, NULL);
+        _setNetworkString(ele, "wpakey", &loaderData->wpakey, NULL);
 
         attr = getObject(ele, "noipv4", 0);
         if (isTrue(attr))
@@ -810,15 +852,32 @@ static void setKickstartNetwork(struct loaderData_s * loaderData, PyObject *hand
              FL_EARLY_NETWORKING(flags) ||
              ibft_present())) {
             logMessage(INFO, "activating first device from kickstart because network is needed");
-            activateDevice(loaderData, &iface);
+            if (processKickstartWifi(loaderData) != 0) {
+                if (device_flushed) {
+                    loaderData->netDev = strdup(cmdline_device);
+                    loaderData->netDev_set = 1;
+                    free(cmdline_device);
+                    cmdline_device = NULL;
+                    device_flushed = FALSE;
+                }
+                activateDevice(loaderData, &iface);
+            }
             continue;
         }
 
-
         attr = getObject(ele, "activate", 0);
         if (isTrue(attr)) {
             logMessage(INFO, "activating because --activate flag is set");
-            activateDevice(loaderData, &iface);
+            if (processKickstartWifi(loaderData) != 0) {
+                if (device_flushed) {
+                    loaderData->netDev = strdup(cmdline_device);
+                    loaderData->netDev_set = 1;
+                    free(cmdline_device);
+                    cmdline_device = NULL;
+                    device_flushed = FALSE;
+                }
+                activateDevice(loaderData, &iface);
+            }
         } else {
             logMessage(INFO, "not activating becuase --activate flag is not set");
         }
-- 
1.7.4.4

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux