我正在运行Ubuntu服务器14.04.3。
我安装了smcroute - 版本0.95,Build 130523.当我尝试启动守护进程时,我收到错误消息:ERRO: addVIF, out of VIF space;
,这在尝试添加我的机器的第33个网络接口后发生。
在mroute.h
文件夹中查看/usr/include/linux/
,我看到MAXVIFS
定义为32
,所以我将它升级为100
并保存文件。
重新启动后,我仍然可以看到强加的32限制,但该文件仍然声明100
。如何强制操作系统读取此文件?
首先,你需要理解为什么这个数字是32.而这来自下面定义MAXVIFS
的行:
typedef unsigned long vifbitmap_t; /* User mode code depends on this lot */
在32位机器上(这是古老的废话开始的地方),这将是一个32位的寄存器。当你想要一个比寄存器更大的位图时,事情会变得混乱。 (另请参阅:FD_SET()
宏)64在64位机器上是安全的。
要增加接口数量,您需要更改用户空间定义(您更改的文件)和内核中的定义(内核源代码中的include/linux/mroute.h
)。然后,重建您的内核以及与多播混淆的每个用户空间应用程序。
**更改该定义会改变ioctl数据结构。 **
您需要使用修改后的配置重建(并重新安装)内核。有特定于Ubuntu的指令here
我迟到了,但只是因为你有很多接口你不必重新编译你的内核。尝试使用newer version of SMCRoute。您可以使用-N
启动它,并在smcroute.conf
中指定您打算使用phyint
指令路由的接口。有关更多帮助,请参见手册页。