freeswan找不到eth設備的問題終于有了解決,我想哭。第一次心得寫的時候以為是內核配置時候選錯了什么,這兩天從新編譯內核不下20回,可還是老樣。沒辦法,還得啃源碼??戳税胩靻栴}集中在freeswan/pluto/server.c中的find_raw_ifaces4函數。在這個函數中加了N個輸出語句,也沒個結果。我絕望之余又翻出原版freeswan 1.97比對發現我用的uclinux里帶的freeswan里的這個函數竟然多出來幾句。
/* ignore unconfigured interfaces */
if (rs->sin_addr.s_addr == 0)
continue;
/********************************************************************/
{
int i = 0;
int found = FALSE;
for (i = 0; i < NUM_INTERFACES; i++) {
if (((phys_interfaces[i] && !strcmp(phys_interfaces[i], ri.name))) ||
!strncmp("ipsec", ri.name, 5))
found = TRUE;
}
if (!found)
continue;
}
/**********************************************************************/
happy(initaddr((const void *)&rs->sin_addr, sizeof(struct in_addr)
, AF_INET, &ri.addr));
中間標出的就是多出來的,第一回我把原版的這個文件拷到編譯目錄里了,因為沒仔細看所以沒發現,沒問題以后以為是內核選項的問題。
我暈,這到底是哪個老爺加的?太不負責了,連個注釋都沒有。