|
用主MCU对modem拨CMWAP时,在LCP,PAP,NCP(IPCP)协商结束时,调用ipcp_up函数失败,看代码跑到ipcp.c的
static void ipcp_up(fsm *f)
{
u32_t mask;
ipcp_options *ho = &ipcp_hisoptions[f->unit];
ipcp_options *go = &ipcp_gotoptions[f->unit];
ipcp_options *wo = &ipcp_wantoptions[f->unit];
np_up(f->unit, PPP_IP);
IPCPDEBUG(LOG_INFO, ("ipcp: up\\n"));
if (!ho->neg_addr) //得不到服务器IP,选择默认?
ho->hisaddr = wo->hisaddr;
if (ho->hisaddr == 0) { //就在这退出了.ipcp_wantoptions在初始化IP是0
LWIP_DEBUGF(DBG_ON, ("Could not determine remote IP address\\n"));
ipcp_close(f->unit, "Could not determine remote IP address");
return;
}
.......以下略
}
看数据包,在IPCP中,服务器没有告诉modem它的IP.发了一个包7E,FF,03,80,21,01,00,00,04,DC,ED,7E;
modem回包是7E,FF,03,80,21,02,00,00,04,11,C8,7E;就是请求包内容为空,回应确认OK.
然后modem请求动态IP,服务器给modem分配了一个IP,是对的.这样算协商通过吗?? 所以ipcp_wantoptions应该初始化成移动网关?(在PPP源码是初始化为0).
请哪位知道的指导一下.谢谢 |
|