Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalwareutils.git;a=commitdiff;h=ea72e89ffaec0d2948a8f4fd7d61119769bcf54d

commit ea72e89ffaec0d2948a8f4fd7d61119769bcf54d
Author: Miklos Vajna <vmik...@frugalware.org>
Date:   Tue Nov 30 23:48:13 2010 +0100

netconfig: add scan_ssid parameter

diff --git a/doc/netconfig.txt b/doc/netconfig.txt
index 1e49458..dbfdb9b 100644
--- a/doc/netconfig.txt
+++ b/doc/netconfig.txt
@@ -136,6 +136,10 @@ NOTE: In case you use WPA encryption only with your 
wireless card, then
this method has the advantage of not having different network profiles
for each WPA network, as long as each network has a different essid.

+scan_ssid = yes|no::
+       If this directive is enabled, then wpa_supplicant will handle a
+       hidden ESSID as well.
+
wpa_driver = <driver>::
The driver to be used by wpa_supplicant. The default is `wext`. Possible drivers
are:
diff --git a/libfwnetconfig/libfwnetconfig.c b/libfwnetconfig/libfwnetconfig.c
index fa1fc2b..e0359ab 100644
--- a/libfwnetconfig/libfwnetconfig.c
+++ b/libfwnetconfig/libfwnetconfig.c
@@ -193,6 +193,8 @@ fwnet_profile_t *fwnet_parseprofile(char *fn)
strncpy(iface->mode, ptr, FWNET_MODE_MAX_SIZE);
if(!strcmp(var, "KEY") && !strlen(iface->key))
strncpy(iface->key, ptr, FWNET_ENCODING_TOKEN_MAX);
+                               if(!strcmp(var, "SCAN_SSID") && 
!strlen(iface->key))
+                                       iface->scan_ssid = (toupper(*ptr) == 
'Y');
if(!strcmp(var, "WPA_PSK") && !strlen(iface->wpa_psk))
strncpy(iface->wpa_psk, ptr, PATH_MAX);
if(!strcmp(var, "WPA_DRIVER") && !strlen(iface->wpa_driver))
@@ -392,7 +394,7 @@ static int update_secrets(char *path, char *user, char 
*pass)
return(0);
}

-static int update_wpa_conf(char *ssid, char *psk)
+static int update_wpa_conf(char *ssid, int scan_ssid, char *psk)
{
FILE *fp;

@@ -409,6 +411,8 @@ static int update_wpa_conf(char *ssid, char *psk)
"ctrl_interface=/var/run/wpa_supplicant\n"
"\n"
"network={\n\tssid=\"%s\"\n", ssid);
+       if (scan_ssid)
+               fprintf(fp, "\tscan_ssid=1\n");
if (strlen(psk) == 64)
// that's probably a psk hash, not a real key
fprintf(fp, "\tpsk=%s\n", psk);
@@ -437,7 +441,7 @@ int fwnet_ifup(fwnet_interface_t *iface, fwnet_profile_t 
*profile)
if(strlen(iface->wpa_psk) || iface->wpa_supplicant)
{
if(strlen(iface->wpa_psk))
-                       update_wpa_conf(iface->essid, iface->wpa_psk);
+                       update_wpa_conf(iface->essid, iface->scan_ssid, 
iface->wpa_psk);
if(strlen(iface->wpa_driver))
ptr = g_strdup_printf("wpa_supplicant -i%s -D%s -c /etc/wpa_supplicant.conf 
-B", iface->name, iface->wpa_driver);
else
diff --git a/libfwnetconfig/libfwnetconfig.h b/libfwnetconfig/libfwnetconfig.h
index b760f5d..6d7e171 100644
--- a/libfwnetconfig/libfwnetconfig.h
+++ b/libfwnetconfig/libfwnetconfig.h
@@ -53,6 +53,7 @@ typedef struct __fwnet_interface_t {
char wpa_driver[PATH_MAX+1];
int wpa_supplicant;
char gateway[FWNET_GW_MAX_SIZE+1];
+       int scan_ssid;
} fwnet_interface_t;

typedef struct __fwnet_profile_t {
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to