Unable to connect to wireless 802.11 AP with hidden SSID

Rudolf Cejka cejkar at fit.vutbr.cz
Thu Aug 25 13:49:28 GMT 2005


Hello,
  after an upgrade from 5.x to 7.x (Aug 22), I'm unable to connect to
wireless 802.11 access point, which hides its own SSID, using dhclient
(manual settings do work, however it is not very good workaround...).
My wireless card is

ndis0: <BUFFALO WLI-CB-G54 Wireless LAN Adapter> mem 0x88000000-0x88001fff
  irq 9 at device 0.0 on cardbus0

and I use commands

$ ifconfig ndis0 up
$ ifconfig ndis0 authmode shared wepmode on weptxkey 1 wepkey 1:XXX \
  ssid "XXX"

for ndis0 interface setup. However, when I run

$ dhclient ndis0

ssid is lost. It seems that "empty" ssid received from AP is forced to
be a new ssid, when ifconfig ndis0 up is called by dhclient on interface
already set up. I do not know, what should be fixed - ndis layer, 802.11
layer, dhclient, or ifconfig, however the following patch to ifconfig.c
helps to me - if SIOCSIFFLAGS would not change any flag (something is
changed again, what has been changed in the past), ioctl() is simply
skipped.

I'm sure, that connecting to AP with hidden SSID worked in the past.

--- sbin/ifconfig/ifconfig.c.orig	Thu Aug 25 15:13:54 2005
+++ sbin/ifconfig/ifconfig.c	Thu Aug 25 15:15:03 2005
@@ -82,6 +82,7 @@
 
 char	name[IFNAMSIZ];
 int	flags;
+int	saveflags;
 int	setaddr;
 int	setipdst;
 int	setmask;
@@ -714,15 +715,18 @@
 	strncpy(my_ifr.ifr_name, name, sizeof (my_ifr.ifr_name));
 	flags = (my_ifr.ifr_flags & 0xffff) | (my_ifr.ifr_flagshigh << 16);
 
+	saveflags = flags;
 	if (value < 0) {
 		value = -value;
 		flags &= ~value;
 	} else
 		flags |= value;
-	my_ifr.ifr_flags = flags & 0xffff;
-	my_ifr.ifr_flagshigh = flags >> 16;
-	if (ioctl(s, SIOCSIFFLAGS, (caddr_t)&my_ifr) < 0)
-		Perror(vname);
+	if (flags != saveflags) {
+		my_ifr.ifr_flags = flags & 0xffff;
+		my_ifr.ifr_flagshigh = flags >> 16;
+		if (ioctl(s, SIOCSIFFLAGS, (caddr_t)&my_ifr) < 0)
+			Perror(vname);
+	}
 }
 
 void
-- 
Rudolf Cejka <cejkar at fit.vutbr.cz> http://www.fit.vutbr.cz/~cejkar
Brno University of Technology, Faculty of Information Technology
Bozetechova 2, 612 66  Brno, Czech Republic


More information about the freebsd-current mailing list