Bug 6582 - Time to enable wpa_supplicant support
: Time to enable wpa_supplicant support
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/etcnet)
: unstable
: all Linux
: P2 enhancement
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2005-04-20 12:36 by
Modified: 2005-08-11 09:45 (History)


Attachments
WPA enable patch (488 bytes, patch)
2005-04-20 12:37, Yurix
no flags Details | Diff
WPA patch (386 bytes, patch)
2005-04-26 18:34, Yurix
no flags Details | Diff
etcnet-0.7.3-alt1-wpa_supplicant (514 bytes, patch)
2005-05-14 14:56, Yurix
no flags Details | Diff
Catch the PID of wpa_supplicant [applied] (576 bytes, patch)
2005-05-14 15:14, Yurix
no flags Details | Diff
Fix for shutdown scripts not called due to iface has been downed by dhcpcd [applied] (450 bytes, patch)
2005-05-14 18:09, Yurix
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-04-20 12:36:24
It almost there, in config-wireless. Suggested patch included. 
One thing is missing too. config-wireless called for each interface regardless 
to presence of wireless options. I suggest to run wpa_supplicant only when 
WPA_DRIVER is set explictly.
------- Comment #1 From 2005-04-20 12:37:52 -------
Created an attachment (id=832) [details]
WPA enable patch
------- Comment #2 From 2005-04-20 13:00:28 -------
> One thing is missing too. config-wireless called for each interface regardless 
Разве?
ifup-common:92:is_yes "$CONFIG_WIRELESS" && ExecIfExecutable
$SCRIPTDIR/config-wireless $NAME && print_progress
------- Comment #3 From 2005-04-21 17:48:45 -------
wpa_supplicant вроде бы обновляется. Тестировать будете, если верну поддержку
WPA?
------- Comment #4 From 2005-04-21 20:36:20 -------
С радостью! 
------- Comment #5 From 2005-04-21 21:31:45 -------
(In reply to comment #2)   
> > One thing is missing too. config-wireless called for each interface   
regardless    
> Разве?   
> ifup-common:92:is_yes "$CONFIG_WIRELESS" && ExecIfExecutable   
> $SCRIPTDIR/config-wireless $NAME && print_progress   
   
Я перепроверил -- тут я был не прав. Правда встает другой вопрос --   
wpa_supplicant может использоваться теперь и на простом ethernet интерфейсе.   
Также как и xsupplicant. Возможно, для этих целей завести отдельную опцию, типа   
USE_AUTH=(wpa|xopen|off-[default])  
    wpa - для wpa_supplicant  
    xopen - для xsupplicant 
    off - соответственно... 
 
WPA тестировать могу, xsupplicant в сизифе нет, но он у меня собран -- 
тестировать могу только частично. И всё это могу тестировать пока только на 
WiFi. 
 
------- Comment #6 From 2005-04-26 14:35:26 -------
/etc/net 0.7.3, начинайте тестирование :)
------- Comment #7 From 2005-04-26 18:34:59 -------
Created an attachment (id=840) [details]
WPA patch
------- Comment #8 From 2005-04-26 18:46:03 -------
1) Следующая конструкция не работает: 
$WPA_SUPPLICANT -i$NAME ${WPA_DRIVER:?-D$WPA_DRIVER} 
Тут видимо хотелось чтобы для тех случаев, когда указан WPA_DRIVER, добавить 
перед ним '-D' и это верно. Однако сама конструкция работает неправильно: 
Если WPA_DRIVER определен и не нулевой, то используем его, иначе ставим -D. 
 
2) wpa_supplicant требует указывать конфигурационный файл '-c /path/to/cfg' 
Для хранения предлагается использовать переменную WPA_CONFIG, которую в 
глобальном файле задефолтить например на /etc/wpa_supplicant.conf 
 
3) wpa_supplicant должен висеть в фоне, для того, чтобы обновлять ключи EAP и 
т.п. От сюда -- нужно добавить опцию '-B' 
 
------- Comment #9 From 2005-04-27 13:42:06 -------
(In reply to comment #8)
> 1) Следующая конструкция не работает: 
Перепутано ":?" и ":+", исправлено.

> 2) wpa_supplicant требует указывать конфигурационный файл '-c /path/to/cfg' 
> Для хранения предлагается использовать переменную WPA_CONFIG, которую в 
> глобальном файле задефолтить например на /etc/wpa_supplicant.conf 
if [ -x "${WPA_SUPPLICANT:=$DEFAULT_WPA_SUPPLICANT}" ]; then
	local prof_conf=`profiled_filename $MYIFACEDIR/wpa_supplicant.conf`
	$WPA_SUPPLICANT -B -i$NAME${WPA_DRIVER:+ -D$WPA_DRIVER}${prof_conf:+ -c $prof_conf}
fi


> 3) wpa_supplicant должен висеть в фоне, для того, чтобы обновлять ключи EAP и 
> т.п. От сюда -- нужно добавить опцию '-B' 
Хорошо.
------- Comment #10 From 2005-04-27 17:05:00 -------
(In reply to comment #9) 
# ifup air 
..../etc/net/scripts/config-wireless: line 27: local: can only be used in a 
function 
Если убрать local, то работает замечательно! 
 
Правда, в расчете на потенциальную необходимость использовать WPA сразу на 
нескольких интерфейсах, более правильным представляется задействование единого 
для всех сетей и интерфейсов конфигурационного файла, чтобы использовать 
алгоритм выбора сети, встроенный в wpa_supplicant. Однако, на данном этапе я не 
имею возможности протестировать такие конфигурации. По-этому, предлагаю 
зафиксировать текущее, пусть не идеальное, но вполне работоспособное решение ! 
 
И ещё один момент. Вероятно, для тех интерфейсов, которые рождаются с участием 
неких демонов :) типа pppd, wpa_supplicant, и т.д стоит предусмотреть смерь 
оных в результате ifdown интерфейса. Например, ловить PID в файл при старте, 
потом бить по нему при останове соответствующего интерфейса, как это сделано во 
многих sysv initscripts ? 
 
------- Comment #11 From 2005-04-27 17:19:28 -------
Фиксируем.
Для ppp наоборот --- смерть демона инициирует ifdown. wpa_supplicant ближе к
zcip/dhcpcd, его наличие влияет только на наличие пакетов, а интерфейс может
быть UP.
------- Comment #12 From 2005-04-27 20:31:27 -------
(In reply to comment #11) 
 В реальности при ifdown интерфейса ppp смерти соответствующего pppd почему-то 
не происходит. По крайней мере у меня дома ifdown ppp0 не убивает pppd, 
соответственно каждый новый service network restart приводит к появлению ppp1 
ppp2 и т.д (я использую pptp tunnel). 
  
> Для ppp наоборот --- смерть демона инициирует ifdown. wpa_supplicant ближе к 
> zcip/dhcpcd, его наличие влияет только на наличие пакетов, а интерфейс может 
> быть UP. 
Согласен, однако это также означает, что как максимум (как минимум не знаю --- 
у нас ведь нет промежуточного состояния между up и down, типа unconf), после 
свершения ifdown эти демоны должны быть сняты с выполнения. 
 
Т.е общее между pppd,wpa_supplicant здесь то, что факт продолжения действия 
после опускания интерфейса является ошибкой, так как при последующем вызове 
ifup в случае ppp рождается новый интерфейс, а для wpa_supplicant появляется 
лишний процесс (точно не знаю -- возможно старый процесс мешает работе вновь 
поднятого). 
Предлагаю всёже убивать wpa_supplicant (и pppd) при ifdown 
Или есть причины, которых я не знаю, но по которым им следует жить после 
ifdown, хотелось бы их услышать. 
 
 
------- Comment #13 From 2005-04-28 10:01:47 -------
>  В реальности при ifdown интерфейса ppp смерти соответствующего pppd почему-то 
> не происходит. По крайней мере у меня дома ifdown ppp0 не убивает pppd, 
У меня происходит, что интересно.

> Согласен, однако это также означает, что как максимум (как минимум не знаю --- 
> у нас ведь нет промежуточного состояния между up и down, типа unconf), после 
> свершения ifdown эти демоны должны быть сняты с выполнения. 
Кто оставляет pid-файл --- снимается. wpa_supplicant, к сожалению, не умеет.
------- Comment #14 From 2005-05-14 11:24:51 -------
Какое у нас текущее состояние дел? Хоть что-то работает?
------- Comment #15 From 2005-05-14 14:55:15 -------
(In reply to comment #14)     
> Какое у нас текущее состояние дел? Хоть что-то работает?     
etcnet-0.7.3-alt1     
Пока нет изменений описанных в коментарии №9    
(https://bugzilla.altlinux.org/show_bug.cgi?id=6582#c9)    
Без этого wpa_supplicant не работает.  
 
Простенький патч, с которым wpa работает на моем ноуте прикладиваю  
(etcnet-0.7.3-alt1-wpa_supplicant.patch)  
 
По сравнению с тем, что в коментарии №9 здесь убрано local и добавлена проверка 
сществования конффайла, без которого запуск также бесмысленен, как и без 
присутствия бинарника wpa_supplicant. 
 
------- Comment #16 From 2005-05-14 14:56:08 -------
Created an attachment (id=880) [details]
etcnet-0.7.3-alt1-wpa_supplicant
------- Comment #17 From 2005-05-14 15:14:32 -------
Created an attachment (id=881) [details]
Catch the PID of wpa_supplicant

Конечно, хотелось бы, чтобы во время опускания интерфейса, опускался также и
процесс wpa_supplicant. Этот патчик создает PID файл. Остается предусматреть
где-нибудь вызов kill `cat /var/run/wpa_supplicant-$NAME.pid` . Попробовал
создать  destroy-wireless -- не действует... 
------- Comment #18 From 2005-05-14 15:50:53 -------
> Пока нет изменений описанных в коментарии #8470
Да-да. Забыл.

> По сравнению с тем, что в коментарии №9 здесь убрано local и добавлена
проверка 
> сществования конффайла, без которого запуск также бесмысленен, как и без 
> присутствия бинарника wpa_supplicant. 
Файл может называться немного по-другому.

destroy-wireless должен быть исполняемым. Но правильнее использовать
shutdown-wireless, чтобы supplicant уничтожался до расформирования интерфейса.
Сделано, смотрите.
http://pilot.org.ua/etcnet/files/etcnet-0.7.4-alt0.2.src.rpm
http://pilot.org.ua/etcnet/files/etcnet-0.7.4-alt0.2.noarch.rpm
------- Comment #19 From 2005-05-14 16:47:30 -------
(In reply to comment #18) 
 
> destroy-wireless должен быть исполняемым. Но правильнее использовать 
> shutdown-wireless, чтобы supplicant уничтожался до расформирования 
интерфейса. 
 
> http://pilot.org.ua/etcnet/files/etcnet-0.7.4-alt0.2.noarch.rpm 
 
Спасибо! 
 
Проверил -- теперь интерфейс стартует, однако по какой-то причине не убивает 
wpa_supplicant после ifdown. Кроме этого, при старте появилась ругань, которой 
раньше не было (invalid LINKDETECT value). Плюс, я бы всё-же убрал бы сообщения 
от wpa_supplicant в /dev/null, хотя вероятно они будут видны только при ручном 
запуске (в смысле при загрузки системы их не будет видно?). 
 
Я проверял так: 
 
# ifup air 
......ERROR: /etc/net/scripts/config-ipv4: invalid LINKDETECT value 
Trying to associate with 00:0f:a4:8b:ad:81 (SSID='SOME' freq=0 MHz) 
Associated with 00:0f:a4:8b:ad:81 
 
# ip addr show dev air 
5: air: <BROADCAST,MULTICAST,NOTRAILERS,UP> mtu 1500 qdisc pfifo_fast qlen 1000 
    link/ether 00:0e:d5:75:f2:0a brd ff:ff:ff:ff:ff:ff 
    inet 10.2.11.64/24 brd 10.2.11.255 scope global air 
 
# pgrep wpa 
11050 
 
# ifdown air 
# pgrep wpa 
11050 
# ip addr show dev air 
Device "air" does not exist. 
 
# NAME=air /etc/net/scripts/shutdown-wireless 
# pgrep wpa 
 
Только теперь умер. 
 
------- Comment #20 From 2005-05-14 17:37:02 -------
> # NAME=air /etc/net/scripts/shutdown-wireless 
Скрипт должен называться shutdown-eth, я правлю. Вывод wpa_supplicant тоже подавлен.
------- Comment #21 From 2005-05-14 17:44:56 -------
(In reply to comment #20) 
> > # NAME=air /etc/net/scripts/shutdown-wireless  
> Скрипт должен называться shutdown-eth, я правлю. Вывод wpa_supplicant тоже 
подавлен. 
 
OK 
 
Тоже смотрю: 
 
Просмотр ifdown показал, что должен вызываться shutdown-eth, потом destroy-eth  
Первый не вызывается из-за того, что чуть выше stop_dhcp_client убивает клиента  
dhcp, который похоже сам делает интевейсу DOWN, а далее в ifdown идет проверка  
if iface_is_up $NAME; then и естественно пролетает. Так что убивать либо в  
destroy-eth, либо что-то придумывать. 
------- Comment #22 From 2005-05-14 18:09:03 -------
Created an attachment (id=885) [details]
Fix for shutdown scripts not called due to iface has been downed by dhcpcd

dhcpcd will bring down the interface when stopping. To keep etcnet logics
to work (running shutdown scripts for example) we should bring it up again as
it is for static IPs.
------- Comment #23 From 2005-05-14 18:35:15 -------
Дело в том, что dhcpcd при выходе снимает IFF_UP с интерфейса. По совести это
нужно контролировать флагом командной строки.
------- Comment #24 From 2005-05-14 18:44:31 -------
(In reply to comment #23) 
> Дело в том, что dhcpcd при выходе снимает IFF_UP с интерфейса. По совести это 
> нужно контролировать флагом командной строки. 
Полностью согласен. 
 
Порылся в руководстве на dhcpcd -- таких флагов на данный момент нет. 
Видимо, на данный момент меньшее зло делать UP самим. 
 
 
------- Comment #25 From 2005-05-18 19:35:06 -------
С wpa_supplicant разобрались?
------- Comment #26 From 2005-05-19 16:43:59 -------
(In reply to comment #25)  
> С wpa_supplicant разобрались?  
 
Похоже что да. К самому функционалу wpa в etcnet вопросов теперь нет. Ну кроме 
того, что он не снимается из-за dhcpcd... :) 
  
------- Comment #27 From 2005-06-24 12:47:03 -------
Пока закроем...