// 参考深入理解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)
时间: 2024-09-07 03:00:48