Skip to main content

Module eth_frame

Module eth_frame 

Source
Expand description

L2: Ethernet フレームの解析と振り分け(純粋ロジック)。

§なぜ純粋モジュールにするか

ここを誤ると

  • 短いフレームで範囲外を読む(領域外アクセス)
  • VLAN タグ付きフレームを「未対応 EtherType」として捨てる
  • 自分宛でないフレームを上位へ渡す

といった形で壊れるが、いずれも上層では「なぜか通信できない」としか見えない。 実際、L1/L2 に単体試験が無いまま L4(TCP)/L7(CSS) を追いかけて 大きく遠回りした(spec/l1_l2_usb.md 参照)。

§典拠

IEEE 802.3(Ethernet II フレーム形式)、IEEE 802.1Q(VLAN タグ)。 宛先 MAC(6) / 送信元 MAC(6) / EtherType(2) / ペイロード。 EtherType が 0x8100 なら VLAN タグが 4 バイト挿入され、 本来の EtherType は offset 16 に来る。

Enums§

Dispatch
フレームの振り分け結果。
FrameError
解析失敗の理由。

Constants§

ETHERTYPE_ARP
ETHERTYPE_IPV4
ETHERTYPE_IPV6
ETHERTYPE_VLAN
ETH_HEADER_LEN
Ethernet II ヘッダ長。
MAC_BROADCAST
ブロードキャスト MAC。
VLAN_TAG_LEN
VLAN タグ(802.1Q)の長さ。

Functions§

dispatch
フレームを振り分ける。
dst_mac
フレームの宛先 MAC を返す。長さ不足なら None
ethertype_and_payload
EtherType とペイロード開始位置を求める(VLAN タグを剥がす)。
is_for_us
このフレームを受け取るべきか(自分宛/ブロードキャスト/マルチキャスト)。