Non-street magic
2010-11-05 04:40Полпятого утра.
Добавил в mpd55 команду set iface description TEMPLATE, где TEMPLATE - пусто или произвольное описание интерфейса (в двойных кавычках, если есть пробелы), в котором можно использовать подстановки:
%a- локальный адрес интерфейса или UNSPEC, если адрес ещё не согласован;%A- адрес пира или UNSPEC, если адрес ещё не согласован;%i- системный индекс интерфейса;%I- имя интерфейса;%l- имя линка (link name), его mpd5 генерирует сам для динамических линков и посылает RADIUS-серверу в составе Session-Id, а также получает от него обратно в Packet Of Disconnect (POD);%S- состояние интерфейса (DoS/UP/DOWN);%t- тип линка (pppoe, pptp, l2tp etc.);%u- своё имя пользователя, если же мы не авторизовались пиру, то дефис в качестве placeholder;%U- имя пользователя пира, если он авторизовался, иначе дефис в качестве placeholder;%%- заменяется на один символ процента.
Описание интерфейса выводится командой ifconfig, а также видно через веб-интерфейс mpd5 в свойствах бандла и интерфейса, ну и через консольный интерфейс тоже.
Ещё перечитывал "Сказания Земноморья" Ле Гуин.
Update 21.11.2010: http://www.grosbein.pp.ru/freebsd/patches/mpd55-desc-0.2.tar.bz2
Работает в боевых условиях.
Update 22.12.2011: http://www.grosbein.pp.ru/freebsd/patches/mpd55-desc-0.3.tar.bz2
Добавил шаблон %M (MAC-адрес клиента). Сегодня вышел mpd-5.6, у него появилась штатно команда set iface description, но она ставит фиксированный дескрипшн, а не printf-like шаблон, как у меня.
Update 20.06.2013: сегодня в портах FreeBSD появился mpd-5.7, в него вошла эта реализация команды set iface description, заменившая старую. Теперь все эти функции в mpd есть "из коробки".
no subject
Date: 2010-11-05 07:24 (UTC)no subject
Date: 2010-11-05 07:52 (UTC)Не спится - встал поздно, ну и засиделся дольше планируемого. Пришлось на основе RTFM и RTFS учиться работать с ядерными вызовами sysctl вообще, с установкой description в частности, с написанием небольшого парсера для таких шаблонов, с изучением потрохов mpd5 и внедрением в него всей этой требухи, ну и с тестированием, конечно.
no subject
Date: 2010-11-05 09:02 (UTC)mpd, кстати, для пользователей или для собственных нужд?
no subject
Date: 2010-11-05 09:08 (UTC)no subject
Date: 2010-11-05 13:39 (UTC)no subject
Date: 2010-11-05 15:32 (UTC)Но патч в ближайшее время опубликую.
no subject
Date: 2012-09-26 11:22 (UTC)no subject
Date: 2012-09-26 14:00 (UTC)no subject
Date: 2013-06-20 12:46 (UTC)no subject
Date: 2013-06-20 13:21 (UTC)Спасибо!
no subject
Date: 2013-09-20 13:13 (UTC)mpd.conf:36: Incorrect context for: 'set iface description %U'
mpd 5.7
В конфиге пробовал по разному:
set iface description %U
set iface description "%U"
set iface description "test"
Всё равно ругается.
no subject
Date: 2013-09-20 13:37 (UTC)no subject
Date: 2013-09-24 13:49 (UTC)no subject
Date: 2015-10-08 22:15 (UTC)Сложно ли добавить еще параметр, скажем, %f, который будет заменяться на локальный ip?
Спасибо!
no subject
Date: 2015-10-10 10:09 (UTC)no subject
Date: 2015-10-10 18:09 (UTC)no subject
Date: 2015-10-23 09:08 (UTC)cd /usr/ports/net/mpd5/files
fetch http://www.grosbein.net/freebsd/patches/mpd5/patch-iface-addr.c
cd ..
make clean all deinstall install
В set iface description для внешних адресов интерфейсов ngX добавлены новые шаблоны: %o для локального адреса (самого роутера), %O для удаленного адреса (клиента). Это не ноль (0), это первая буква в слове "outer".
no subject
Date: 2015-10-24 09:08 (UTC)no subject
Date: 2015-10-24 15:43 (UTC)no subject
Date: 2015-10-24 16:13 (UTC)Некоторые программы типа ntpd или named, которым всё-таки нужно определять локальный IP, используют сложную логику для обхода этого недостатка API: они определяют все IP-адреса в системе и создают не один сокет, принимающий соединения на любой адрес, а по одному сокету на каждый IP, принимающие соединения каждый на свой адрес. Таким образом они узнают, на который IP пришло подключение в зависимости от того, который серверный сокет его породил. Плюс им приходится мониторить изменения набора IP в системе, чтобы открывать новые серверные сокеты для новых адресов IP. Всей этой логики в mpd нет и добавлять её было бы слишком инвазивно. И я вообще не уверен, что она нужна в mpd.
no subject
Date: 2015-10-24 17:42 (UTC)Еще такой вопрос, не совсем по данной конкретной теме: есть проблема с l2tp и роутерами. Вот здесь тема подробно обсуждается (хотя и старая, но решения нет) http://bit.ly/1LUwxQO Вкратце, с компа (win) при отключеном ipsec l2tp работает нормально, а вот с роутера - соединение устанавливается, но стоит открыть через роутер пару страниц, связь пропадает, при этом пир продолжает висеть. Логи по ссылке есть, на самой свежей версии ситуация аналогичная. В какую сторону стоит копать, не посоветуете?
no subject
Date: 2015-10-25 04:15 (UTC)Похоже на проблемы с CCP (компрессией/шифрованием). Первым делом почитать http://dadv.livejournal.com/187619.html и поискать в логах упомянутые там ошибки.