2009-05-07 3 views
3

Я хотел бы активировать обратный вызов каждый раз, когда моя сетевая карта отправляет новую информацию о доступных сетях. Я не против, если мне тоже нужно опросить эту информацию. Я просто не хочу полагаться на нерестование «iwlist scan last» каждую секунду, но это именно то, что мне нужно (имя сети + канал + тип шифрования).Какой API предоставляет уведомления о беспроводных сетях в Linux?

Есть ли библиотека, которая реализует такую ​​функцию? (или есть ли какие-либо вызовы ioctl для этого?)

Меня интересует только модуль ndiswrapper, если это имеет значение.

ответ

3

Если NetworkManager запущен, он доступен через его DBUS API - см. События и WirelessNetworkDisappeared.

В противном случае, вы будете иметь дело с wext себя (это то, что НМ использует внизу), вы были бы заинтересованы в IWEVREGISTERED и IWEVEXPIRED события, поступающие через интерфейс NETLINK_ROUTE.

+0

Это должно сделать трюк. Тем не менее, я молча надеялся на какую-то красивую библиотеку оберток ... – viraptor

+0

К сожалению, я не видел никаких хороших оберток для этой конкретной функции. :( – ephemient

1

Если вы не хотите использовать DBUS, вы также можете просто отбросить скрипт/программу в /etc/NetworkManager/dispatcher.d/, где он будет вызываться NetworkManager при определенных событиях.

См. «man 8 NetworkManager» для типов событий и аргументов, переданных скрипту. Сценарий будет выполнен как root, хотя, возможно, это не то, что вы хотите.

+0

К сожалению, NM не работает правильно с моей карточкой - вот почему я хотел получить собственное уведомление. – viraptor

+0

К сожалению, если NM не работает правильно с вашей картой, это, вероятно, означает, что водитель делает что-то неправильно и, следовательно, вполне возможно что ничего без опроса не будет работать. Какая у вас карточка, и можно ли ее установить для работы с NM? – ephemient