FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu User

 
 
LinkBack Thread Tools
 
Old 05-14-2010, 08:39 AM
Radek Vykydal
 
Default Make ssid and wepkey in boot params and stage 1 kickstart work (#473803)

---
loader/net.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++
loader/net.h | 1 +
2 files changed, 97 insertions(+), 0 deletions(-)

diff --git a/loader/net.c b/loader/net.c
index c84ded2..19bb8be 100644
--- a/loader/net.c
+++ b/loader/net.c
@@ -39,6 +39,7 @@
#include <glib.h>
#include <NetworkManager.h>
#include <nm-client.h>
+#include <nm-device-wifi.h>

#include "../isys/isys.h"
#include "../isys/ethtool.h"
@@ -407,6 +408,22 @@ void setupIfaceStruct(iface_t * iface, struct loaderData_s * loaderData) {
iface->portno = strdup(loaderData->portno);
}

+ if (loaderData->wepkey) {
+ if (isWirelessDevice(loaderData->netDev)) {
+ iface->wepkey = strdup(loaderData->wepkey);
+ } else {
+ iface->wepkey = NULL;
+ }
+ }
+
+ if (loaderData->essid) {
+ if (isWirelessDevice(loaderData->netDev)) {
+ iface->ssid = strdup(loaderData->essid);
+ } else {
+ iface->ssid = NULL;
+ }
+ }
+
if (loaderData->noDns) {
iface->flags |= IFACE_FLAGS_NO_WRITE_RESOLV_CONF;
}
@@ -1441,6 +1458,14 @@ int writeEnabledNetInfo(iface_t *iface) {
fprintf(fp, "MACADDR=%s
", iface->macaddr);
}

+ if (iface->ssid) {
+ fprintf(fp, "ESSID=%s
", iface->ssid);
+ }
+
+ if (iface->wepkey) {
+ fprintf(fp, "DEFAULTKEY=1");
+ }
+
if (fclose(fp) == EOF) {
free(ofile);
free(nfile);
@@ -1461,6 +1486,48 @@ int writeEnabledNetInfo(iface_t *iface) {
free(nfile);
}

+ /* wireless wepkey: keys-DEVICE file */
+ if (iface->wepkey) {
+ if (asprintf(&ofile, "%s/.keys-%s",
+ NETWORK_SCRIPTS_PATH, iface->device) == -1) {
+ return 21;
+ }
+
+ if (asprintf(&nfile, "%s/keys-%s",
+ NETWORK_SCRIPTS_PATH, iface->device) == -1) {
+ return 22;
+ }
+
+ if ((fp = fopen(ofile, "w")) == NULL) {
+ free(ofile);
+ return 23;
+ }
+
+ fprintf(fp, "KEY1=%s
", iface->wepkey);
+
+
+ if (fclose(fp) == EOF) {
+ free(ofile);
+ free(nfile);
+ return 24;
+ }
+
+ if (rename(ofile, nfile) == -1) {
+ free(ofile);
+ free(nfile);
+ return 25;
+ }
+
+ if (ofile) {
+ free(ofile);
+ }
+
+ if (nfile) {
+ free(nfile);
+ }
+ }
+
+
/* Global settings */
if ((fp = fopen(SYSCONFIG_PATH"/.network", "w")) == NULL) {
return 9;
@@ -2119,4 +2186,33 @@ int get_connection(iface_t *iface) {
return 3;
}

+int isWirelessDevice(char *device) {
+ NMClient *client = NULL;
+ const GPtrArray *devices;
+ const char *iface;
+ int i;
+
+ client = nm_client_new();
+ if (!client) {
+ logMessage(ERROR, "%s (%d): could not connect to system bus",
+ __func__, __LINE__);
+ return 0;
+ }
+
+ devices = nm_client_get_devices(client);
+ for (i = 0; devices && (i < devices->len); i++) {
+ NMDevice *candidate = g_ptr_array_index(devices, i);
+ if (NM_IS_DEVICE_WIFI (candidate)) {
+ iface = nm_device_get_iface(candidate);
+ if (!strcmp(device, iface)) {
+ g_object_unref(client);
+ return 1;
+ }
+ }
+
+ }
+ g_object_unref(client);
+ return 0;
+}
+
/* vim:set shiftwidth=4 softtabstop=4: */
diff --git a/loader/net.h b/loader/net.h
index 8245084..a494630 100644
--- a/loader/net.h
+++ b/loader/net.h
@@ -73,5 +73,6 @@ int kickstartNetworkUp(struct loaderData_s * loaderData,
iface_t * iface);
void splitHostname (char *str, char **host, char **port);
int get_connection(iface_t * iface);
+int isWirelessDevice(char *device);

#endif
--
1.6.0.6

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

Thread Tools




All times are GMT. The time now is 10:18 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org