Подробности работы
Этот раздел сейчас дорабатывается, приносим извинения за неудобства. Если вам нужна срочная помощь, обратитесь в службу поддержки Tibbo.
Библиотека PPPoE работает настойчиво: после запуска вызовом pppoe_start() она будет «упорно» подключаться к ADSL-модему. Сколько бы раз соединение ни обрывалось, библиотека продолжит попытки. Если успешно установленное соединение PPPOE обрывается, библиотека попытается установить его заново. Остановить это можно только вызовом pppoe_stop().
Спецификация PPPoE предусматривает использование в сети нескольких ADSL-модемов (так называемых «концентраторов доступа»). Протокол даёт устройству возможность выбрать, через какой концентратор доступа работать. На практике в большинстве сетей только один ADSL-модем. Поскольку так бывает чаще всего, библиотека PPPOE старается использовать тот концентратор доступа, который первым ответит на пакеты «обнаружения» (discovery) от устройства.
Для работы библиотеки нужно 2 страницы буфера. Они выделяются при вызове pppoe_start(). Библиотека проверяет, достаточно ли места в буфере, и вызывает callback_pppoe_pre_buffrq(), если нужно больше. Страницы буфера, выделенные библиотеке PPPOE, не освобождаются никогда, даже после успешной установки соединения PPPoE или вызова pppoe_stop().
Успешное установление соединения PPPoE состоит из нескольких шагов: настройка соединения по протоколу LCP, затем вход и настройка IP-адреса устройства. Чтобы наблюдать за процессом, добавьте #define PPPOE_DEBUG_PRINT 1 в раздел определений файла global.tbh вашего проекта (и не забудьте убрать эту строку позже).
Как только соединение PPPoE успешно установлено, библиотека задаёт свойства объекта pppoe. и вызывает callback_pppoe_ok(). После этого библиотека следит за «здоровьем» соединения PPPoE: периодически отправляет эхо-запросы и ждёт эхо-ответов от ADSL-модема. Если время ожидания истекает, библиотека считает, что соединение PPPoE оборвалось, вызывает pppoe_failure() и пытается установить его заново.
Если приложение вызывает pppoe_stop(), библиотека корректно завершает соединение PPPoE (если оно было установлено) и переходит в состояние простоя до следующего вызова pppoe_start().
Подробнее о PPPoE можно прочитать здесь: https://en.wikipedia.org/wiki/pppoe.