車載ネットワーク

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

lwIP PCシミュレーションでHTTPサーバを動作させた。ブラウザのアドレスバーにIPアドレスを打ち込む感じ。lwIPのサンプルページが表示される。本質的な失敗は存在しない。うまくいかない方法を発見できたと言える。
車載ネットワーク

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

lwIPに向けてpingを打ってみた。問題無く応答。pingレスポンスの直前にlwIPからARP要求発生。GARPによりPCからlwIPは見えているが、lwIPからPCが見えていないため。ARPテーブルにlwIPのIPアドレスとMACアドレスが登録されているのを確認。
車載ネットワーク

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

lwIP起動直後に送信しているパケットがある。GARPとIGMP。 IGMPはマルチキャストグループ参加。 GARPはARPの一種だが、聞かれて答えるタイプではなく能動的に宣言するタイプ。組み込み機器とかはPCのように柔軟な対応ができないことが多いため、早々にGARPでIPアドレスを宣言することが多い。
車載ネットワーク

【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のみをフィルタしてキャプチャするサンプルプログラム。 今回は使用しないが、今後フィルタすることもあるえるため、こちらの実装方法を採用。