Statics§
- REASSEMBLERS 🔒
- ソケットごとの順序外再構成バッファ(
spec/tcp_receive.md)。TCP_SOCKETSと添字を共有する。 - RECV_
POLLS tcp_recv_realがイーサネット受信をポーリングした回数(診断用)。- SEG_
ACCEPTED - 【2026-07-29診断】受信セグメントの受理/棄却カウンタ。
- SEG_
DROPPED
Functions§
- build_
tcp_ 🔒ack_ packet - 指定ソケットへの ACK パケットを 組み立てるだけ で、送信はしない。
- build_
tcp_ 🔒ipv4 - parse_
tcp_ 🔒ipv4_ packet - tcp_
alloc_ 🔒socket - tcp_
close_ real - 【2026-08-05 検証済み・入れていない】ロック無しの「読むべきものがある」印。
- tcp_
connect_ real - tcp_
connect_ 🔒real_ measured - tcp_
current_ snd_ seq - 現在の
snd_nxt(次に使われる送信シーケンス番号)を取得する。再送時に 「このデータを送った時点でのシーケンス番号」を正しく再利用するため、 呼び出し側がtcp_send_realの直前に取得しておく用途。 - tcp_
find_ 🔒socket - tcp_
find_ 🔒socket_ by_ local - tcp_
is_ socket_ closed - tcp_
recv_ peek_ nonempty - tcp_
recv_ real - tcp_
retransmit_ real - 【2026-07-24追加】
tcp_send_realが呼ばれる度に無条件でsnd_nxtを進めて しまうため、同一データを“再送“する目的でtcp_send_realを再度呼ぶと、 実際には既に進んだ(誤った)シーケンス番号で送信してしまい、相手側の TCP/TLSストリームを破壊するバグを発見した(kernel/tls.rsのTcpIoWrapper書き込み再送機構で使用)。この関数はsnd_nxtを一切 変更せず、呼び出し元が明示的に指定したseqのみで再送パケットを 組み立てて送出する(正しいTCP再送のセマンティクス)。 - tcp_
send_ real - tcp_
socket_ lines - tcp_
state_ 🔒name - wait_
for_ first_ byte - 受信バッファに何か(1バイトでも)届いているかを、消費せずに確認する。 送信直後にごく短時間だけ様子を見て「応答が全く来ていない=パケット ロストの疑い」を判定するための軽量ヘルパー(2026-07-24)。 応答の最初の 1 バイトが届くまで待つ(上限つき)。
- wait_
for_ 🔒first_ byte_ inner