“ip neigh flush”命令删除设置了“extern_learn”和“permanent”的条目

“ip neigh flush”命令删除设置了“extern_learn”和“permanent”的条目

如果 arp/邻居条目同时使用“extern_learn”和“permanent”进行编程,“ip neigh flush”命令会抛出“无效参数”错误,但条目会被删除。由于它们是控制平面编程条目,因此不应删除。这是一个已知问题吗?

例如,

ip neigh show|grep 1.2.3.4        
1.2.3.4 dev Vlan100 lladdr 00:00:11:22:33:44 extern_learn  PERMANENT

ip neigh flush 1.2.3.4        
Failed to send flush request: Invalid argument

ip neigh show|grep 1.2.3.4         
====> returns nothing

供您参考

uname -a    
Linux sonic 4.19.0-9-2-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux

答案1

使用的APIip与最初对条目进行编程时使用的 API 相同,现在它们被删除的方式与“控制平面”删除它们的方式相同——据它所知,它们本来可以添加ip neigh add用同样的旗帜手动穿过。

可选的“协议”字段应用于区分控制平面添加的条目。它通常出现在路由表中;例如,手动添加的路由默认为“proto boot”,BIRD 将其自己的路由标记为“proto bird”,Quagga/FRR 将其路由标记为“proto zebra”——因此可以使用它ip route flush proto boot来避免删除自动配置的路由。(看起来这对邻居表来说还不太合适。)

相关内容