В связи с очередным вопросом возникла следующая умозрительная идея:
1) создаём мост;
2) если нужно, напускаем на него DHCP-клиент демон;
3) в него втыкаем беспроводной интерфейс;
4) сканим эфир, если точек с нужным нам SSID больше одной, выбираем подходящую нам по нужному критерию (чаще всего - уровень сигнала), если она одна — то, естественно, выбирать нечего;
5) цепляемся к этой точке, если зацепились и нужно дёрнуть DHCP-клиента дёргаем его;
6) с некой периодичностью выполняем фоновой задачей пункт 4;
7) если выясняется, что подходит более другая точка доступа, отцепляемся от текущей и перецепляемся на другую и идём на пункт 5 (кроме момента с DHCP), иначе - на пункт 6.
Промежуточный мост здесь, чтобы не валились открытые соединения при падении и подъёме беспроводного интерфейса. Кстати, в него же можно воткнуть и традиционный Ethernet, мониторя и его и поднимая беспроводную сеть, только если на проводном нет линка.
Сразу предупреждая: да, я знаю, есть оборудование и стандарты, обеспечивающие роуминг. Разговор про случай, когда нет такого и нет возможности/желания его купить.
Велосипед/не взлетит?