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