静的インライン構造体の隣接のスタック* __ neigh_lookup(構造体net_device構造体neigh_table * TBL、CONSTボイド* PKEY、* DEV、レコード生成int型)は{構造体の隣接* N = neigh_lookup(TBL 、PKEY、DEV);(Nの場合|
|
!クリート)リターンのn;
//関心を追加するには、ネイバーテーブルに追加されるのn = neigh_create(TBL、PKEY、DEV); IS_ERR(n)はNULL :? Nを返す;} int型neigh_update(構造体隣人*いななき、CONST U8 * lladdr、U8新しい、U32フラグ){U8古い; INT ERR; #ifdefのCONFIG_ARPDint = 0を通知する。#endifstructのnet_device * DEV; INT update_isrouter = 0; write_lock_bh(& neigh->ロック); DEV = neigh-> DEV; nud_state; ERR = -EPERM; = neigh->古いNEIGH_UPDATE_F_ADMIN)&&
(旧&(NUD_NOARP |((フラグ&#038であれば!
NUD_PERMANENT)))後藤アウト; //)((新&! NUD_VALIDた場合、それがアクティブ状態に変更された場合){//タイマーneigh_del_timer(いななき)を削除; //以前の状態がNUD_CONNECTEDある場合//は隣人を調整しますエントリアウト関数ポインタに対応する場合(古い& NUD_CONNECTED)neigh_suspect(いななき); neigh-> nud_state =新規; 0 =誤る; NUD_VALID; #endifgotoアウト; CONFIG_ARPDnotify =古い&アンプ#ifdefの} /*と新しいlladdrを比較* /(!; addr_len DEV->)場合は、1つのキャッシュ{/*最初のケース:.デバイスが全くアドレス* /lladdr = neigh->を必要としない; HA;}もしそうでなければ(lladdr){/*第二の場合:何かがある場合old-それらが異なる場合は、* /((旧&アンペア場合オーバーライドフラグをチェックし;;)NUD_VALID&&
memcmp(lladdr、neigh-新しい&#038を比較 - :すでに新しいアドレスが提案さをcachedand! > HA、DEV-> addr_len))lladdr = neigh-> HA;}他{/*なしアドレスが供給されない;我々は何かを知っていれば、それを使用し、そうでなければ要求を破棄* /ERR = -EINVAL;.場合((旧&アンプ;! NUD_VALID))後藤うち、lladdr = neigh-> HA、リセットが確認され、それが接続状態に変換される場合} //時間である場合(新しい&A融点; NUD_CONNECTED)neigh->は=のjiffy単位を確認し; //リセット更新neigh->更新=のjiffy単位; /*エントリが有効だったとアドレスが新しいものが古い場合は、エントリの状態を変更しない、変更されていない場合。 * /ERR = 0; update_isrouter =フラグ& NEIGH_UPDATE_F_OVERRIDE_ISROUTER; //対応する隣接L2アドレスの隣人を更新する場合(古い& NUD_VALID){IF(lladdr = neigh->! HA&&!(フラグ&アンプ。 NEIGH_UPDATE_F_OVERRIDE)){update_isrouter = 0; NEIGH_UPDATE_F_WEAK_OVERRIDE)&&(旧&((フラグ&アンプならNUD_CONNECTED)){lladdr = neigh-> HA、新しい= NUD_STALE;}アウトelsegoto;}そうでなければ{(lladdr場合== neigh->ヘクタール&&新しい== NUD_STALE&&((フラグ& NEIGH_UPDATE_F_WEAK_OVERRIDE)|
|
(オールド& NUD_CONNECTED)))=新しい古い;}}もし(古い=新しい){neigh_del_timer(いななき);!場合(新しい& NUD_IN_TIMER){neigh_hold)(いななき; neigh-> timer.expiresの=のjiffy単位+
((新& NUD_REACHABLE)
neigh-> parms-> reachable_time:?0); add_timer(&#038; neigh->タイマー);} neigh-> nud_state =新規;} //設定HA項目(lladdr = neigh->! HA){のmemcpy(&#038; neigh-> HA、lladdr、DEV-> addr_len);場合//HH更新項目neigh_update_hhs(いななき)。場合(!(新&#038; NUD_CONNECTED))neigh->は=のjiffy単位を確認 - (neigh-> parms-> base_reachable_time<< 1); CONFIG_ARPDnotify = 1 IFDEF#; #endifの}(新==旧場合)後藤うち、接続状態が転送されている場合は、//、connect_outpifする新しい&#038(アウト設定されている。NUD_CONNECTED)neigh_connect(いななき);)elseneigh_suspect(いななき; //ネイバーエントリがarp_queueに入れて、非アクティブから有効、外出先であれば対応する送信//SKBzh-CN"],null,[0.9693771],zh-CN"]]]
のインストールUbuntuは最も人気のあるLinuxオペレーティングシステムで、7.10のリリース以降、Ubuntuはさらに完璧になりました。 UbuntuシステムにGoogle Earthをイン
ファイルシステムに関しては、Linux&reg;はオペレーティングシステムの「Swiss Army Knife」と見なすことができます。 Linuxは、ジャーナル化されたファイルシステムからクラスタ化
マウサー 1、発光ダイオードとは 発光ダイオードは、日常の電化製品に広く普及しているもので、直径3mm、5mm、2倍、5倍の長方形の光、赤、緑、黄色などを放射します。の通常のダイオードと同様に、L
フルネームは In-Application Programming、中国語は Programming in the programとして解釈されます。 IAPは、マイクロコントローラの外部インタフェー