Перейти к содержанию
    

Вопрос по PPP и lwIP

В общем пытаюсь сделать отработку ситуаций когда связь прерывается. В случае, модем перестает отвечать, PPP просто сакм закрывается, я вижу это в логе, но как запросить у стека что PPP открыт или закрыт? Потому что если PPP закрывается и сделать netconn_connect, то стек остается в ожидании навечно, а потока PPP уже нет в помине.

Подскажите как правильно делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем пытаюсь сделать отработку ситуаций когда связь прерывается. В случае, модем перестает отвечать, PPP просто сакм закрывается, я вижу это в логе, но как запросить у стека что PPP открыт или закрыт? Потому что если PPP закрывается и сделать netconn_connect, то стек остается в ожидании навечно, а потока PPP уже нет в помине.

Подскажите как правильно делать.

 

Какая ОС?

 

#ifconfig | grep ppp0

 

Программно - я бы попробовал с помощью ioctl(SIOCGPPPSTATS)

Фрагмент исходного текста драйвера ppp:

static int ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
    struct ppp *ppp = dev->priv;
    int err = -EFAULT;
    void *addr = (void *) ifr->ifr_ifru.ifru_data;
    struct ppp_stats stats;
    struct ppp_comp_stats cstats;
    char *vers;

    switch (cmd) {
    case SIOCGPPPSTATS:
        ppp_get_stats(ppp, &stats);
        if (copy_to_user(addr, &stats, sizeof(stats)))
            break;
        err = 0;
        break;

    case SIOCGPPPCSTATS:
        memset(&cstats, 0, sizeof(cstats));
        if (ppp->xc_state != 0)
            ppp->xcomp->comp_stat(ppp->xc_state, &cstats.c);
        if (ppp->rc_state != 0)
            ppp->rcomp->decomp_stat(ppp->rc_state, &cstats.d);
        if (copy_to_user(addr, &cstats, sizeof(cstats)))
            break;
        err = 0;
        break;

    case SIOCGPPPVER:
        vers = PPP_VERSION;
        if (copy_to_user(addr, vers, strlen(vers) + 1))
            break;
        err = 0;
        break;

    default:
        err = -EINVAL;
    }

    return err;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

×
×
  • Создать...