閱讀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_鄰居子係統垃圾回收