Если ядро решает изменить индекс интерфейса по какой-либо причине, наш индекс кэшированного кода кода пользовательского пространства не обновляется, и он начинает отбрасывать пакет, потому что это несовпадение между индексом интерфейса, кэшированным в пользовательском пространстве и что действительно присутствует в ядре.Можно ли изменить индекс интерфейса
Я использовал if_indextoname (index, interfaceName), чтобы решить эту проблему. В основном ядро знает, какой индекс отображает правильное имя интерфейса.
Теперь приходит мое требование: Мне нужно проверить мой код. Есть ли способ, с помощью которого можно смоделировать изменение индекса, чтобы я мог проверить свой код? У меня возникает ощущение, что поскольку индекс - это то, что очень важно для ядра, к нему можно обращаться только вызовами (if_nametoindex()/etc.), Но мы не можем его изменить. Итак, как я могу проверить свой набор изменений?
@Bodgan Знаете ли вы о других способах изменения индекса интерфейса – vikas
или вообще можно изменить индекс интерфейса? – vikas
Я предполагаю, что вы можете сделать скрипт-оболочку для переименования интерфейсов, но я сомневаюсь, что вы можете изменить индекс интерфейсов. Вручную изменить имя интерфейса можно следующим образом: ** ip link set enp5s0 name eth1 **, в то время как интерфейс находится в выключенном состоянии, и, конечно, нетрудно сделать скрипт для этого. – Bogdan