// 参考深入理解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)
网络子系统13_邻居子系统状态机
最新推荐文章于 2024-08-11 10:26:06 发布