Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.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 是否可以修改接口索引_Linux_Linux Kernel_Network Programming_Driver_Network Interface - Fatal编程技术网

Linux 是否可以修改接口索引

Linux 是否可以修改接口索引,linux,linux-kernel,network-programming,driver,network-interface,Linux,Linux Kernel,Network Programming,Driver,Network Interface,如果内核出于某种原因决定更改接口索引,我们的用户空间代码缓存的接口索引不会得到更新,它会开始丢弃数据包,因为在用户空间中缓存的接口索引与内核中实际存在的接口索引不匹配 我使用了if_indextoname(index,interfaceName)来解决这个问题。基本上,内核知道哪些索引映射到正确的接口名 现在是我的要求:我需要测试我的代码。是否有一种方法可以模拟索引更改,以便验证代码?我有一种直觉,因为索引对于内核来说非常特殊,所以只能通过调用(if_nametoindex()/等)来访问它,但

如果内核出于某种原因决定更改接口索引,我们的用户空间代码缓存的接口索引不会得到更新,它会开始丢弃数据包,因为在用户空间中缓存的接口索引与内核中实际存在的接口索引不匹配

我使用了if_indextoname(index,interfaceName)来解决这个问题。基本上,内核知道哪些索引映射到正确的接口名


现在是我的要求:我需要测试我的代码。是否有一种方法可以模拟索引更改,以便验证代码?我有一种直觉,因为索引对于内核来说非常特殊,所以只能通过调用(if_nametoindex()/等)来访问它,但我们不能更改它。那么,如何验证我的变更集呢?

sysctl无法执行您的建议

udev负责命名接口,即使有一些命名方案,也没有什么可以更改索引

如果您可以阅读代码,请查看以下内容:


如果您可以强制netdev注销,它将在重新注册时选择一个新索引。例如,如果接口是RNDIS(通过USB),您只需断开并重新连接USB即可。为了确保索引已更改,您可以在netdev probe中添加打印…

@Bodgan您是否知道我们可以通过其他方式更改接口索引?或者是否可以修改接口索引?我想您可以制作一个包装器脚本来重命名接口,但我怀疑您是否可以更改接口的索引。手动更改接口的名称可以这样做:当接口处于关闭状态时,ip链接设置enp5s0 name eth1,当然,编写脚本来实现这一点并不困难。@Bodgan我正在考虑,如果我通过“ip链接设置关闭”来关闭接口(绑定到节点的接口)然后,一旦接口再次启动,这可以更改接口索引。我做了这个实验,但一旦我关闭了接口,我就失去了连接(我是通过SSH登录到节点的)。因为接口关闭,所以SSH会话也丢失了。现在把它带回来,我不能进去。有什么建议吗?