mirror of
https://git.k-space.ee/arti/vt1200.git
synced 2026-10-30 12:03:54 +02:00
NETWORK_REPORT: provenance from 386BSD history, corroborating the ICMP case set
The local NetBSD tree reaches back to 1992 with the 386BSD-0.1 import
(a319363d6037). Its sys/netinet/if_ether.c:350 carries the exact ROM string
'arp: ether address is broadcast for IP address', which the modern tree no
longer uses ('link address'), placing the firmware in that lineage.
The 386BSD ip_icmp.c switch contains exactly the case labels that section 46
derived from the ROM's dsj + compare chain (REDIRECT, ECHO, TSTAMP,
TSTAMPREPLY, IREQ, IREQREPLY, MASKREQ, MASKREPLY), confirming that reading
from source rather than inference.
This commit is contained in:
1 parent
874d1fbbf5
commit
b534bab7d7
1 file changed
+64
@@ -3511,3 +3511,67 @@ all three implementations agree on.
|
||||
identical to the baseline (`0x7B3 / ok=1 / 0x0300 / 0x1C / 0x8300`), as it must
|
||||
be, because the model masks the nibble. On the machine it is the first payload
|
||||
whose descriptors match what the firmware, Linux and NetBSD all write.
|
||||
|
||||
## 51. Provenance: the stack descends from 386BSD — and it corroborates section 46
|
||||
|
||||
The local NetBSD tree (`/home/arti/code/NetBSD-src`) carries history back to
|
||||
**1992-07-13**, including a `4.4BSD-Lite2` commit and, on 1993-03-21, the
|
||||
**initial import of 386BSD-0.1 sources**. That is the right vintage for this
|
||||
terminal, and it turns out to be usable as a reference implementation.
|
||||
|
||||
### 51.1 An exact string match
|
||||
|
||||
The ROM contains `arp: ether address is broadcast for IP address …`
|
||||
(section 26.1). In the 386BSD import:
|
||||
|
||||
```
|
||||
a319363d6037:sys/netinet/if_ether.c:350:
|
||||
"arp: ether address is broadcast for IP address %x!\n",
|
||||
```
|
||||
|
||||
Modern NetBSD (`sys/netinet/if_arp.c:929`) says *"link address"* instead, so the
|
||||
VT1200 matches the **older** wording — the same 386BSD/4.3–4.4 lineage. Other
|
||||
messages in the same ROM (`arpresolve: no free entry`) belong to that file too.
|
||||
|
||||
### 51.2 The ICMP case set is the 386BSD one
|
||||
|
||||
Section 46 concluded from the `dsj` + compare chain that the constants
|
||||
5, 8, 13, 14, 15, 16, 17, 18 are ICMP types. The 386BSD `ip_icmp.c` switch
|
||||
(`a319363d6037:sys/netinet/ip_icmp.c`) contains exactly these case labels:
|
||||
|
||||
```
|
||||
case ICMP_REDIRECT: /* 5 */
|
||||
case ICMP_ECHO: /* 8 */
|
||||
case ICMP_TSTAMP: /* 13 */
|
||||
case ICMP_TSTAMPREPLY: /* 14 */
|
||||
case ICMP_IREQ: /* 15 */
|
||||
case ICMP_IREQREPLY: /* 16 */
|
||||
case ICMP_MASKREQ: /* 17 */
|
||||
case ICMP_MASKREPLY: /* 18 */
|
||||
```
|
||||
|
||||
(plus the error types `UNREACH`(3), `SOURCEQUENCH`(4), `TIMXCEED`(11),
|
||||
`PARAMPROB`(12) and `ECHOREPLY`(0), which our chain does not test). That is
|
||||
independent confirmation of the section 46 reading from the reference source,
|
||||
not from the ROM alone.
|
||||
|
||||
### 51.3 LANCE driver history in the same tree
|
||||
|
||||
| path | first added |
|
||||
|---|---|
|
||||
| `sys/arch/i386/isa/if_le.c` | 1994-07-01 |
|
||||
| `sys/dev/isa/if_le.c` | 1994-07-01 |
|
||||
| `sys/dev/ic/am7990.c` | 1995-06-28 |
|
||||
| `sys/dev/ic/lance.c` | 1998-07-21 |
|
||||
|
||||
The 1994 ISA driver is the closest in date to the firmware, and `am7990.c` (1995)
|
||||
is the source of the descriptor-length rule that section 50 identifies as our
|
||||
payload's bug.
|
||||
|
||||
Note on method: this tree is ~7 GB, so repo-wide `git log -S`/`--all` scans take
|
||||
minutes. Path-limited queries are immediate and were used instead:
|
||||
|
||||
```sh
|
||||
git log --diff-filter=A --format='%ad %h' --date=short -- sys/dev/isa/if_le.c
|
||||
git show <commit>:sys/netinet/ip_icmp.c
|
||||
```
|
||||
Reference in new issue
Block a user