Ethernet

車載ネットワーク

【Ethernet】車載ネットワーク その67【lwIP+npcap⑬】

lwIP PCシミュレーション用のコードを書いた。 pcapとlwIPそれぞれの初期化処理を実施。pcapのデバイスリストとディスクリプタ関連。 lwIPのネットワークインターフェース関連。 その後にアプリ層のHTTPサーバの初期化。 最後にpcapの受信処理ループ。
車載ネットワーク

【Ethernet】車載ネットワーク その66【lwIP+npcap⑫】

HTTPサーバ機能の下にaltcp(application layered TCP connection API)が存在。 HTTPサーバの初期化コードを呼べばHTTPサーバとして動作する。httpd_initの中でlisten待ち。 accept時に受信、エラー、ポーリング、送信のコールバック設定。
車載ネットワーク

【Ethernet】車載ネットワーク その65【lwIP+npcap⑪】

npcapのキャプチャ処理APIについて説明。 pcap_next_exの方が分かり易いが、結局はpcap_loopと同等の実装になり易いため最初からpcap_loopにしておくのもあり。 pcap_loopにはコンテキスト維持用にユーザパラメータを渡すことができる。
車載ネットワーク

【Ethernet】車載ネットワーク その64【lwIP+npcap⑩】

npcapのパケットフィルタ有効化APIについて説明。 pcap_compileとpcap_setfilterはセットで使うAPI。 文字列で式を指定し、計測前にバイナリ変換する方式は割と一般的。センサ電圧を物理値(圧力とか流量とか)にリアルタイムで変換する場合など。
車載ネットワーク

【Ethernet】車載ネットワーク その63【lwIP+npcap⑨】

npcapのフィルタ文字列コンパイルAPIについて説明。 フィルタ文字列仕様はtcpdumpのフィルタ書式と一緒。 tcpdumpのフィルタ書式はかなり数が多いため、良く使用しそうなものに限定。MACアドレスフィルタ。 IPアドレスフィルタ。 IPアドレとポートをフィルタ。
車載ネットワーク

【Ethernet】車載ネットワーク その62【lwIP+npcap⑧】

npcapのデバイスのリンクタイプ取得APIについて。 pcap_datalinkはリンクタイプ取得API。 リンクタイプはbpf.hで定義されている。 引数はpcap_open_liveで取得したディスクリプタを渡すのみ。 Ethernetの場合は"DLT_EN10MB"が戻り値となる。
車載ネットワーク

【Ethernet】車載ネットワーク その61【lwIP+npcap⑦】

pcap_next_ex以外にキャプチャ用のAPIが存在。pcap_loop関数。 pcap_loopを使用したサンプルはudpdump。udpのみをフィルタしてキャプチャするサンプルプログラム。 今回は使用しないが、今後フィルタすることもあるえるため、こちらの実装方法を採用。
車載ネットワーク

【Ethernet】車載ネットワーク その60【lwIP+npcap⑥】

ネットワークシミュレーションに向けてnpcap初期化処理の話。 npcap初期化コードに必要なAPI説明。 pcap_findalldevs。 pcap_open_live。 ※ 両方とも以前説明済み。 npcap初期化コードを作成。サンプルコードのpcap_next_exをベースに抜き出してきた。
車載ネットワーク

【Ethernet】車載ネットワーク その59【lwIP+npcap⑤】

ネットワークシミュレーションに向けてlwIPの送信インターフェース実装の話。 連結リスト復習。 送信データを連結リストからリニアバッファに変換するコード作成。 エラーコードも調べて適切なエラーハンドリング実施。 エラーコード各種はerr.hで定義されてる。
車載ネットワーク

【Ethernet】車載ネットワーク その58【lwIP+npcap④】

ネットワークシミュレーションに向けてlwIPの送信、受信のインターフェースの特定をする。 lwIPの受信インターフェースは以前やった。 送信インターフェースはやってなかった。 netifのlinkoutputってメンバ変数に登録するコールバック関数が送信インターフェース。ただし、連結リストのバッファを渡す必要がある。