如何在C中创建虚拟以太网设备?

时间:2015-03-16 08:48:50

标签: c linux

我正在用C语言编写一个需要与虚拟以太网设备连接的程序。以下是我可以在Shell中编写的一些命令示例,我想将它们合并到我的C程序中:

ip link add A type veth peer name B
ip addr add 172.17.42.1/16 dev A
ip link set A up
ip link set B netns 123

我做了一些搜索,但是我找不到执行这种操作所需的命令/库。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

您无法在便携式C11(或便携式C99)中创建任何虚拟以太网设备,因为C标准没有以太网设备的概念。

您需要一些操作系统支持,而您的问题将变为特定于操作系统。

如果您的目标是Linux操作系统,则可以使用strace(1)了解ip命令执行的system calls

但是,您可以简单地编写一些特定于应用程序的shell脚本(运行上述命令)并小心地使用system(3)popen(3)来运行它(甚至直接使用fork(2)execve(2)pipe(2)poll(2)等...阅读Advanced Linux Programming了解更多信息。害怕潜在的code injection,如果您构建命令字符串,请检查输入的任何输入数据。

ysdx评论时,请查看rtnetlink(7)