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));
中间标出的就是多出来的,第一回我把原版的这个文件拷到编译目录里了,因为没仔细看所以没发现,没问题以后以为是内核选项的问题。
我晕,这到底是哪个老爷加的?太不负责了,连个注释都没有。