【问题标题】:pppd stuck in dialing processpppd 卡在拨号过程中
【发布时间】:2011-06-28 07:55:03
【问题描述】:

我正在将几个 USB 调制解调器连接到我的 Ubuntu:
uname -a
Linux devlp 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 21:21:01 UTC 2011 i686 GNU/Linux
pppd version: 2.4.5

我正在使用 8 个 sierra 无线调制解调器进行测试,所有这些调制解调器都已连接并正常工作。他们每个人都有一个“ppp”界面。
在它们连接后,我试图重新连接 ppp7,起初,pppd 失败,然后在第二次尝试中它到达它说:“串行连接建立”并卡住的地步。我尝试了所有的终止信号来终止该 pppd,但没有成功,终止它的唯一方法是拔掉它试图拨号的调制解调器。
我寻找 pppd 卡住的确切位置,它就在这里:

int generic_establish_ppp (int fd)
{
    int x;

    if (new_style_driver) {
        int flags;
        FILE *f=fopen("/root/ptest.log","a");
        fputs("before get channel\n",f);
        fflush(f);
        /* Open an instance of /dev/ppp and connect the channel to it */
        if (ioctl(fd, PPPIOCGCHAN, &chindex) == -1) { // <<<<<<< STUCK HERE
            error("Couldn't get channel number: %m");
            goto err;
        }
        fputs("after get channel\n",f);
        ....
    }
}

看起来问题出在 ppp7 上——它可以是任何调制解调器,所以我认为这不是调制解调器问题,但我不明白该命令中到底发生了什么?谁负责回答?它只是内核吗?调制解调器驱动程序?调制解调器本身?我不太明白如何处理这些信息,因为 PPPIOCGCHAN 文档很差..

你怎么看?

【问题讨论】:

    标签: linux-kernel serial-port modem ioctl ppp


    【解决方案1】:

    我很漂亮我解决了这个问题 - 我在 ioctl 命令之前在 pppd 中添加了一些行以使 fd NONBLOCK :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      相关资源
      最近更新 更多