阅读642 返回首页    go 阿里云 go 技术社区[云栖]


网络子系统13_邻居子系统状态机

//	参考深入理解linux网络技术内幕
//	头文件net/neighbour.h

//一个solicitation请求已发出,但是还没有收到应答,在这个状态下,不适用任何硬件地址
#define NUD_INCOMPLETE	0x01

//该邻居是可到达的
#define NUD_REACHABLE	0x02

//缓存中包含此邻居项,但是该地址已有一段时间没有被确认了,上一次确认时间由
//neighbour->confirmed成员指出,当下一次有封包要到达这个邻居时,要启动可到达性确认,
//在该状态下,会使用旧的硬件地址
#define NUD_STALE	0x04

//当发送一个封包到一个邻居,且该邻居相关的缓存处于NUD_STALE时,就进入这个状态,
//NUD_DELAY表示一个时间窗口,如果在这个窗口内,没有收到该邻居的确认,就进入NUD_PROBE状态
#define NUD_DELAY	0x08

////当邻居处于NUD_DELAY并且没有收到可到达性确认时,状态转变为NUD_PROBE,同时开始solicitation处理
#define NUD_PROBE	0x10

//由于solicitation请求失败,将邻居标记为不可达
#define NUD_FAILED	0x20

//标记不要任何协议进行l3到l2的地址映射
#define NUD_NOARP	0x40

//邻居项l2地址静态配置
#define NUD_PERMANENT	0x80

//邻居项刚被创建,还没有状态可用
#define NUD_NONE	0x00

//表示当前状态有定时器在运行
#define NUD_IN_TIMER	(NUD_INCOMPLETE|NUD_REACHABLE|NUD_DELAY|NUD_PROBE)

//表示相信该邻居有一个硬件地址
#define NUD_VALID	(NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE|NUD_PROBE|NUD_STALE|NUD_DELAY)

//表示没有未决的处理要确认
#define NUD_CONNECTED	(NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE)

最后更新:2017-04-03 15:21:56

  上一篇:go [历年IT笔试题]2014阿里巴巴面试题(北京站)
  下一篇:go 网络子系统12_邻居子系统垃圾回收