diff options
| author | user <user@clank> | 2026-07-17 13:29:42 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-07-17 13:29:42 +0200 |
| commit | e442252d72f1aab4c332a76983cd3924ce2b492b (patch) | |
| tree | ed360492ab9e38c4f96b6414744184ddad04d180 /tools/tunbridge.py | |
| parent | tools: netboot - interactive networked emulator (TUN + NAT + --serial-sock) (diff) | |
| download | gbos-e442252d72f1aab4c332a76983cd3924ce2b492b.tar.gz gbos-e442252d72f1aab4c332a76983cd3924ce2b492b.tar.xz gbos-e442252d72f1aab4c332a76983cd3924ce2b492b.zip | |
net: keep network packets out of the console (fixes shell garbage on netboot)
The link port is both the console-input fallback and the network. At the shell
prompt the host's multicast (mDNS/LLMNR/IGMP) was fed to the serial and KGetc
read those packet bytes as console input -> garbage in the shell, OSK unusable.
Two-part fix:
- KGetc now skips SLIP frames (0xC0-delimited) on the serial console path, so
inbound packets never surface as console input. Plain injected bytes (the
headless tunbridge command path) still pass through. New wConInSkip flag.
- netboot/tunbridge only forward IP packets destined to 10.0.0.2 (drop the
multicast noise at the bridge).
Verified: GB sits at a clean "/#" prompt while all packets (noise included) are
forwarded; being-pinged (3/3) and wget still work. On the emulator, the OSK is
SELECT=space, START=enter, A=z, B=x, d-pad=WASD/arrows.
Diffstat (limited to '')
| -rw-r--r-- | tools/tunbridge.py | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/tools/tunbridge.py b/tools/tunbridge.py index b462c1b..f5e391c 100644 --- a/tools/tunbridge.py +++ b/tools/tunbridge.py @@ -68,6 +68,8 @@ def main(): while True: pkt = os.read(tun, 2048) if not pkt: return + if len(pkt) < 20 or pkt[16:20] != b"\x0a\x00\x00\x02": + continue # only unicast to 10.0.0.2 (drop mcast noise) try: p.stdin.write(slip_encode(pkt)); p.stdin.flush() except Exception: return |
