@ -720,9 +720,10 @@ out:
static char * nl80211_ifadd ( const char * ifname )
static char * nl80211_ifadd ( const char * ifname )
{
{
int phyidx ;
int phyidx ;
char * rv = NULL ;
char * rv = NULL , path [ PATH_MAX ] ;
static char nif [ IFNAMSIZ ] = { 0 } ;
static char nif [ IFNAMSIZ ] = { 0 } ;
struct nl80211_msg_conveyor * req , * res ;
struct nl80211_msg_conveyor * req , * res ;
FILE * sysfs ;
req = nl80211_msg ( ifname , NL80211_CMD_NEW_INTERFACE , 0 ) ;
req = nl80211_msg ( ifname , NL80211_CMD_NEW_INTERFACE , 0 ) ;
if ( req )
if ( req )
@ -734,6 +735,15 @@ static char * nl80211_ifadd(const char *ifname)
nl80211_send ( req , NULL , NULL ) ;
nl80211_send ( req , NULL , NULL ) ;
snprintf ( path , sizeof ( path ) - 1 ,
" /proc/sys/net/ipv6/conf/%s/disable_ipv6 " , nif ) ;
if ( ( sysfs = fopen ( path , " w " ) ) ! = NULL )
{
fwrite ( " 0 \n " , 1 , 2 , sysfs ) ;
fclose ( sysfs ) ;
}
rv = nif ;
rv = nif ;
nla_put_failure :
nla_put_failure :
@ -1865,7 +1875,7 @@ static int nl80211_get_scanlist_nl(const char *ifname, char *buf, int *len)
static int nl80211_get_scanlist ( const char * ifname , char * buf , int * len )
static int nl80211_get_scanlist ( const char * ifname , char * buf , int * len )
{
{
int freq , rssi , qmax , count ;
int freq , rssi , qmax , count , mode ;
char * res ;
char * res ;
char ssid [ 128 ] = { 0 } ;
char ssid [ 128 ] = { 0 } ;
char bssid [ 18 ] = { 0 } ;
char bssid [ 18 ] = { 0 } ;
@ -1983,6 +1993,16 @@ static int nl80211_get_scanlist(const char *ifname, char *buf, int *len)
}
}
}
}
/* station / ad-hoc / monitor scan */
else if ( ! nl80211_get_mode ( ifname , & mode ) & &
( mode = = IWINFO_OPMODE_ADHOC | |
mode = = IWINFO_OPMODE_CLIENT | |
mode = = IWINFO_OPMODE_MONITOR ) & &
iwinfo_ifup ( ifname ) )
{
return nl80211_get_scanlist_nl ( ifname , buf , len ) ;
}
/* AP scan */
/* AP scan */
else
else
{
{