Unable to connect to wireless 802.11 AP with hidden SSID

Rudolf Cejka cejkar at fit.vutbr.cz
Fri Aug 26 14:09:39 GMT 2005


Doug Barton wrote (2005/08/26):
> I'm 100% sure it was happening with my ndis card, fairly certain it was 
> happening with ath too, but I wouldn't swear to it.

So maybe the behavioral change would be somewhere in the ndis layer?
I took a fast look into sys/dev/if_ndis/* and it seems that it would
be the real source of the problem, like if ssid is not acquired, the
old setting is leaved as is. Unfortunately, I'm going on vacation right
now, so I can return to this problem after Sep 5.

> Did you have a chance to review the patch submitted by Rudolf?

I meant the patch mainly as a fast workaround for those, who have the
same problem, however if developers find useful and logical, so that
ifconfig does not call SIOCSIFFLAGS unnecessarily, why not, I would
be pleased ;o), but I'm very unsure, if it can be skipped in all cases.

Btw, I think that I have a better candicate for commit - new dhclient
really annoys me, that it writes "unknown dhcp option value ..." for
every unknown DHCP option (e. g. for PXE), whereas the old was simply quiet
(chunk 3). And new dhclient makes me mearly crazy :o), when it waits
10 seconds on interface with link down - I have done primitive patch
(chunks #1 and #2), which simply removes waiting, but this is not very
good to make it public, so I have a plan to create a patch, which will
add -t seconds option, so that the timeout is configurable, with the
default value eqal to 0, because I have never seen any reason to wait
so such a long time.

Regards.

--- sbin/dhclient/dhclient.c.orig	Thu Jul 28 02:24:39 2005
+++ sbin/dhclient/dhclient.c	Sat Jul 30 00:55:57 2005
@@ -288,7 +288,7 @@
 main(int argc, char *argv[])
 {
 	extern char		*__progname;
-	int			 ch, fd, quiet = 0, i = 0;
+	int			 ch, fd, quiet = 0;
 	int			 pipe_fd[2];
 	int			 immediate_daemon = 0;
 	struct passwd		*pw;
@@ -351,19 +351,9 @@
 	read_client_conf();
 
 	if (!interface_link_status(ifi->name)) {
-		fprintf(stderr, "%s: no link ...", ifi->name);
+		fprintf(stderr, "%s: no link\n", ifi->name);
 		fflush(stderr);
-		sleep(1);
-		while (!interface_link_status(ifi->name)) {
-			fprintf(stderr, ".");
-			fflush(stderr);
-			if (++i > 10) {
-				fprintf(stderr, " giving up\n");
-				exit(1);
-			}
-			sleep(1);
-		}
-		fprintf(stderr, " got link\n");
+		exit(1);
 	}
 
 	if ((nullfd = open(_PATH_DEVNULL, O_RDWR, 0)) == -1)
@@ -2293,7 +2283,8 @@
 	case DHO_END:
 		return (1);
 	default:
-		warning("unknown dhcp option value 0x%x", option);
+		if (!unknown_ok)
+			warning("unknown dhcp option value 0x%x", option);
 		return (unknown_ok);
 	}
 }

-- 
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