test(java-oracle): DhcpRun records DHCP as Java FILIUS runs it

Builds a core scenario's network in Java FILIUS, starts it as the action
mode does and writes every frame each card saw (the Lauscher) and the
addresses at the end. References for the four DHCP scenarios: one
DISCOVER/REQUEST per attempt, an ARP check that waits one RTT, DECLINE on a
conflict, link-local 169.254.1.x after the fifth failure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-30 10:33:58 +00:00
co-authored by Claude Opus 5.5
parent 396dbacfc5
commit fd445e8889
7 changed files with 1725 additions and 1 deletions
@@ -0,0 +1,489 @@
{
"frames": {
"00000000-0000-0000-0000-000000000101": [
{
"time": 459,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 464,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "192.168.0.10",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 67,
"destinationPort": 68,
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
},
{
"time": 688,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "0.0.0.0",
"targetIp": "192.168.0.100"
},
{
"time": 801,
"source": "02:00:00:00:01:13",
"destination": "ff:ff:ff:ff:ff:ff",
"arp": 2,
"senderIp": "192.168.0.100",
"targetIp": "255.255.255.255"
},
{
"time": 912,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
},
{
"time": 968,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 3663,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 6413,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 9164,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 11914,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 11915,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "192.168.0.10",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 67,
"destinationPort": 68,
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
},
{
"time": 12138,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
},
{
"time": 12194,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 14889,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "0.0.0.0",
"targetIp": "169.254.1.191"
},
{
"time": 17640,
"source": "02:00:00:00:01:12",
"destination": "ff:ff:ff:ff:ff:ff",
"arp": 2,
"senderIp": "169.254.1.191",
"targetIp": "255.255.255.255"
}
],
"00000000-0000-0000-0000-000000000102": [
{
"time": 338,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 576,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "192.168.0.10",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 67,
"destinationPort": 68,
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
},
{
"time": 577,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "0.0.0.0",
"targetIp": "192.168.0.100"
},
{
"time": 801,
"source": "02:00:00:00:01:13",
"destination": "ff:ff:ff:ff:ff:ff",
"arp": 2,
"senderIp": "192.168.0.100",
"targetIp": "255.255.255.255"
},
{
"time": 801,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
},
{
"time": 857,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 3552,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 6302,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 9052,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 11802,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 12026,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "192.168.0.10",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 67,
"destinationPort": 68,
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
},
{
"time": 12027,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
},
{
"time": 12082,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 14778,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "0.0.0.0",
"targetIp": "169.254.1.191"
},
{
"time": 17528,
"source": "02:00:00:00:01:12",
"destination": "ff:ff:ff:ff:ff:ff",
"arp": 2,
"senderIp": "169.254.1.191",
"targetIp": "255.255.255.255"
}
],
"00000000-0000-0000-0000-000000000103": [
{
"time": 459,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 576,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "192.168.0.10",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 67,
"destinationPort": 68,
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
},
{
"time": 688,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "0.0.0.0",
"targetIp": "192.168.0.100"
},
{
"time": 690,
"source": "02:00:00:00:01:13",
"destination": "ff:ff:ff:ff:ff:ff",
"arp": 2,
"senderIp": "192.168.0.100",
"targetIp": "255.255.255.255"
},
{
"time": 912,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
},
{
"time": 968,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 3663,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 6413,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 9164,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 11914,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 12026,
"source": "02:00:00:00:01:11",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "192.168.0.10",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 67,
"destinationPort": 68,
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
},
{
"time": 12138,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
},
{
"time": 12194,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"sourceIp": "0.0.0.0",
"destinationIp": "255.255.255.255",
"protocol": 17,
"sourcePort": 68,
"destinationPort": 67,
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
},
{
"time": 14889,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
"senderIp": "0.0.0.0",
"targetIp": "169.254.1.191"
},
{
"time": 17640,
"source": "02:00:00:00:01:12",
"destination": "ff:ff:ff:ff:ff:ff",
"arp": 2,
"senderIp": "169.254.1.191",
"targetIp": "255.255.255.255"
}
]
},
"devices": {
"00000000-0000-0000-0000-000000000101": [
"192.168.0.10",
"255.255.255.0",
"",
""
],
"00000000-0000-0000-0000-000000000102": [
"169.254.1.191",
"255.255.0.0",
"",
""
],
"00000000-0000-0000-0000-000000000103": [
"192.168.0.100",
"255.255.255.0",
"",
""
]
}
}