Перейти до

Рекомендованные сообщения

Опубликовано:

VPN Поддержка ? в планах есть, а будет -ли ?

Может возможно ввести / убрать понятие ИНТЕРФЕЙС в конфиге пользователя ?

или например понимать маски интерфейса - /dev/ppp*

:)

  • 4 weeks later...
  • Відповіді 65
  • Створено
  • Остання відповідь

Top Posters In This Topic

Гость Гость_I_Destr
Опубліковано:

Поддерживаю предыдущего оратора! :D

 

Если писать полноценный биллинг (которым хотелось бы видеть СТГ1/2), то туда просто НЕОБХОДИМО включить ВПН!

 

Кроме того, было бы просто замечательно включить также модуль повременного пользования инетом. Можете со мной не согласиться, что мол, есть всякие радиусы и прочая лабудень, но очень хотелось бы работать с ЕДИНОЙ БИЛЛИНГОВОЙ СИСТЕМОЙ, а не собирать все по кускам :D

Опубліковано:
Если писать полноценный биллинг (которым хотелось бы видеть СТГ1/2), то туда просто НЕОБХОДИМО включить ВПН!

Если всеже кому интересно видеть ВПН, давайте совместно примем усилия, например на исходниках СТГ1, там только интерфейсы по маске слушать, например ppp*. Или вообще от прослушивания отказаться и наваять внешний модуль к pppd, что-бы заливал статистику непосредственно в СТГ, но это ИМХО надо делать в цикле (например раз в 2-5 минут), кто с АПИ ПППД близко общался? В заключение еще базу пользователей в SQL перенести :D и будет тот самый НАТУР ПРОДУКТ о котором мечты.

 

P.S. Билинг в первую голову должен отвечать требованиям безопасности ПОТРЕБЛЕНИЯ трафика, другими словами что-б трафик (деньги) не перли.

При системе открытой сети, пусть и с авторизацией, никто не мешает прописать "хакеру" ИП и МАК того кто уже зарегистрировался в сети, и жрать его трафик по малу :) или по многу - в зависимости от настроения.

 

С ВПН такая схема невозможна, у каждого свой интерфейс, а доступ пользователей можно регулировать добавлением/удалением ЛОГИН, ПАРОЛЬ,ИП в chap-secret например.

 

В общем - кому интересна данная теме - пишите, вместе чего либо сваяем.

Опубліковано:
С ВПН такая схема невозможна, у каждого свой интерфейс, а доступ пользователей можно регулировать добавлением/удалением ЛОГИН, ПАРОЛЬ,ИП в chap-secret например.

Ты в курсе как можно собирать статистику с ВПН-сервера? Как выглядит эта статистика?

Если получится сделать сбор стаитстики с ВПН, скажем раз в минуту, то не проблема прикрутить это к стг.

Опубліковано:

Для того что бы собирать статистику с VPN или PPoE что IMHO удобнее надо писать Radius Server, а именно плагин к StarGazer чтоб он являлся Radius Server. Что в принципе удобно и красиво... Но потребует значительных затрат времени помойму пока это не актуально, имеет смысл довести текущии режимы до нормальной работоспособности.

Опубліковано:
Ты в курсе как можно собирать статистику с ВПН-сервера? Как выглядит эта статистика?

Если получится сделать сбор стаитстики с ВПН, скажем раз в минуту, то не проблема прикрутить это к стг.

Да, я смотрел примеры плагинов для ПППД, он понимает , там есть реализация опроса. Я попозднее соберу все что у меня есть по данному поводу и кину тебе в мыло.

 

Пока приведу пару ссылк:

http://www.chelcom.ru/~anton/projects/pppd-stacker/

http://linux.uatel.net.ua/soft/ppp/ppp-verbose.phtml

http://nsg.net.ru:8100/Lists/nsg-linux/Message/237.html

http://nsg.net.ru:8100/Lists/nsg-linux/Message/232.html

http://nsg.net.ru:8100/Lists/nsg-linux/Message/234.html

http://freshmeat.net/projects/pppd-tacacsradius/

http://packages.debian.org/unstable/net/pppdcapiplugin.html

мжно пйти и таким путем:

http://nibs.net.ua/src/radpppd/radpppd.tgz

http://nibs.net.ua/src/radpppd/

http://shs.sumy.ua/cgi-bin/index.cgi?actio...rch&type=recent

Опубліковано:
Да, я смотрел примеры плагинов для ПППД, он понимает , там есть реализация опроса. Я попозднее соберу все что у меня есть по данному поводу и кину тебе в мыло.

Вообще IMHO писать свой плагин вместо того чтобы воспользоватся уже говтовым протоколом(Radius) изврат... Radius именно для этого и предназначен.

Опубліковано:
Если получится сделать сбор стаитстики с ВПН, скажем раз в минуту, то не проблема прикрутить это к стг.

В догонку - за основу подхода к проблеме можно взять плагин к пппд:

http://www.chelcom.ru/~anton/projects/pppd-tacacs+radius/

http://www.chelcom.ru/~anton/projects/file...us-1.4.1.tar.gz

и собственно изменить формат слива статистики (аккоунтига), + повыкидывать лишнее, приципить к СТГ килялку процесса ПППД с 0 или отрицательным балансом...

:vah: (на первый взгляд)

Опубліковано:

Народ, извините за неграмотность, но вы можете мне сказать, что такое радиус, где про него почитать, и с чего вдруг радиус имеет отношение к сбору статитсики с впн?

Опубліковано:

Вот тут достаточно внятное и простое объяснение что такое Radius и TACACS+. Вообще Radius это протокол для учета и аутентификации пользователей подписанных на услуги.

А отношение к VPN он имеет потомучто VPN использует pppd для которого существует плагин radius_client.o. Дальше описывать не буду в линке ниже приведен некий алгоритм работы pppd, радиус клиента и радиус сервера в связке.

 

http://www.lanbilling.ru/radius_tacacs.html

Опубліковано:
А отношение к VPN он имеет потомучто VPN использует pppd для которого существует плагин radius_client.o.

Ну а зачем париться с этй тулзой и внедрять протокол радиуса в СТГ.

Ты сам написал ответ - "отношение к VPN он имеет потомучто VPN использует pppd для которого существует плагин radius_client.o"

- кстати плагинов к ПППД намного болеше, т третьих разработчиков.

 

Так надо наваять собственный плагин, с протоколом к СТГ, тем более что исходники есть, там все довольно просто.

Опубліковано:

den68

А вот интересно в "поддержку VPN" вкладывается понятие авторизации или нет, судя по предложению добавлять в chap-secret нет?

Никто не спорит что написать свой плагин можно... Но можно подстраиватся под принятые стандарты которые позволят интегрироватся нам не только с pppd, а можно воять свое. Все _развитые комерчиские биллинговые системы_ имеют Radius Server. Почему же тогда нужно изобретать велосипед, когда протокол Radius хорошо описан, стандартизирован и нет абсолютно никакой гарантии что мы придумаем что-то лучше.

Также kill ppp c 0 абсолютно не рулит. Просто надо отрубать пользователя плагином.

 

С ВПН такая схема невозможна, у каждого свой интерфейс, а доступ пользователей можно регулировать добавлением/удалением ЛОГИН, ПАРОЛЬ,ИП в chap-secret например.

И вообще насчет этого тоже очень спорно учитывая что вопервых насколько я смотрел есть понятие keepalive в старгейзере.

А еще ты себе представляеш что будет если два юзвера с одинм IP появится в сети? Работать просто не сможет не один не другой. ВПН даже с секурными паролями ломается не сильно сложнее чем текущее состояние старгейзера. Другой вопрос что у клиента посуществу всегда прямо с операционной системой есть клиент, и это действительно очень удобно. Плюс можно на сервере сделать выдачу реальных IP адресов. Потому я за ВПН, но счетаю что имеет смысл отложить это скажем на третий релиз.

Опубліковано:
А еще ты себе представляеш что будет если два юзвера с одинм IP появится в сети? Работать просто не сможет не один не другой.

А за чем в схеме с ВПН иметь одинаквые IP, и впрос весьма спорный - как заламать ВПН при правильн поднятом файрволе между входным и выходным (ппп) интерфейсами. А тот факт что могут появиться два пользвателя с одним ИП в принципе исключен самой схемомой реализации:

например пптпд или выделяет адрес из пула адресов, соответственно два раза один и тотже адрес он выделить не сможет, или адреса жестко привязаны к логину и паролю в файле *ap-secrets - что тоже исключает двойное назначение.

И ествено поскольку линк Поинт-ту-Поинт пользователь не может поменять адрес на выходном интерфейсе, и т.д.

Опубліковано:
А за чем в схеме с ВПН иметь одинаквые IP

Это относилось к фразе, что в Старгейзере очень легко подломать защиту сменой IP адреса и MAC адреса, я какраз и говорил что в локальной сети это не возможно и потому подмена не произойдет, а если компьютер выключен то соответсвенно не работает авторизатор StarGazer и потому подмена нечего не даст.

 

Потому как бы то что ты говориш и так очевидно. Текущая реализация StarGazer с авторизацией не проще в зломе чем VPN.

А защищенность VPN никак не звязанна с фаирволом.

  • 3 weeks later...
Опубліковано:

Вопрос к любителям ВПН.

 

1. Как вы представляете работу СТГ + ВПН? Как используетс авторизатор и используется ли вообще?

 

2. Какими средствами авторизуется пользователь ВПН?

 

3. Можно ли написать прогу или скрипт, которая обращаясь к радиусу или еще к кому-то могла сказать такое: "пользователь такокй-то скачал столько-то начиная с такого-то времени по таким-то направлениям"?

 

Если п.3 реализуем, я сделаю поддержку ВПН в СТГ.

Опубліковано:
Вопрос к любителям ВПН.

 

1. Как вы представляете работу СТГ + ВПН? Как используетс авторизатор и используется ли вообще?

 

2. Какими средствами авторизуется пользователь ВПН?

 

3. Можно ли написать прогу или скрипт, которая обращаясь к радиусу или еще к кому-то могла сказать такое: "пользователь такокй-то скачал столько-то начиная с такого-то времени по таким-то направлениям"?

 

Если п.3 реализуем, я сделаю поддержку ВПН в СТГ.

ПО пункту 3 - связка pptpd + pppd + плагин для pppd pppd_radius + *radius server.

тлько завязываться на всю эту мутоту вместе ИМХО не имеет смысла при прикручивании к СТГ.

Уж больно мнго разнообразного (кривоватого) софта (Радиус имелся в виду).

1. pptpd - собственно слушает порт 1723 и поднимает pppd.

2. в pppd происходит авторизация присвоение ИП итд, на сновании файла pap-secret или chap-secret, или через pppd_radius плугин путем запроса у радиус сервера.

3. Радиус сервер поддерживает верефикацию клиента на момент коннекта, аккаунтинг по времени, трафику итд. - но имеет ИМХО не чень удобный конфиг и вывод информации.

 

2.а pppd_radius - собственно вот этот плагин и надо переписать под протокол общения с СТГ.

Опубліковано:
ПО пункту 3 - связка pptpd + pppd + плагин для pppd pppd_radius + *radius server.

тлько завязываться на всю эту мутоту вместе ИМХО не имеет смысла при прикручивании к СТГ.

Уж больно мнго разнообразного (кривоватого) софта (Радиус имелся в виду).

1. pptpd - собственно слушает порт 1723 и поднимает pppd.

2. в pppd происходит авторизация присвоение ИП итд, на сновании файла pap-secret или chap-secret, или через pppd_radius плугин путем запроса у радиус сервера.

3. Радиус сервер поддерживает верефикацию клиента на момент коннекта, аккаунтинг по времени, трафику итд. - но имеет ИМХО не чень удобный конфиг и вывод информации.

 

2.а pppd_radius - собственно вот этот плагин и надо переписать под протокол общения с СТГ.

Так, ща я поясню как я вижу себе все стыковку.

 

1. Есть авторизатор. Клиент коннектится. На сервере выполняется скрипт онконект, в нем происходит подъем pppd (я верно мыслю?)

 

2. Часть сервера stg, ответственная за подсчет трафика остановлена и не работает.

 

3. Кто-то собирает статистику о трафике (радиус?).

 

4. Раз в минуту (5, 10 ...) вызывается скрипт, который каким-то боком (это моя проблема каким) передает информацию о статистике серверу стг.

 

5. сервер снимает деньги на основании переданной ему статистики, и если денег не стало, вызывает ondisconnect, в котором кладет pppd.

 

 

Вот, в этой схеме меня интересует можно ли в скриптах onconnect и ondisconnrct выполнить установление и разрыв впн-соединения?

Опубліковано:
pppd_radius - собственно вот этот плагин и надо переписать под протокол общения с СТГ.

В принцепе вполне реально.

 

А стыковка должна выглядить примерно так не суть важно RADIUS протокол мы используем или нет:

1. Клиент коннектится по PPTP соответсвенно запускается pppd который стартует плагин(RADIUS CLIENT или СТГ CLIENT). Плагин в свою очередь производит запрос проверки пришедшего ему логин и пароля по ppptp. Для этого он как и авторизатор посылает запрос СТГ Server. В ответ СТГ дает разрешение на установление связи или нет соответсвенно.

2. Допустим авторизация прошла. Дальше наш плагин скидывает статистику с интерфейса СТГ server который обрабатывает ее штатным порядком.

 

Так, ща я поясню как я вижу себе все стыковку.

 

Предложенная схема не совсем верна.

 

1. Есть авторизатор. Клиент коннектится. На сервере выполняется скрипт онконект, в нем происходит подъем pppd (я верно мыслю?)

Авторизатор в том виде как он сейчас есть в СТГ вообще не нужен для VPN. Поскольку инициатор VPN соединения является клиент(можно конечно и извернутся :-)) и при установлении соединения он передает логин и пароль. Тогда задача каким-то макаром дать возможность демону pppd проверить логин и пароль средствами СТГ. Штатно как правильно сказал den68 это либо два plaintext файла papsecret и chapsecret или соответсвенно некий плагин.

 

2. Часть сервера stg, ответственная за подсчет трафика остановлена и не работает

 

ХЗ возможно и можно прослушивать ppp интерфейс... Тогда теор можно обойтись без пункта 3-и. На днях потестю. Но 100% если использовать libipq то можно статистику снимать файрволом с интерфейсов ppp*.

 

3. Кто-то собирает статистику о трафике (радиус?).

Статистику должен собирать СТГ. Использовать внешний Radius Server врятле получится да и криво.. Потому в СТГ просто придется дописать модуль который и будет собственно Radius server-ом ну или сервером СТГ протокола для сбора статистики.

 

 

Вот, в этой схеме меня интересует можно ли в скриптах onconnect и ondisconnrct выполнить установление и разрыв впн-соединения? 

 

Убить соединение конечно можно :-) Например убив pppd. При наличии плагина это проще. Установить соединение нельзя по преведенной выше проблемме.

Опубліковано:

1. Есть авторизатор. Клиент коннектится. На сервере выполняется скрипт онконект, в нем происходит подъем pppd (я верно мыслю?)

 

2. Часть сервера stg, ответственная за подсчет трафика остановлена и не работает.

 

3. Кто-то собирает статистику о трафике (радиус?).

 

4. Раз в минуту (5, 10 ...) вызывается скрипт, который каким-то боком (это моя проблема каким) передает информацию о статистике серверу стг.

 

5. сервер снимает деньги на основании переданной ему статистики, и если денег не стало, вызывает ondisconnect, в котором кладет pppd.

 

 

Вот, в этой схеме меня интересует можно ли в скриптах onconnect и ondisconnrct выполнить установление и разрыв впн-соединения?

1. - Авторизатор ИМХО можно не испльзовать, (или переделать его под запуск созданнго ВПН соеденения). Все необхдимое для поднятия ВПН есть в любых Вин и Юникс платфрмах. Детальн описано например:

http://spacegate.com.ua/rus/install/vpnwin9x.html

 

2. Сервер должен запускать сеанс pppd при обращении - стветственно слушать порт 1723

 

3. Статистику должен сбирать СТГ, с помощью плагина к pppd. За оснву для изготовления плагина мжно взять ppp_radius плагин.

Он с заданной передичнстью может сливать информацию о времени и трафике в СТГ. В принципе проще взять пакет pppd и ознакомиться с файлом PLUGINS в крневой деректории, там описано API взаимотношений pppd и возможных плагинов, есть примеры.

P.S. Кстати, при этом подходе возможно использвать СТГ как билинг и для Dial-Up!

 

4.5. Убивать pppd по пиду через тот-же плагин. Кстати, там есть сответствующая функция.

Опубліковано:

(или переделать его под запуск созданнго ВПН соеденения)

А почемуб просто тогда не создать это соединение на лету? Все параметру у авторизатора есть. Только не вижу я смысла вообще в авторизаторе. ВПН соединение вот вам и авторизатор.

 

2. Сервер должен запускать сеанс pppd при обращении - стветственно слушать порт 1723

Это делает и так демон ppptp все заапустит.

И конечно если будет написан плагин то можно будет счетать и DialUp.

 

Вот в общем то о чем я толкую. Но у этой системы в текущем состоянии есть для меня большой недостаток, она не умеет счетать трафик, да еще и написана python.

 

http://ibs.sourceforge.net/

Опубліковано:

Для страждущих, наваял тут патч для pptpd, теперь можно VPN прикрутить к текущему СТГ без глобальных переделок.

 

Смысл патча:

- привязка номера ppp интрфейса к IP адресу

 

Пример: наружная сеть: 10.0.100.0

Внутренняя сеть: 192.168.90.0 (где живет СТГ)

DHCPD выдает адреса для сети 10.0.100.0 идентичные по последней цифре с сетью 192.168.90.0, например:

 

Пользователь прописан в СТГ с IP адресом 192.168.90.77, как следствие, интерфейс для подсчета трафика ему прописывается ppp77.

DHCPD должен выдавать ему IP адрес во внешней сети 10.0.100.77

в CHAP-SECRET в директории /etc/ppp/ соответственно заноситься

 

<логин СТГ> * <пароль СТГ> 192.168.90.77

 

как следствие, ему при установлении ВПН соеденения присваивается ИП 192.168.90.77 внутренней сети, а интерфейс в результате применения патча становиться ppp77 - СТГ считает трафик.

 

При тестах использовались:

pptpd 1.2.1

pppd 2.4.2

mppe pppd + kernel 2.4.26 patch (не обязательно)

stargazer-1 (последний релиз (бета ?))

 

Сам патч: (pptpd 1.2.1)

 

*** /INSTALL/PPTPD/pptpd-1.2.1/pptpctrl.c	Tue Aug 10 17:55:12 2004
--- /INSTALL/PPTPD-PATCH/pptpd-1.2.1/pptpctrl.c	Thu Aug 12 23:56:24 2004
***************
*** 101,112 ****
 {
 	char pppLocal[16];  /* local IP to pass to pppd */
 	char pppRemote[16];  /* remote IP address to pass to pppd */
 	struct sockaddr_in addr;	/* client address */
 	socklen_t addrlen;
 	int arg = 1;
 	int flags;
 	struct in_addr inetaddrs[2];
!  char *pppaddrs[2] = { pppLocal, pppRemote };
 
         gargc = argc;
         gargv = argv;
--- 101,115 ----
 {
 	char pppLocal[16];  /* local IP to pass to pppd */
 	char pppRemote[16];  /* remote IP address to pass to pppd */
+  char ConnectIP[16];  /* Connect IP address to pass to pppd */
+ 
 	struct sockaddr_in addr;	/* client address */
 	socklen_t addrlen;
 	int arg = 1;
 	int flags;
 	struct in_addr inetaddrs[2];
! //	char *pppaddrs[2] = { pppLocal, pppRemote };
!  char *pppaddrs[3] = { pppLocal, pppRemote, ConnectIP };
 
         gargc = argc;
         gargv = argv;
***************
*** 183,190 ****
 	signal(SIGTERM, &bail);
 	NOTE_VALUE(PAC, call_id_pair, htons(-1));
 	NOTE_VALUE(PNS, call_id_pair, htons(-1));
! 
 	syslog(LOG_INFO, "CTRL: Client %s control connection started", inet_ntoa(addr.sin_addr));
 	pptp_handle_ctrl_connection(pppaddrs, inetaddrs);
 	syslog(LOG_DEBUG, "CTRL: Reaping child PPP[%i]", pppfork);
 	if (pppfork > 0)
--- 186,198 ----
 	signal(SIGTERM, &bail);
 	NOTE_VALUE(PAC, call_id_pair, htons(-1));
 	NOTE_VALUE(PNS, call_id_pair, htons(-1));
! /*
! !!!!!!!!!!!!!!!!! Insert CONNECT address !!!!!!!!!!!!!!!!!!!!!!
! */
 	syslog(LOG_INFO, "CTRL: Client %s control connection started", inet_ntoa(addr.sin_addr));
+  //
+  inetaddrs[2] = addr.sin_addr;
+  //
 	pptp_handle_ctrl_connection(pppaddrs, inetaddrs);
 	syslog(LOG_DEBUG, "CTRL: Reaping child PPP[%i]", pppfork);
 	if (pppfork > 0)
***************
*** 374,379 ****
--- 382,390 ----
                                       inet_ntoa(inetaddrs[1]),
                                       ntohs(((struct pptp_out_call_rply *) (rply_packet))->call_id_peer),
                                       ntohs(((struct pptp_out_call_rply *) (rply_packet))->call_id));
+ /*
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!     startCall     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
+ */
 
     if ((pty_fd = startCall(pppaddrs, inetaddrs)) > maxfd)
     	maxfd = pty_fd;
***************
*** 595,600 ****
--- 606,614 ----
 #elif clientSocket > 1
   close(clientSocket);
 #endif
+ /*
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! launch_pppd !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ */
   launch_pppd(pppaddrs, inetaddrs);
   syslog(LOG_ERR, "CTRL: PPPD launch failed! (launch_pppd did not fork)");
   _exit(1);
***************
*** 620,625 ****
--- 634,641 ----
 {
 	char *pppd_argv[14];
 	int an = 0;
+  char m[4][4]; // = {'\0','\0','\0','\0'};
+  int z = 0; 
 	sigset_t sigs;
 
 	pppd_argv[an++] = ppp_binary;
***************
*** 739,744 ****
--- 755,775 ----
                  pppd_argv[an++] = inet_ntoa(inetaddrs[1]);
         }
 
+ /*
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PPP-INTERFACE OCTET !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ */
+  
+  z = sscanf(inet_ntoa(inetaddrs[2]), "%s.%s.%s.%s", m[0], m[1], m[2], m[3]);
+  if ( z > 0 )
+  { 
+  	pppd_argv[an++] = "unit";
+  	pppd_argv[an++] = m[3];
+  	syslog(LOG_DEBUG, "CTRL (PPP-INTERFACE OCTET): ( planed: ppp%s )", m[3]);
+  } else {
+  	syslog(LOG_DEBUG, "CTRL (PPP-INTERFACE OCTET): ( NOT CONVERT ppp IFACE )");
+  	}
+  
+  	
 	/* argv arrays must always be NULL terminated */
 	pppd_argv[an++] = NULL;
 	/* make sure SIGCHLD is unblocked, pppd does not expect it */

 

С вопросами - обращайтесь.

З.Ы. Патч не претендует на лучшую реализацию, будут поправки - в студию.

Опубліковано:

В догонку к патчу: проверка на IP адрес пдключающегося,

вставить в /etc/ppp/ip-up:

 

RET1=`echo $REMOTE_IP_ADDRESS | sed -e 's/.*\.[0-9][0-9][0-9]//'`
RET2=`echo $IFNAME | sed -e s/ppp/.$*/g`

if [ $RET1 != $RET2 ]
   then
   /bin/kill -2 $PPPD_PID
fi

Опубліковано:
Хе, есть у меня чувство, что впн к стг прикрутить на раз, два :)

Причем к текущему и без правки кода

Вот кусок не очень доработанного плагина для pppd коротрый сливает через заданный промежуток времени статистику.

Так сказать СЕМПЛ, сливает в лог файл, на это место можно прикрутить в:

СТГ, SQL, итд. - по желанию.

 

П.С. Данный пост в основном для СТГ-34, так ка я вроде обещал показать как это реализовать. Дальше - точить напильником ИМХО.

 

#include <stddef.h>
#include <time.h>
#include "pppd.h"

static int pppdstat=0;

char pppd_version[] = VERSION;

extern u_int32_t remoteIP;

static option_t my_options[] = {
       { "pppdstat", o_int, &pppdstat,
         "ppp statistics... " },
       { NULL }
};

void    print_info()
{
       update_link_stats(0);
       info("pppdstat: remoteIP=%I sent %u bytes, recv %u bytes.",remoteIP,link_stats.bytes_out, link_stats.bytes_in);
};

static int my_idle(struct ppp_idle *idle)
{
       print_info();
       return (idle_time_limit);
}

static int my_holdoff(void)
{
   if (link_stats_valid) print_info();
   return (holdoff);
};

void plugin_init(void)
{
       info("pppdstat: plugin running...");
       add_options(my_options);
       idle_time_hook = my_idle;
       holdoff_hook = my_holdoff;
}

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Створити нове...