Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux中使用C的接口绑定(聚合)_C_Linux_Interface_Network Programming_Linux Kernel - Fatal编程技术网

Linux中使用C的接口绑定(聚合)

Linux中使用C的接口绑定(聚合),c,linux,interface,network-programming,linux-kernel,C,Linux,Interface,Network Programming,Linux Kernel,我们通常在linux(Ubuntu)中使用interfaces或sysfs或ifenslave来配置绑定接口,以聚合两个或更多网卡。然后,有一个netlink库,它允许我们创建和删除绑定,并从中添加和删除接口。但它目前没有提供的是动态地改变债券的其他属性 例如,我想更改MTU或键合的硬件地址,或其键合模式本身。这些信息通常位于 /sys/class/net/bondx/... 我们需要做一些事情,比如 # ifconfig bond0 down echo 6 > /sys/cla

我们通常在linux(Ubuntu)中使用interfaces或sysfs或ifenslave来配置绑定接口,以聚合两个或更多网卡。然后,有一个netlink库,它允许我们创建和删除绑定,并从中添加和删除接口。但它目前没有提供的是动态地改变债券的其他属性

例如,我想更改MTU或键合的硬件地址,或其键合模式本身。这些信息通常位于

 /sys/class/net/bondx/... 
我们需要做一些事情,比如

 # ifconfig bond0 down
 echo 6 > /sys/class/net/bond0/bonding/mode
更改其绑定模式以动态平衡alb,即无需重新启动或通过更改接口文件重新启动网络。同样,我们也可以更改随粘接模块提供的文档中给出的其他参数

但如果我要通过一个交互式C程序来更改它,我该如何与sysfs接口呢?我以前没有直接与文件系统接口的经验,除了C语言中的基本文件处理。开发人员对libsysfs是一个禁忌,我在某个地方读到libudev可能有用,但我不太确定。就像sysctl()用于/proc文件系统一样,sysfs文件系统的接口是什么


还是有其他编程方法来解决这个问题?也许ioctl?

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

在linux/ubuntu/Debian中,您只需使用$ip link[options]命令即可完成任务。 使用更改或修改绑定选项

$ip链接集开发绑定0类型绑定模式\u名称

您可以通过键入来查看所有可用于修改bond界面的选项

$ip链接集dev bond0类型绑定--帮助

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

我认为答案如下: