test(java-oracle): NatRun records the home router's NAT as Java FILIUS runs it

ScenarioNetwork builds home routers (their first card the WAN port) and
their port forwarding (portForwarding, through GatewayFirmware.setStaticNAT).
NatRun plays six stories on nat-home's network and writes the frames, the
calls and the router's NAT table: a ping, a UDP exchange, the same socket
to a second server (whose answer never reaches the LAN: Java keeps one
entry per LAN endpoint, for the first remote only), a TCP connection out,
a forwarded one in, and pings at the WAN address and past it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 19:50:08 +00:00
co-authored by Claude Opus 5.5
parent 37f5d77477
commit 5505e8e8af
11 changed files with 2318 additions and 1 deletions
@@ -0,0 +1,141 @@
{
"frames": {
"00000000-0000-0000-0000-000000000501": [
{
"time": 735,
"source": "02:00:00:00:05:11",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "192.168.0.10",
"targetIp": "192.168.0.1"
},
{
"time": 860,
"source": "02:00:00:00:05:22",
"destination": "02:00:00:00:05:11",
"arp": 2,
"senderIp": "192.168.0.1",
"targetIp": "192.168.0.10"
},
{
"time": 866,
"source": "02:00:00:00:05:11",
"destination": "02:00:00:00:05:22",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "192.168.0.10",
"destinationIp": "42.0.0.20",
"sequence": 1
},
{
"time": 1444,
"source": "02:00:00:00:05:22",
"destination": "02:00:00:00:05:11",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "42.0.0.20",
"destinationIp": "192.168.0.10",
"sequence": 1
}
],
"00000000-0000-0000-0000-000000000502": [
{
"time": 932,
"source": "02:00:00:00:05:21",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "42.0.0.10",
"targetIp": "42.0.0.20"
},
{
"time": 1164,
"source": "02:00:00:00:05:41",
"destination": "02:00:00:00:05:21",
"arp": 2,
"senderIp": "42.0.0.20",
"targetIp": "42.0.0.10"
},
{
"time": 1165,
"source": "02:00:00:00:05:21",
"destination": "02:00:00:00:05:41",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "42.0.0.10",
"destinationIp": "42.0.0.20",
"sequence": 1
},
{
"time": 1388,
"source": "02:00:00:00:05:41",
"destination": "02:00:00:00:05:21",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "42.0.0.20",
"destinationIp": "42.0.0.10",
"sequence": 1
}
],
"00000000-0000-0000-0000-000000000504": [
{
"time": 1052,
"source": "02:00:00:00:05:21",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "42.0.0.10",
"targetIp": "42.0.0.20"
},
{
"time": 1052,
"source": "02:00:00:00:05:41",
"destination": "02:00:00:00:05:21",
"arp": 2,
"senderIp": "42.0.0.20",
"targetIp": "42.0.0.10"
},
{
"time": 1276,
"source": "02:00:00:00:05:21",
"destination": "02:00:00:00:05:41",
"icmp": 8,
"icmpCode": 0,
"sourceIp": "42.0.0.10",
"destinationIp": "42.0.0.20",
"sequence": 1
},
{
"time": 1276,
"source": "02:00:00:00:05:41",
"destination": "02:00:00:00:05:21",
"icmp": 0,
"icmpCode": 0,
"sourceIp": "42.0.0.20",
"destinationIp": "42.0.0.10",
"sequence": 1
}
],
"00000000-0000-0000-0000-000000000505": [
{
"time": 1052,
"source": "02:00:00:00:05:21",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "42.0.0.10",
"targetIp": "42.0.0.20"
}
]
},
"events": [
[
730,
"sendProbe 42.0.0.20 called"
],
[
1445,
"sendProbe 42.0.0.20 returned ICMP 0/0 from 42.0.0.20"
]
],
"nat": [
"1 42.0.0.20:1 -> 192.168.0.10:1 DynamicEntry"
]
}