【发布时间】:2013-08-02 09:19:08
【问题描述】:
我们通常使用linux(Ubuntu)中的interfaces或sysfs或ifenslave来配置bonding接口,用于聚合两个或多个NIC卡。然后,有一个 netlink 库,它允许我们创建和删除绑定以及从中添加和删除接口。但它目前不提供的是动态改变债券的其他属性。
例如,我想更改绑定的 MTU 或硬件地址,或者绑定模式本身。此信息通常位于
/sys/class/net/bondx/...
在bonding_masters中,我们需要做一些类似的事情
# ifconfig bond0 down
echo 6 > /sys/class/net/bond0/bonding/mode
将其绑定模式动态更改为 balance-alb,即无需重新启动或通过更改接口文件重新启动网络。同样,我们可以更改绑定模块随附的文档中给出的其他参数
但是,如果我要通过交互式 C 程序更改它,我如何与 sysfs 交互?除了 C 语言中的基本文件处理之外,我没有直接与文件系统交互的经验。开发人员对 libsysfs 是不可以的,我在某处读到 libudev 可能有用但我不太确定。那么像 sysctl() 是针对 /proc 文件系统的,那么 sysfs 文件系统的接口是什么?
或者还有其他编程方法可以解决这个问题吗?也许是 ioctl?
【问题讨论】:
-
我想答案就在这里:Write to Linux sysfs node in C
标签: c linux interface network-programming linux-kernel