20170331_jeffrey - silenceuncrio/diary GitHub Wiki
1150
一早都在忙 WAN Ethernet
page 的事
目前的發現是 cgi-bin/ipv6lan.cgi?act=default
這個動作會造成系統異常
細節如 ipv6lan.c
static json_object * _default() {
int res = ICOS_GetSetting(MODULE_IPV6LAN, OPFLAG_GET_DEFAULT, 0, &Ipv6lan, sizeof(Ipv6lan));
if (res != ICOS_SUCCESS) {
jweb.http.status(500);
jweb.out.json.fail("ICOS_GetSetting fail");
}
res = ICOS_Apply(MODULE_IPV6LAN, 0, 0, &Ipv6lan, sizeof(Ipv6lan));
if (res != ICOS_SUCCESS) {
jweb.http.status(500);
jweb.out.json.fail("ICOS_Apply fail");
}
jweb.out.json.ok();
}
當異常發生的時候
ICOS_Apply(MODULE_IPV6LAN, 0, 0, &Ipv6lan, sizeof(Ipv6lan))
會咬住不會 return
目前不是每次都會發生
ariel 表示他會去查這個 issue
1445
ariel 表示他最近有針對 pppoe 和 ipv6lan 作一些修改
幫忙 git pull 最新的 code 再測一下
透過 web 切換到 pppoe 時候順便把 ipv6lan apply 成 default
不過當使用者從 browser 端 trigger reboot 動作時
發現 device 並沒有收到該 reboot 的 http 訊息
幫忙修改 ipv6_lan.c
的 SetIPV6LANSetting()
static int SetIPV6LANSetting(int flag, int index, void* pStruct, int structSize)
{
ipv6_lan *pLAN=(ipv6_lan *)pStruct;
CPRT("IN:\n");
if (IsBootInitProcess())
{
return ICOS_SUCCESS;
}
if(0>LocSaveConfigTxt(IPV6LAN_TMP_CFG_FILE, &(pLAN->dhcp6s_conf)))
{
return ICOS_FAILURE;
}
SysCopyFile(IPV6LAN_TMP_CFG_FILE, IPV6LAN_ETC_CFG_FILE);
return ICOS_SUCCESS;
}
讓 cgi-bin/ipv6lan.cgi?act=default
這個動作觸發的 ipv6lan.c
的 _default()
變成
static json_object * _default() {
int res = ICOS_GetSetting(MODULE_IPV6LAN, OPFLAG_GET_DEFAULT, 0, &Ipv6lan, sizeof(Ipv6lan));
if (res != ICOS_SUCCESS) {
jweb.http.status(500);
jweb.out.json.fail("ICOS_GetSetting fail");
}
res = ICOS_SetSetting(MODULE_IPV6LAN, 0, 0, &Ipv6lan, sizeof(Ipv6lan));
if (res != ICOS_SUCCESS) {
jweb.http.status(500);
jweb.out.json.fail("ICOS_Apply fail");
}
jweb.out.json.ok();
}
這樣 ICOS_SetSetting(MODULE_IPV6LAN, 0, 0, &Ipv6lan, sizeof(Ipv6lan))
便只是修改 config file
然後使用者再透過 web trigger device reboot 的動作
1500
還是不行
看來 pppoe apply 的動作也要改掉
1600
pppoe 改成 set 後還是一樣
看來問題並不單純