当前位置: 首页 > news >正文

Linux:Network: ARP被动删除的一个情况

今天看到Linux内核里arp代码相关的一个函数,让人想起来很久之前掉进去的一个坑。
说产品的实现里,会存放一个dummy的neighbor(arp记录)在系统里,然后根据这个dummy的记录做一些特殊的处理。
但是当时根本就不知道这个记录的存在,也就无从谈起说要在做设计时考虑它的存在。
然后当时做的是非常普通的操作,只是将一个网卡上的最后的IP地址给删掉,然后就导致这个dummy的记录也被删掉了。
虽然这个dummy-neighbor的属性设置为了permanent。

当时没有看内核代码,现在重新看一下这个删除IP怎么就触发了neighbor的删除的过程。
在arp的代码里有这么一条路,意思是说,当net-device有变动的时候,要通知我,我会做一些处理,其中就包含IP地址发生变化是的处理。
arp_init->register_netdevice_notifier->arp_netdev_notifier->arp_netdev_event(NETDEV_CHANGEADDR)->neigh_changeaddr->neigh_flush_dev->neigh_cleanup_and_release(n);

这样,这个问题的前因后果就捋顺了。

这个功能后续还单门为网卡状态的down做过修改,其中的一个情况是:如果是permanent的记录不会被删;但是对IP的变化处理依然是没有变化,不知道是出于什么样的考虑。可能遵照的原则是,不要改变其他不必要的行为,以免引起不适应的情况。
$ git show 859bd2ef1fc11
commit 859bd2ef1fc1110a8031b967ee656c53a6260a76
Author: David Ah

http://www.lryc.cn/news/241878.html

相关文章:

  • 『接口测试干货』| Newman+Postman接口自动化测试完整过程
  • 根据商品链接获取拼多多商品详情数据接口|拼多多商品详情价格数据接口|拼多多API接口
  • KaiwuDB 监控组件及辅助 SQL 调优介绍
  • 双11再创新高!家电行业如何通过矩阵管理,赋能品牌增长?
  • 苏东坡最经典的诗词
  • iterator遍历赋值
  • 【从删库到跑路】MySQL数据库 — E-R图 | 关系模型
  • 网工内推 | 美的、得力集团,包吃包住,IE认证优先,14薪
  • java springboot在测试类中构建虚拟MVC环境并发送请求
  • python运算符重载之字符串显示和右侧加法
  • 卷积神经网络(AlexNet)鸟类识别
  • hive 报错return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路
  • Java Web——XML
  • 【.NET Core】Task应用详解
  • convertRect:toView 方法注意事项
  • Java实现王者荣耀小游戏
  • 【黑马甄选离线数仓day04_维度域开发】
  • C# 中using关键字的使用
  • 16 redis高可用读写分离方案
  • Nginx模块开发之http handler实现流量统计(2)
  • 案例012:Java+SSM+uniapp基于微信小程序的科创微应用平台设计与实现
  • vue3+elementPlus登录向后端服务器发起数据请求Ajax
  • 存储区域
  • C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)
  • Redis-Redis高可用集群之水平扩展
  • 2023全球数字贸易创新大赛-人工智能元宇宙-4-10
  • go defer用法_类似与python_java_finially
  • Log4j2.xml不生效:WARN StatusLogger Multiple logging implementations found:
  • 【LeetCode】挑战100天 Day14(热题+面试经典150题)
  • VMware安装windows操作系统