0

我们通常使用linux(Ubuntu)中的interfaces或sysfs或ifenslave来配置bonding接口,用于聚合两个或多个网卡。然后,有一个 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?

4

2 回答 2

1

如果您可以从 shell 写入/sys/class/net/bond0/bonding/mode使用echo,您也可以使用write()从程序写入。

于 2013-08-02T11:17:38.437 回答
1

在 linux/ubuntu/Debian 中,您可以简单地使用$ip link [options]命令来完成您的任务。通过使用更改或修改绑定选项

$ip link set dev bond0 type 绑定模式 mode_name

您可以通过键入查看所有可用于修改绑定接口的选项

$ip link set dev bond0 type bond --help

在这里,您将找到所有可能的粘合选项,可用于进一步修改。

于 2018-06-17T10:55:27.390 回答