From 66a1aec593d0ff4de4efc0dfe85c01bf17b61e80 Mon Sep 17 00:00:00 2001 From: Pat Whittingslow Date: Sat, 11 Apr 2026 11:09:51 -0300 Subject: [PATCH] Add fuzz tests, rename fuzz tests and fix panic found by fuzzing (#72) * begin adding better fuzz test * finish adding working fuzzer * implement mutateipv4 * fuzzer finds a panic in ICMP client on receive empty payload * rename fuzz tests to reflect fuzz methodology --- internal/ltesto/ltesto.go | 417 ++++++++++++++++++ internal/prand.go | 2 +- ipv4/icmpv4/client.go | 8 +- udp/conn.go | 65 ++- udp/conn_test.go | 3 +- udp/handler.go | 16 + x/xnet/stack-async.go | 40 +- x/xnet/stack-go.go | 7 +- .../01a1cd7bc3a9efe3 | 0 .../02ee3bcf7f01f6f9 | 0 .../0361497e9c28b960 | 0 .../077a08960d630c24 | 0 .../081540455bb09469 | 0 .../083707fa2abfc07f | 0 .../09553dbd2aa18004 | 0 .../0969bd6880a6ef9b | 0 .../0a5f0448eb3e9abe | 0 .../0c8437a514767543 | 0 .../0dcd828e06e3ef5f | 0 .../0ea236fdc685c79d | 0 .../0ec280cd1f1c4303 | 0 .../0f312f810f1360db | 0 .../0f679d4da0ef31d1 | 0 .../0fe1ab022b0153c5 | 0 .../11918331a63b7235 | 0 .../1213eb42115d8c03 | 0 .../123d9910e5e3632b | 0 .../13b9c72d7d8a0975 | 0 .../1434fdbdc0e519c9 | 0 .../145007e008963a21 | 0 .../15c3b0a9a2146d15 | 0 .../15dcc5908ccfec14 | 0 .../163d58aa211f0ec9 | 0 .../172b101f2d6355e1 | 0 .../17465131e7262168 | 0 .../1b4767fdfc56dd72 | 0 .../1b69470ced789248 | 0 .../1c17bb675da4127c | 0 .../20cf8cd30f86e1b8 | 0 .../2296e5db71348b3b | 0 .../2323bd9129992584 | 0 .../26d1b3327832e8ec | 0 .../26e9c5d81839dbf8 | 0 .../272c93c42f190328 | 0 .../275441286fd27802 | 0 .../2a706a1a8544ff69 | 0 .../2a9a107da4822791 | 0 .../2b73b1de5d914315 | 0 .../30656e67eb0c8d91 | 0 .../31b89e5e52e2767e | 0 .../33703f8daaf99da4 | 0 .../33c24b2f3377ca93 | 0 .../342ec9d14498c6ae | 0 .../3752be2c2339a529 | 0 .../37910ab910f16949 | 0 .../38310498ee61353b | 0 .../38350bc801c6cdc1 | 0 .../385ed2fa5fa76ed0 | 0 .../38d4dee50f2b846e | 0 .../38e5df2bcd06764f | 0 .../396abf0b737a01cf | 0 .../3a812b5130e8ea4a | 0 .../3dcfba61e48395a9 | 0 .../41945720275cf570 | 0 .../438a21f18348ddb3 | 0 .../43ca0072937b2002 | 0 .../4412b7faa38e0153 | 0 .../44e970e552fbb21b | 0 .../4550823342495417 | 0 .../4559c0a1d6085566 | 0 .../46b75392da5f7cfe | 0 .../46d1961b32d5cb9f | 0 .../478d693097378327 | 0 .../47f19a40024b8cb1 | 0 .../480056564c5f416b | 0 .../49664281f0c7d6ae | 0 .../49fa803a8051b0b2 | 0 .../4b48919d576a3a2d | 0 .../4c97d23b2c3c3baf | 0 .../4d779050267d6a33 | 0 .../50907d0be878c4a4 | 0 .../50e74d0d01f18bfb | 0 .../510fca6994c6aaea | 0 .../5157b512027871a1 | 0 .../523a71b2c3589276 | 0 .../551f1b5748ff590a | 0 .../568931e65f633c06 | 0 .../5c475e95b27afb5b | 0 .../5e62eb22ac20ee72 | 0 .../5ef46c16ddd5f36c | 0 .../62170998841481ad | 0 .../6279be4fdf184603 | 0 .../62bae9070ab5f211 | 0 .../62fa0aef0468129c | 0 .../65bcea75bb8022c8 | 0 .../66c82de98452d219 | 0 .../67ecded90b404b67 | 0 .../684047813c13eba9 | 0 .../69d095c5cacf477a | 0 .../6a5b08d57ec3bbed | 0 .../6b016f7f24be24e2 | 0 .../6c660dc66b4396d7 | 0 .../6c840e28c3cda436 | 0 .../6c9433353b45a3c5 | 0 .../6efd20290df138d5 | 0 .../706ec4d0027ffd16 | 0 .../727529b57474fca4 | 0 .../72f6b0b56269283e | 0 .../732ccf3c65cb1e1a | 0 .../7596dc7fa176af1f | 0 .../79510d17fda0d2d6 | 0 .../7bda3c48707023fa | 0 .../7c2177f0a84b8170 | 0 .../7c63a546ab0079a8 | 0 .../7d0b272cc90984ce | 0 .../7dcd1a915866ce41 | 0 .../816026a04e401c40 | 0 .../81de82b5ba6aa4de | 0 .../8321f0d4f3c80586 | 0 .../84db82c39b5afc75 | 0 .../8528fcdb411164ff | 0 .../874c9691fcd1e3aa | 0 .../8950b4a43902cb72 | 0 .../8a3aee83558ec9d5 | 0 .../8b0fbca55c58481b | 0 .../8b1fe6d72d34a646 | 0 .../90baf4c702e9f9cc | 0 .../9402e593b770c689 | 0 .../95d7d467efe7927b | 0 .../9644f35ccaee170b | 0 .../9848fa03d19bca27 | 0 .../9869ec2b2b52a60d | 0 .../99e474202bda5676 | 0 .../9a9d4ae5884526fd | 0 .../9b1be708d1df1e9e | 0 .../9b8369e98aef350d | 0 .../9bcedbf047a63f27 | 0 .../9c4a99464a69a05a | 0 .../9fb8a87b7036019f | 0 .../a09c7ae173f26c15 | 0 .../a1d507be96724f0b | 0 .../a236a65273d75d28 | 0 .../a65eb32415672da4 | 0 .../a6ba3f4a78f64558 | 0 .../a6ffa36a71eca289 | 0 .../a7575b975df3f926 | 0 .../a78f44ea84a8c68d | 0 .../a9ef77fb22dc3b80 | 0 .../af070c755a7646e2 | 0 .../b11be55787553336 | 0 .../b14ebb8a964aa260 | 0 .../b2700d447a89c7d1 | 0 .../b3be69f5cac93979 | 0 .../b5090ae6e41396ed | 0 .../b5e752dfbe0975ce | 0 .../b9011866043059c9 | 0 .../b9a300ea13345da6 | 0 .../ba5c54babbd58a18 | 0 .../baaaa1f744b9534a | 0 .../bb5910e976ca3593 | 0 .../bc9e4ecf587a3bd4 | 0 .../bd5b71d5e92e91a8 | 0 .../bd5f70ad97b16e78 | 0 .../beb5413b1bb2bf49 | 0 .../bef5b3a3e70396a7 | 0 .../bf208c4e16cbb819 | 0 .../bfb83a6669743c70 | 0 .../c1f911fe6fb852c4 | 0 .../c2e6e0c38ec2143a | 0 .../c32477fdc6227f08 | 0 .../c482bfdc65d9421d | 0 .../c931a068613f8e16 | 0 .../ca9823eb82daec9a | 0 .../cc6c777235685775 | 0 .../ce4e95e144d2ba3a | 0 .../ce835f162554eae4 | 0 .../cf473be2ecb04ed9 | 0 .../d0bfcc849b413c1f | 0 .../d2bf9d2b744c5cfe | 0 .../d4293d15fdd44f28 | 0 .../d4f1a601a429ca78 | 0 .../d69c7ec9b7be4852 | 0 .../d710120c38620112 | 0 .../d720e02374c902c3 | 0 .../db9a75ae42f34861 | 0 .../dbbc8d03fba1a531 | 0 .../dcbaaf212c3f561a | 0 .../dd5242384fbb1522 | 0 .../de78c27b764e5125 | 0 .../deced0a70ff9358e | 0 .../e0a10ce609157d09 | 0 .../e102c4903a67269b | 0 .../e1813161fc53241e | 0 .../e60c7369bbfe9111 | 0 .../e61499a0b70150e2 | 0 .../e80a4c049b27ccfe | 0 .../e9e9a5120f70a605 | 0 .../ea32d4c02d4a539f | 0 .../ead5dae0a3a1175d | 0 .../eddd53a473c23f90 | 0 .../ef229893fc778237 | 0 .../efe90093d59f6819 | 0 .../f0682c5f3c91f3e6 | 0 .../f090ec6f663961a7 | 0 .../f1177ac50df037fb | 0 .../f25cb169384e8c1e | 0 .../f3a4deacd097de54 | 0 .../f461bd24486a92be | 0 .../f5abf4771627c0e7 | 0 .../f5c23cc8b5729c94 | 0 .../f76385c8d8fcdbeb | 0 .../f8244fec867b6879 | 0 .../f84591800c501277 | 0 .../facaca1c4d5bc72c | 0 .../fc43e9028cd810d0 | 0 .../ff5d241908bbd215 | 0 .../fuzz/FuzzStackSeeded/1ec6190fe833c850 | 4 + .../fuzz/FuzzStackSeeded/22d285196933f231 | 4 + .../fuzz/FuzzStackSeeded/49001aa89de31c64 | 4 + .../fuzz/FuzzStackSeeded/712619020c8b32bf | 4 + .../fuzz/FuzzStackSeeded/c00a793bc91dac1e | 4 + .../fuzz/FuzzStackSeeded/cacdc4b2826c9060 | 4 + .../fuzz/FuzzStackSeeded/db37a1ff29a9f7a7 | 4 + .../fuzz/FuzzStackSeeded/de928dab3ccde888 | 4 + .../fuzz/FuzzStackSeeded/f9c4f8ae6e04a93c | 4 + x/xnet/xnet_fuzz_test.go | 261 ++++++++++- 226 files changed, 835 insertions(+), 20 deletions(-) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/01a1cd7bc3a9efe3 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/02ee3bcf7f01f6f9 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0361497e9c28b960 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/077a08960d630c24 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/081540455bb09469 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/083707fa2abfc07f (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/09553dbd2aa18004 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0969bd6880a6ef9b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0a5f0448eb3e9abe (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0c8437a514767543 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0dcd828e06e3ef5f (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0ea236fdc685c79d (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0ec280cd1f1c4303 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0f312f810f1360db (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0f679d4da0ef31d1 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/0fe1ab022b0153c5 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/11918331a63b7235 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/1213eb42115d8c03 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/123d9910e5e3632b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/13b9c72d7d8a0975 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/1434fdbdc0e519c9 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/145007e008963a21 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/15c3b0a9a2146d15 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/15dcc5908ccfec14 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/163d58aa211f0ec9 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/172b101f2d6355e1 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/17465131e7262168 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/1b4767fdfc56dd72 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/1b69470ced789248 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/1c17bb675da4127c (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/20cf8cd30f86e1b8 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/2296e5db71348b3b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/2323bd9129992584 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/26d1b3327832e8ec (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/26e9c5d81839dbf8 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/272c93c42f190328 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/275441286fd27802 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/2a706a1a8544ff69 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/2a9a107da4822791 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/2b73b1de5d914315 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/30656e67eb0c8d91 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/31b89e5e52e2767e (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/33703f8daaf99da4 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/33c24b2f3377ca93 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/342ec9d14498c6ae (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/3752be2c2339a529 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/37910ab910f16949 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/38310498ee61353b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/38350bc801c6cdc1 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/385ed2fa5fa76ed0 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/38d4dee50f2b846e (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/38e5df2bcd06764f (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/396abf0b737a01cf (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/3a812b5130e8ea4a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/3dcfba61e48395a9 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/41945720275cf570 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/438a21f18348ddb3 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/43ca0072937b2002 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/4412b7faa38e0153 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/44e970e552fbb21b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/4550823342495417 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/4559c0a1d6085566 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/46b75392da5f7cfe (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/46d1961b32d5cb9f (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/478d693097378327 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/47f19a40024b8cb1 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/480056564c5f416b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/49664281f0c7d6ae (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/49fa803a8051b0b2 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/4b48919d576a3a2d (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/4c97d23b2c3c3baf (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/4d779050267d6a33 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/50907d0be878c4a4 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/50e74d0d01f18bfb (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/510fca6994c6aaea (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/5157b512027871a1 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/523a71b2c3589276 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/551f1b5748ff590a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/568931e65f633c06 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/5c475e95b27afb5b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/5e62eb22ac20ee72 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/5ef46c16ddd5f36c (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/62170998841481ad (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/6279be4fdf184603 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/62bae9070ab5f211 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/62fa0aef0468129c (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/65bcea75bb8022c8 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/66c82de98452d219 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/67ecded90b404b67 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/684047813c13eba9 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/69d095c5cacf477a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/6a5b08d57ec3bbed (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/6b016f7f24be24e2 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/6c660dc66b4396d7 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/6c840e28c3cda436 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/6c9433353b45a3c5 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/6efd20290df138d5 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/706ec4d0027ffd16 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/727529b57474fca4 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/72f6b0b56269283e (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/732ccf3c65cb1e1a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/7596dc7fa176af1f (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/79510d17fda0d2d6 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/7bda3c48707023fa (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/7c2177f0a84b8170 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/7c63a546ab0079a8 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/7d0b272cc90984ce (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/7dcd1a915866ce41 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/816026a04e401c40 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/81de82b5ba6aa4de (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/8321f0d4f3c80586 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/84db82c39b5afc75 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/8528fcdb411164ff (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/874c9691fcd1e3aa (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/8950b4a43902cb72 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/8a3aee83558ec9d5 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/8b0fbca55c58481b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/8b1fe6d72d34a646 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/90baf4c702e9f9cc (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9402e593b770c689 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/95d7d467efe7927b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9644f35ccaee170b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9848fa03d19bca27 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9869ec2b2b52a60d (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/99e474202bda5676 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9a9d4ae5884526fd (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9b1be708d1df1e9e (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9b8369e98aef350d (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9bcedbf047a63f27 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9c4a99464a69a05a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/9fb8a87b7036019f (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a09c7ae173f26c15 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a1d507be96724f0b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a236a65273d75d28 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a65eb32415672da4 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a6ba3f4a78f64558 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a6ffa36a71eca289 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a7575b975df3f926 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a78f44ea84a8c68d (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/a9ef77fb22dc3b80 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/af070c755a7646e2 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/b11be55787553336 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/b14ebb8a964aa260 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/b2700d447a89c7d1 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/b3be69f5cac93979 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/b5090ae6e41396ed (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/b5e752dfbe0975ce (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/b9011866043059c9 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/b9a300ea13345da6 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/ba5c54babbd58a18 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/baaaa1f744b9534a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/bb5910e976ca3593 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/bc9e4ecf587a3bd4 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/bd5b71d5e92e91a8 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/bd5f70ad97b16e78 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/beb5413b1bb2bf49 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/bef5b3a3e70396a7 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/bf208c4e16cbb819 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/bfb83a6669743c70 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/c1f911fe6fb852c4 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/c2e6e0c38ec2143a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/c32477fdc6227f08 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/c482bfdc65d9421d (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/c931a068613f8e16 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/ca9823eb82daec9a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/cc6c777235685775 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/ce4e95e144d2ba3a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/ce835f162554eae4 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/cf473be2ecb04ed9 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/d0bfcc849b413c1f (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/d2bf9d2b744c5cfe (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/d4293d15fdd44f28 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/d4f1a601a429ca78 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/d69c7ec9b7be4852 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/d710120c38620112 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/d720e02374c902c3 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/db9a75ae42f34861 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/dbbc8d03fba1a531 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/dcbaaf212c3f561a (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/dd5242384fbb1522 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/de78c27b764e5125 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/deced0a70ff9358e (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/e0a10ce609157d09 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/e102c4903a67269b (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/e1813161fc53241e (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/e60c7369bbfe9111 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/e61499a0b70150e2 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/e80a4c049b27ccfe (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/e9e9a5120f70a605 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/ea32d4c02d4a539f (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/ead5dae0a3a1175d (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/eddd53a473c23f90 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/ef229893fc778237 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/efe90093d59f6819 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f0682c5f3c91f3e6 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f090ec6f663961a7 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f1177ac50df037fb (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f25cb169384e8c1e (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f3a4deacd097de54 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f461bd24486a92be (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f5abf4771627c0e7 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f5c23cc8b5729c94 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f76385c8d8fcdbeb (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f8244fec867b6879 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/f84591800c501277 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/facaca1c4d5bc72c (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/fc43e9028cd810d0 (100%) rename x/xnet/testdata/fuzz/{FuzzStackAsyncHTTP => FuzzStackPacketHTTP}/ff5d241908bbd215 (100%) create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/1ec6190fe833c850 create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/22d285196933f231 create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/49001aa89de31c64 create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/712619020c8b32bf create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/c00a793bc91dac1e create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/cacdc4b2826c9060 create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/db37a1ff29a9f7a7 create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/de928dab3ccde888 create mode 100644 x/xnet/testdata/fuzz/FuzzStackSeeded/f9c4f8ae6e04a93c diff --git a/internal/ltesto/ltesto.go b/internal/ltesto/ltesto.go index 6744d10..b2c9c98 100644 --- a/internal/ltesto/ltesto.go +++ b/internal/ltesto/ltesto.go @@ -5,11 +5,13 @@ import ( "math/rand" "github.com/soypat/lneto" + "github.com/soypat/lneto/arp" "github.com/soypat/lneto/ethernet" "github.com/soypat/lneto/internal" "github.com/soypat/lneto/ipv4" "github.com/soypat/lneto/ipv4/icmpv4" "github.com/soypat/lneto/tcp" + "github.com/soypat/lneto/udp" ) const ( @@ -231,3 +233,418 @@ func (gen *PacketGen) AppendIPv4ICMPEcho(dst []byte, cfg ICMPEchoConfig) []byte func sizeWord(l int) uint8 { return uint8((l + 3) / 4) } + +// PacketMut mutates existing packet bytes in-place for fuzz testing. +// All Mutate methods use bitmapMut to select which fields to mutate: +// each candidate field consumes 1 bit from LSB. Bit=1 means mutate using seed. +// Addresses and ports are never mutated. CRCs are recomputed after mutation. +// Methods return remaining seed and bitmapMut for chaining across layers. +type PacketMut struct{} + +// MutateEthernet mutates an Ethernet+IPv4+transport packet top-to-bottom. +// Dispatches to [PacketMut.MutateIPv4] for the IP layer and transport. +func (pm PacketMut) MutateEthernet(pkt []byte, seed, bitmapMut int64) int { + efrm, err := ethernet.NewFrame(pkt) + if err != nil { + return 0 + } + fields := 0 + etype := efrm.EtherTypeOrSize() + seed, bitmapMut = mutate16(seed, bitmapMut, func(v uint16) { efrm.SetEtherType(ethernet.Type(v)) }, uint16(etype)) + fields++ + var n int + switch etype { + case ethernet.TypeIPv4: + n, _, _ = pm.MutateIPv4(efrm.Payload(), seed, bitmapMut) + case ethernet.TypeARP: + n, _, _ = pm.MutateARP(efrm.Payload(), seed, bitmapMut) + } + return fields + n +} + +// MutateIPv4 mutates IPv4 header fields (IHL, ToS, TotalLength, TTL, Protocol) +// and optionally injects IP options, fixes IP CRC, then dispatches to the +// appropriate transport mutator. +func (pm PacketMut) MutateIPv4(ipBuf []byte, seed, bitmapMut int64) (fields int, seedOut, bitmapOut int64) { + ifrm, err := ipv4.NewFrame(ipBuf) + if err != nil { + return 0, seed, bitmapMut + } + v, ihl := ifrm.VersionAndIHL() + if v != 4 || ihl < 5 { + return 0, seed, bitmapMut + } + + seed, bitmapMut = mutate8(seed, bitmapMut, func(v uint8) { ifrm.SetVersionAndIHL(4, v&0xf) }, ihl) + seed, bitmapMut = mutate8(seed, bitmapMut, func(v uint8) { ifrm.SetToS(ipv4.ToS(v)) }, uint8(ifrm.ToS())) + seed, bitmapMut = mutate16(seed, bitmapMut, ifrm.SetTotalLength, ifrm.TotalLength()) + seed, bitmapMut = mutate8(seed, bitmapMut, ifrm.SetTTL, ifrm.TTL()) + seed, bitmapMut = mutate8(seed, bitmapMut, func(v uint8) { ifrm.SetProtocol(lneto.IPProto(v)) }, uint8(ifrm.Protocol())) + fields = 5 + + // IP option injection: 2 bits consumed (inject + variant selector). + if bitmapMut&1 != 0 && ifrm.HeaderLength() >= 20 && ifrm.HeaderLength() <= len(ipBuf) { + opts := ifrm.Options() + if len(opts) > 0 { + seed = mutateIPOptions(opts, seed, bitmapMut>>1) + fields++ + bitmapMut >>= 1 // extra bit for variant + } + } + bitmapMut >>= 1 + fields++ + + ifrm.SetCRC(0) + ifrm.SetCRC(ifrm.CalculateHeaderCRC()) + + tl := ifrm.TotalLength() + if int(tl) > len(ipBuf) { + tl = uint16(len(ipBuf)) + } + _, ihl = ifrm.VersionAndIHL() + hl := uint16(ihl) * 4 + if hl > tl { + return fields, seed, bitmapMut + } + transportBuf := ipBuf[hl:tl] + + var n int + switch ifrm.Protocol() { + case lneto.IPProtoTCP: + n, seed, bitmapMut = pm.MutateTCP(transportBuf, ifrm, seed, bitmapMut) + case lneto.IPProtoUDP: + n, seed, bitmapMut = pm.MutateUDP(transportBuf, ifrm, seed, bitmapMut) + case lneto.IPProtoICMP: + n, seed, bitmapMut = pm.MutateICMP(transportBuf, seed, bitmapMut) + } + return fields + n, seed, bitmapMut +} + +// mutateIPOptions writes adversarial IP option bytes into the options region. +// Strategies selected by seed bits: +// - 0: All NOPs (padding that shouldn't affect parsing but inflates IHL) +// - 1: Record Route with claimed length exceeding option space +// - 2: Garbage bytes (random option kinds with random lengths) +// - 3: Option with length=0 (infinite loop in naive parsers) +// - 4: Option with length=1 (length includes kind but not length byte itself) +// - 5: Nested contradictions: valid kind, absurd length crossing into transport +// - 6: Single option claiming entire IP packet as option data +// - 7: Fill with End-of-Options (0x00) — parser should stop immediately +func mutateIPOptions(opts []byte, seed int64, variant int64) int64 { + strategy := variant & 0x7 + switch strategy { + case 0: // All NOPs. + for i := range opts { + opts[i] = 1 // NOP + } + case 1: // Record Route (type 7) with oversize length. + if len(opts) >= 3 { + opts[0] = 7 // Record Route + opts[1] = byte(len(opts)) + 40 // length way past option space + opts[2] = 4 // pointer + for i := 3; i < len(opts); i++ { + opts[i] = byte(seed >> uint(i%8)) + } + } + case 2: // Garbage: random kind + random length pairs. + for i := 0; i < len(opts); { + opts[i] = byte(seed) + seed >>= 3 + if i+1 < len(opts) { + opts[i+1] = byte(seed) // random length field + seed >>= 4 + } + i += 2 + } + case 3: // Option with length=0 (infinite loop trap). + if len(opts) >= 2 { + opts[0] = 68 // Timestamp option kind + opts[1] = 0 // length=0: parser that loops on length will hang + for i := 2; i < len(opts); i++ { + opts[i] = 0 + } + } + case 4: // Option with length=1 (only covers kind byte). + if len(opts) >= 2 { + opts[0] = 7 // Record Route + opts[1] = 1 // length=1: doesn't even cover the length byte + for i := 2; i < len(opts); i++ { + opts[i] = 1 // NOP fill + } + } + case 5: // Valid kind, length extends into transport header. + if len(opts) >= 2 { + opts[0] = 68 // Timestamp + opts[1] = byte(len(opts) + 20) // extends 20 bytes into transport + for i := 2; i < len(opts); i++ { + opts[i] = byte(seed) + seed >>= 3 + } + } + case 6: // Single option claiming huge data. + if len(opts) >= 2 { + opts[0] = 130 // Security option kind + opts[1] = 255 // max possible length + for i := 2; i < len(opts); i++ { + opts[i] = 0xCC + } + } + case 7: // All End-of-Options. + for i := range opts { + opts[i] = 0 + } + } + return seed +} + +// MutateTCP mutates TCP fields: Seq, Ack, Flags, WindowSize, DataOffset and +// optionally injects adversarial TCP options. +// ifrm is needed for pseudo-header CRC recalculation. +func (pm PacketMut) MutateTCP(transportBuf []byte, ifrm ipv4.Frame, seed, bitmapMut int64) (fields int, seedOut, bitmapOut int64) { + tfrm, err := tcp.NewFrame(transportBuf) + if err != nil { + return 0, seed, bitmapMut + } + off, flags := tfrm.OffsetAndFlags() + + seed, bitmapMut = mutate32(seed, bitmapMut, func(v uint32) { tfrm.SetSeq(tcp.Value(v)) }, uint32(tfrm.Seq())) + seed, bitmapMut = mutate32(seed, bitmapMut, func(v uint32) { tfrm.SetAck(tcp.Value(v)) }, uint32(tfrm.Ack())) + seed, bitmapMut = mutate8(seed, bitmapMut, func(v uint8) { tfrm.SetOffsetAndFlags(off, tcp.Flags(v).Mask()) }, uint8(flags)) + seed, bitmapMut = mutate16(seed, bitmapMut, tfrm.SetWindowSize, tfrm.WindowSize()) + seed, bitmapMut = mutate8(seed, bitmapMut, func(v uint8) { tfrm.SetOffsetAndFlags(v&0xf, flags) }, off) + fields = 5 + + // TCP option injection: 2 bits consumed (inject + variant selector). + if bitmapMut&1 != 0 && tfrm.HeaderLength() >= 20 && tfrm.HeaderLength() <= len(transportBuf) { + opts := tfrm.Options() + if len(opts) > 0 { + seed = mutateTCPOptions(opts, seed, bitmapMut>>1) + fields++ + bitmapMut >>= 1 + } + } + bitmapMut >>= 1 + fields++ + + tfrm.SetCRC(0) + var crc lneto.CRC791 + ifrm.CRCWriteTCPPseudo(&crc) + tfrm.SetCRC(crc.PayloadSum16(transportBuf)) + return fields, seed, bitmapMut +} + +// mutateTCPOptions writes adversarial TCP option bytes into the options region. +// Strategies selected by seed bits: +// - 0: MSS with extreme value (1 or 65535) +// - 1: Window Scale with huge shift (>14, RFC max is 14) +// - 2: Option with length=0 (infinite loop trap) +// - 3: Option length exceeds remaining space (truncated option) +// - 4: SACK blocks with impossible ranges (garbage SACK data) +// - 5: Duplicate MSS options (which one wins?) +// - 6: Valid-looking options followed by garbage past End marker +// - 7: All NOPs (max padding, no real options) +func mutateTCPOptions(opts []byte, seed int64, variant int64) int64 { + strategy := variant & 0x7 + switch strategy { + case 0: // MSS extreme values. + if len(opts) >= 4 { + opts[0] = byte(tcp.OptMaxSegmentSize) // kind=2 + opts[1] = 4 // length=4 + if seed&1 != 0 { + opts[2], opts[3] = 0xFF, 0xFF // MSS=65535 + } else { + opts[2], opts[3] = 0x00, 0x01 // MSS=1 + } + seed = internal.Prand64(seed) + for i := 4; i < len(opts); i++ { + opts[i] = 0 // End + } + } + case 1: // Window Scale with illegal shift. + if len(opts) >= 3 { + opts[0] = byte(tcp.OptWindowScale) // kind=3 + opts[1] = 3 // length=3 + opts[2] = byte(seed&0x1F) | 0x10 // shift 16-31, RFC max=14 + seed >>= 5 + for i := 3; i < len(opts); i++ { + opts[i] = 1 // NOP + } + } + case 2: // Option with length=0. + if len(opts) >= 2 { + opts[0] = byte(tcp.OptMaxSegmentSize) + opts[1] = 0 // length=0: naive parser loops forever + for i := 2; i < len(opts); i++ { + opts[i] = 0 + } + } + case 3: // Option length exceeds remaining space. + if len(opts) >= 2 { + opts[0] = byte(tcp.OptSACK) + opts[1] = byte(len(opts) + 10) // extends past option region + for i := 2; i < len(opts); i++ { + opts[i] = byte(seed) + seed = internal.Prand64(seed) + } + } + case 4: // SACK with garbage block data. + if len(opts) >= 10 { + opts[0] = byte(tcp.OptSACK) // kind=5 + sackLen := len(opts) + if sackLen > 34 { + sackLen = 34 // max 4 SACK blocks + } + opts[1] = byte(sackLen) + for i := 2; i < sackLen; i++ { + opts[i] = byte(seed) + seed = internal.Prand64(seed) + } + for i := sackLen; i < len(opts); i++ { + opts[i] = 0 + } + } + case 5: // Duplicate MSS options (parser picks first? last? panics?). + for i := 0; i+4 <= len(opts); i += 4 { + opts[i] = byte(tcp.OptMaxSegmentSize) + opts[i+1] = 4 + mss := uint16(seed & 0xFFFF) + opts[i+2] = byte(mss >> 8) + opts[i+3] = byte(mss) + seed = internal.Prand64(seed) + } + case 6: // Valid option then garbage after End marker. + if len(opts) >= 6 { + opts[0] = byte(tcp.OptWindowScale) + opts[1] = 3 + opts[2] = 7 // valid shift + opts[3] = 0 // End-of-Options + // Garbage after End — should be ignored but tests parser bounds. + for i := 4; i < len(opts); i++ { + opts[i] = byte(seed) | 0x80 // high-bit kinds (undefined) + seed = internal.Prand64(seed) + } + } + case 7: // All NOPs — maximum padding, option parser iterates through each. + for i := range opts { + opts[i] = 1 + } + } + return seed +} + +// MutateUDP mutates the UDP Length field. +// ifrm is needed for pseudo-header CRC recalculation. +func (pm PacketMut) MutateUDP(transportBuf []byte, ifrm ipv4.Frame, seed, bitmapMut int64) (fields int, seedOut, bitmapOut int64) { + ufrm, err := udp.NewFrame(transportBuf) + if err != nil { + return 0, seed, bitmapMut + } + + seed, bitmapMut = mutate16(seed, bitmapMut, ufrm.SetLength, ufrm.Length()) + + ufrm.SetCRC(0) + var crc lneto.CRC791 + ifrm.CRCWriteUDPPseudo(&crc, ufrm.Length()) + ufrm.SetCRC(crc.PayloadSum16(transportBuf)) + return 1, seed, bitmapMut +} + +// MutateICMP mutates ICMP Type and Code fields. +func (pm PacketMut) MutateICMP(transportBuf []byte, seed, bitmapMut int64) (fields int, seedOut, bitmapOut int64) { + frm, err := icmpv4.NewFrame(transportBuf) + if err != nil { + return 0, seed, bitmapMut + } + + seed, bitmapMut = mutate8(seed, bitmapMut, func(v uint8) { frm.SetType(icmpv4.Type(v)) }, uint8(frm.Type())) + seed, bitmapMut = mutate8(seed, bitmapMut, frm.SetCode, frm.Code()) + + frm.SetCRC(0) + var crc lneto.CRC791 + frm.SetCRC(crc.PayloadSum16(transportBuf)) + return 2, seed, bitmapMut +} + +// MutateARP mutates ARP frame fields: Operation, hardware type/length, +// protocol type/length, and sender/target addresses. +func (pm PacketMut) MutateARP(arpBuf []byte, seed, bitmapMut int64) (fields int, seedOut, bitmapOut int64) { + afrm, err := arp.NewFrame(arpBuf) + if err != nil { + return 0, seed, bitmapMut + } + + // Field: Operation (Request/Reply/garbage). + seed, bitmapMut = mutate16(seed, bitmapMut, func(v uint16) { afrm.SetOperation(arp.Operation(v)) }, uint16(afrm.Operation())) + + htype, hlen := afrm.Hardware() + ptype, plen := afrm.Protocol() + + // Mutate sender/target protocol addresses BEFORE length fields, + // since length mutations shift where Sender/Target point. + _, senderProto := afrm.Sender() + if len(senderProto) > 0 && bitmapMut&1 != 0 { + for i := range senderProto { + senderProto[i] = byte(seed) + seed = internal.Prand64(seed) + } + } + bitmapMut >>= 1 + + _, targetProto := afrm.Target() + if len(targetProto) > 0 && bitmapMut&1 != 0 { + for i := range targetProto { + targetProto[i] = byte(seed) + seed = internal.Prand64(seed) + } + } + bitmapMut >>= 1 + + // Field: Hardware type (wrong htype → mismatch). + seed, bitmapMut = mutate16(seed, bitmapMut, func(v uint16) { afrm.SetHardware(v, hlen) }, htype) + // Field: Hardware length (wrong hlen shifts all subsequent field offsets). + seed, bitmapMut = mutate8(seed, bitmapMut, func(v uint8) { afrm.SetHardware(htype, v) }, hlen) + // Field: Protocol type (wrong proto → mismatch). + seed, bitmapMut = mutate16(seed, bitmapMut, func(v uint16) { afrm.SetProtocol(ethernet.Type(v), plen) }, uint16(ptype)) + // Field: Protocol length (wrong plen shifts target field offsets). + seed, bitmapMut = mutate8(seed, bitmapMut, func(v uint8) { afrm.SetProtocol(ptype, v) }, plen) + fields = 7 + + return fields, seed, bitmapMut +} + +func mutate8(seed, bitmapMut int64, set func(uint8), cur uint8) (int64, int64) { + if bitmapMut&1 != 0 { + v := uint8(seed) ^ cur + if v == cur { + v++ + } + set(v) + seed = internal.Prand64(seed) + } + return seed, bitmapMut >> 1 +} + +func mutate16(seed, bitmapMut int64, set func(uint16), cur uint16) (int64, int64) { + if bitmapMut&1 != 0 { + v := uint16(seed) ^ cur + if v == cur { + v++ + } + set(v) + seed = internal.Prand64(seed) + + } + return seed, bitmapMut >> 1 +} + +func mutate32(seed, bitmapMut int64, set func(uint32), cur uint32) (int64, int64) { + if bitmapMut&1 != 0 { + v := uint32(seed) ^ cur + if v == cur { + v++ + } + set(v) + seed = internal.Prand64(seed) + } + return seed, bitmapMut >> 1 +} diff --git a/internal/prand.go b/internal/prand.go index b07c514..3e9ae6e 100644 --- a/internal/prand.go +++ b/internal/prand.go @@ -19,7 +19,7 @@ func Prand32[T ~uint32](seed T) T { } // Prand32 generates a pseudo random number from a seed. -func Prand64[T ~uint64](seed T) T { +func Prand64[T ~uint64 | ~int64](seed T) T { seed ^= seed << 13 seed ^= seed >> 7 seed ^= seed << 17 diff --git a/ipv4/icmpv4/client.go b/ipv4/icmpv4/client.go index 7a278b2..44af269 100644 --- a/ipv4/icmpv4/client.go +++ b/ipv4/icmpv4/client.go @@ -113,6 +113,9 @@ func (client *Client) Demux(carrierData []byte, frameOffset int) error { // We received a ping request; not handled client-side. efrm := FrameEcho{Frame: ifrm} data := efrm.Data() + if len(data) == 0 { + return lneto.ErrPacketDrop + } n, werr := client.responseRing.Write(data) if werr != nil { err = werr @@ -127,6 +130,9 @@ func (client *Client) Demux(carrierData []byte, frameOffset int) error { case TypeEchoReply: efrm := FrameEcho{Frame: ifrm} data := efrm.Data() + if len(data) == 0 { + return lneto.ErrPacketDrop + } hash := client.magichash(data, len(data)) & keyHashBits idx := client.pingidx(hash) if idx < 0 || (ipEnabled && client.outgoingEcho[idx].raddr != raddr) { @@ -232,7 +238,7 @@ func (client *Client) magichash(pattern []byte, size int) (hash uint32) { } func (client *Client) PingStart(remoteAddr [4]byte, pattern []byte, size uint16) (key uint32, err error) { - if int(size) < len(pattern) { + if int(size) < len(pattern) || len(pattern) == 0 { return 0, lneto.ErrInvalidConfig } else if remoteAddr == [4]byte{} { return 0, lneto.ErrZeroDestination diff --git a/udp/conn.go b/udp/conn.go index bfc1881..7b0227f 100644 --- a/udp/conn.go +++ b/udp/conn.go @@ -1,7 +1,9 @@ package udp import ( + "errors" "net" + "net/netip" "os" "sync" "time" @@ -55,29 +57,39 @@ func (conn *Conn) Configure(cfg ConnConfig) error { func (conn *Conn) Abort() { conn.mu.Lock() defer conn.mu.Unlock() - conn.h.Abort() conn.abort() } func (conn *Conn) abort() { + conn.h.Abort() conn.rdead = time.Time{} conn.wdead = time.Time{} conn.remoteAddr = conn.remoteAddr[:0] } +var errStillOpen = errors.New("close udp conn before opening") + // Open sets the local port and remote address for the connection. -func (conn *Conn) Open(localPort, remotePort uint16, remoteAddr []byte) error { +func (conn *Conn) Open(localPort uint16, remoteAddr netip.AddrPort) error { conn.mu.Lock() defer conn.mu.Unlock() - conn.abort() - err := conn.h.SetPorts(localPort, remotePort) + if conn.h.IsOpen() { + return errStillOpen + } + err := conn.h.SetPorts(localPort, remoteAddr.Port()) if err != nil { return err } - conn.remoteAddr = append(conn.remoteAddr[:0], remoteAddr...) + conn.remoteAddr = append(conn.remoteAddr[:0], remoteAddr.Addr().AsSlice()...) return nil } +func (conn *Conn) IsOpen() bool { + conn.mu.Lock() + defer conn.mu.Unlock() + return conn.h.IsOpen() +} + // LocalPort returns the local port set by [Conn.Open]. func (conn *Conn) LocalPort() uint16 { conn.mu.Lock() @@ -229,3 +241,46 @@ func (conn *Conn) deadlineExceeded(deadline *time.Time) bool { defer conn.mu.Unlock() return !deadline.IsZero() && time.Since(*deadline) > 0 } + +// BufferedInput returns the number of unread bytes in the receive buffer. +func (conn *Conn) BufferedInput() int { + conn.mu.Lock() + defer conn.mu.Unlock() + return conn.h.BufferedInput() +} + +// BufferedUnsent returns the number of written but unsent bytes in the transmit buffer. +func (conn *Conn) BufferedOutput() int { + conn.mu.Lock() + defer conn.mu.Unlock() + return conn.h.BufferedOutput() +} + +// SizeInput returns the total size of the receive ring buffer. +func (conn *Conn) SizeInput() int { + conn.mu.Lock() + defer conn.mu.Unlock() + return conn.h.SizeInput() +} + +// SizeOutput returns the total size of the transmit ring buffer. +func (conn *Conn) SizeOutput() int { + conn.mu.Lock() + defer conn.mu.Unlock() + return conn.h.SizeOutput() +} + +// FreeOutput returns the number of free bytes in the transmit buffer. +// This tells the user how many bytes can be written with Write method before write failing. +func (conn *Conn) FreeOutput() int { + conn.mu.Lock() + defer conn.mu.Unlock() + return conn.h.FreeOutput() +} + +// FreeInput returns the number of free bytes in the receive buffer. +func (conn *Conn) FreeInput() int { + conn.mu.Lock() + defer conn.mu.Unlock() + return conn.h.FreeInput() +} diff --git a/udp/conn_test.go b/udp/conn_test.go index 2cab73c..28e26f1 100644 --- a/udp/conn_test.go +++ b/udp/conn_test.go @@ -2,6 +2,7 @@ package udp import ( "encoding/binary" + "net/netip" "testing" "github.com/soypat/lneto/internal" @@ -29,7 +30,7 @@ func newTestConn(t *testing.T) *Conn { if err != nil { t.Fatal(err) } - err = conn.Open(1234, 8080, []byte{10, 0, 0, 1}) + err = conn.Open(1234, netip.AddrPortFrom(netip.AddrFrom4([4]byte{10, 0, 0, 1}), 8080)) if err != nil { t.Fatal(err) } diff --git a/udp/handler.go b/udp/handler.go index 39a63eb..be8f50d 100644 --- a/udp/handler.go +++ b/udp/handler.go @@ -164,6 +164,11 @@ func (h *Handler) Read(b []byte) (int, error) { return n, nil } +// IsOpen returns true if the handler can send/receive data. +func (h *Handler) IsOpen() bool { + return !h.closeCalled && h.lport > 0 +} + // Close closes the connection. Calls to [Handler.Send] and [Handler.Recv] will // return [net.ErrClosed] after Close is called. func (h *Handler) Close() { @@ -212,3 +217,14 @@ func (h *Handler) SizeInput() int { func (h *Handler) SizeOutput() int { return h.txRing.Size() } + +// FreeOutput returns the number of free bytes in the transmit buffer. +// This tells the user how many bytes can be written with Write method before write failing. +func (h *Handler) FreeOutput() int { + return h.txRing.Free() +} + +// FreeInput returns the number of free bytes in the receive buffer. +func (h *Handler) FreeInput() int { + return h.rxRing.Free() +} diff --git a/x/xnet/stack-async.go b/x/xnet/stack-async.go index 92e9954..54ba82d 100644 --- a/x/xnet/stack-async.go +++ b/x/xnet/stack-async.go @@ -18,6 +18,7 @@ import ( "github.com/soypat/lneto/ipv4/icmpv4" "github.com/soypat/lneto/ntp" "github.com/soypat/lneto/tcp" + "github.com/soypat/lneto/udp" ) const ( @@ -32,7 +33,7 @@ type StackAsync struct { ip internet.StackIP arp arp.Handler icmp icmpv4.Client - udps internet.StackPorts + udps internet.StackPortsMACFiltered tcps internet.StackPortsMACFiltered dhcpUDP internet.StackUDPPort @@ -353,6 +354,35 @@ func (s *StackAsync) EnableICMP(enabled bool) (err error) { return err } +func (s *StackAsync) DialUDP(conn *udp.Conn, localPort uint16, addrp netip.AddrPort) (err error) { + s.mu.Lock() + defer s.mu.Unlock() + var mac []byte + if s.subnet.Contains(addrp.Addr()) { + mac = make([]byte, 6) + ip := addrp.Addr().As4() + hw, err := s.arp.QueryResult(ip[:]) + if err == nil { + // MAC already contained in results. + copy(mac, hw) + } else { + // StartQuery starts an ARP query for addresses in this network. + // On finishing query MAC is set and thus the StackPort will allow encapsulating + // data on that connection. + err = s.arp.StartQuery(mac, ip[:]) + if err != nil { + return err + } + } + } + err = conn.Open(localPort, addrp) + if err != nil { + return err + } + err = s.udps.Register(conn, mac) + return nil +} + func (s *StackAsync) DialTCP(conn *tcp.Conn, localPort uint16, addrp netip.AddrPort) (err error) { s.mu.Lock() defer s.mu.Unlock() @@ -423,7 +453,7 @@ func (s *StackAsync) RegisterUDP(node lneto.StackNode, remoteAddr []byte, remote } s.userUDPs = s.userUDPs[:idx+1] s.userUDPs[idx].SetStackNode(node, remoteAddr, remotePort) - return s.udps.Register(&s.userUDPs[idx]) + return s.udps.Register(&s.userUDPs[idx], nil) } var errNoDNSServer = errors.New("no DNS server- did DHCP complete? You can set a predetermined DNS server in Stack configuration") @@ -461,7 +491,7 @@ func (s *StackAsync) StartLookupIP(host string) error { } *(*[4]byte)(s.addrBuf[:4]) = s.dnssv.As4() s.dnsUDP.SetStackNode(&s.dns, s.addrBuf[:4], dns.ServerPort) - err = s.udps.Register(&s.dnsUDP) + err = s.udps.Register(&s.dnsUDP, nil) return err } @@ -511,7 +541,7 @@ func (s *StackAsync) StartDHCPv4Request(request [4]byte) error { } s.dhcpUDP.SetStackNode(&s.dhcp, nil, dhcpv4.DefaultServerPort) - err = s.udps.Register(&s.dhcpUDP) + err = s.udps.Register(&s.dhcpUDP, nil) if err != nil { return err } @@ -525,7 +555,7 @@ func (s *StackAsync) StartNTP(addr netip.Addr) error { *(*[4]byte)(s.addrBuf[:4]) = addr.As4() s.ntpUDP.SetStackNode(&s.ntp, s.addrBuf[:4], ntp.ServerPort) - err := s.udps.Register(&s.ntpUDP) + err := s.udps.Register(&s.ntpUDP, nil) return err } diff --git a/x/xnet/stack-go.go b/x/xnet/stack-go.go index d1e50a7..45e62fb 100644 --- a/x/xnet/stack-go.go +++ b/x/xnet/stack-go.go @@ -99,12 +99,7 @@ func (s StackGo) SocketNetip(ctx context.Context, network string, family, sotype if err != nil { return nil, err } - raddr4 := raddr.Addr().As4() - err = conn.Open(laddr.Port(), raddr.Port(), raddr4[:]) - if err != nil { - return nil, err - } - err = s.blk.async.RegisterUDP(&conn, raddr4[:], raddr.Port()) + err = s.blk.async.DialUDP(&conn, laddr.Port(), raddr) if err != nil { return nil, err } diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/01a1cd7bc3a9efe3 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/01a1cd7bc3a9efe3 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/01a1cd7bc3a9efe3 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/01a1cd7bc3a9efe3 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/02ee3bcf7f01f6f9 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/02ee3bcf7f01f6f9 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/02ee3bcf7f01f6f9 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/02ee3bcf7f01f6f9 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0361497e9c28b960 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0361497e9c28b960 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0361497e9c28b960 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0361497e9c28b960 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/077a08960d630c24 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/077a08960d630c24 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/077a08960d630c24 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/077a08960d630c24 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/081540455bb09469 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/081540455bb09469 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/081540455bb09469 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/081540455bb09469 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/083707fa2abfc07f b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/083707fa2abfc07f similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/083707fa2abfc07f rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/083707fa2abfc07f diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/09553dbd2aa18004 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/09553dbd2aa18004 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/09553dbd2aa18004 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/09553dbd2aa18004 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0969bd6880a6ef9b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0969bd6880a6ef9b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0969bd6880a6ef9b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0969bd6880a6ef9b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0a5f0448eb3e9abe b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0a5f0448eb3e9abe similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0a5f0448eb3e9abe rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0a5f0448eb3e9abe diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0c8437a514767543 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0c8437a514767543 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0c8437a514767543 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0c8437a514767543 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0dcd828e06e3ef5f b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0dcd828e06e3ef5f similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0dcd828e06e3ef5f rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0dcd828e06e3ef5f diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0ea236fdc685c79d b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0ea236fdc685c79d similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0ea236fdc685c79d rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0ea236fdc685c79d diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0ec280cd1f1c4303 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0ec280cd1f1c4303 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0ec280cd1f1c4303 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0ec280cd1f1c4303 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0f312f810f1360db b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0f312f810f1360db similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0f312f810f1360db rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0f312f810f1360db diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0f679d4da0ef31d1 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0f679d4da0ef31d1 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0f679d4da0ef31d1 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0f679d4da0ef31d1 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0fe1ab022b0153c5 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0fe1ab022b0153c5 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/0fe1ab022b0153c5 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/0fe1ab022b0153c5 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/11918331a63b7235 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/11918331a63b7235 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/11918331a63b7235 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/11918331a63b7235 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1213eb42115d8c03 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1213eb42115d8c03 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1213eb42115d8c03 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1213eb42115d8c03 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/123d9910e5e3632b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/123d9910e5e3632b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/123d9910e5e3632b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/123d9910e5e3632b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/13b9c72d7d8a0975 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/13b9c72d7d8a0975 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/13b9c72d7d8a0975 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/13b9c72d7d8a0975 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1434fdbdc0e519c9 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1434fdbdc0e519c9 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1434fdbdc0e519c9 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1434fdbdc0e519c9 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/145007e008963a21 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/145007e008963a21 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/145007e008963a21 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/145007e008963a21 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/15c3b0a9a2146d15 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/15c3b0a9a2146d15 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/15c3b0a9a2146d15 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/15c3b0a9a2146d15 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/15dcc5908ccfec14 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/15dcc5908ccfec14 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/15dcc5908ccfec14 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/15dcc5908ccfec14 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/163d58aa211f0ec9 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/163d58aa211f0ec9 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/163d58aa211f0ec9 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/163d58aa211f0ec9 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/172b101f2d6355e1 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/172b101f2d6355e1 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/172b101f2d6355e1 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/172b101f2d6355e1 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/17465131e7262168 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/17465131e7262168 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/17465131e7262168 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/17465131e7262168 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1b4767fdfc56dd72 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1b4767fdfc56dd72 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1b4767fdfc56dd72 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1b4767fdfc56dd72 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1b69470ced789248 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1b69470ced789248 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1b69470ced789248 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1b69470ced789248 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1c17bb675da4127c b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1c17bb675da4127c similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/1c17bb675da4127c rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/1c17bb675da4127c diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/20cf8cd30f86e1b8 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/20cf8cd30f86e1b8 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/20cf8cd30f86e1b8 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/20cf8cd30f86e1b8 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2296e5db71348b3b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2296e5db71348b3b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2296e5db71348b3b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2296e5db71348b3b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2323bd9129992584 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2323bd9129992584 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2323bd9129992584 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2323bd9129992584 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/26d1b3327832e8ec b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/26d1b3327832e8ec similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/26d1b3327832e8ec rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/26d1b3327832e8ec diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/26e9c5d81839dbf8 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/26e9c5d81839dbf8 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/26e9c5d81839dbf8 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/26e9c5d81839dbf8 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/272c93c42f190328 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/272c93c42f190328 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/272c93c42f190328 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/272c93c42f190328 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/275441286fd27802 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/275441286fd27802 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/275441286fd27802 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/275441286fd27802 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2a706a1a8544ff69 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2a706a1a8544ff69 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2a706a1a8544ff69 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2a706a1a8544ff69 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2a9a107da4822791 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2a9a107da4822791 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2a9a107da4822791 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2a9a107da4822791 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2b73b1de5d914315 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2b73b1de5d914315 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/2b73b1de5d914315 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/2b73b1de5d914315 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/30656e67eb0c8d91 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/30656e67eb0c8d91 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/30656e67eb0c8d91 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/30656e67eb0c8d91 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/31b89e5e52e2767e b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/31b89e5e52e2767e similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/31b89e5e52e2767e rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/31b89e5e52e2767e diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/33703f8daaf99da4 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/33703f8daaf99da4 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/33703f8daaf99da4 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/33703f8daaf99da4 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/33c24b2f3377ca93 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/33c24b2f3377ca93 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/33c24b2f3377ca93 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/33c24b2f3377ca93 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/342ec9d14498c6ae b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/342ec9d14498c6ae similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/342ec9d14498c6ae rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/342ec9d14498c6ae diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/3752be2c2339a529 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/3752be2c2339a529 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/3752be2c2339a529 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/3752be2c2339a529 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/37910ab910f16949 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/37910ab910f16949 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/37910ab910f16949 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/37910ab910f16949 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/38310498ee61353b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/38310498ee61353b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/38310498ee61353b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/38310498ee61353b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/38350bc801c6cdc1 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/38350bc801c6cdc1 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/38350bc801c6cdc1 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/38350bc801c6cdc1 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/385ed2fa5fa76ed0 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/385ed2fa5fa76ed0 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/385ed2fa5fa76ed0 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/385ed2fa5fa76ed0 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/38d4dee50f2b846e b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/38d4dee50f2b846e similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/38d4dee50f2b846e rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/38d4dee50f2b846e diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/38e5df2bcd06764f b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/38e5df2bcd06764f similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/38e5df2bcd06764f rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/38e5df2bcd06764f diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/396abf0b737a01cf b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/396abf0b737a01cf similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/396abf0b737a01cf rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/396abf0b737a01cf diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/3a812b5130e8ea4a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/3a812b5130e8ea4a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/3a812b5130e8ea4a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/3a812b5130e8ea4a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/3dcfba61e48395a9 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/3dcfba61e48395a9 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/3dcfba61e48395a9 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/3dcfba61e48395a9 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/41945720275cf570 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/41945720275cf570 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/41945720275cf570 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/41945720275cf570 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/438a21f18348ddb3 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/438a21f18348ddb3 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/438a21f18348ddb3 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/438a21f18348ddb3 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/43ca0072937b2002 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/43ca0072937b2002 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/43ca0072937b2002 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/43ca0072937b2002 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4412b7faa38e0153 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4412b7faa38e0153 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4412b7faa38e0153 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4412b7faa38e0153 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/44e970e552fbb21b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/44e970e552fbb21b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/44e970e552fbb21b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/44e970e552fbb21b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4550823342495417 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4550823342495417 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4550823342495417 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4550823342495417 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4559c0a1d6085566 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4559c0a1d6085566 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4559c0a1d6085566 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4559c0a1d6085566 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/46b75392da5f7cfe b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/46b75392da5f7cfe similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/46b75392da5f7cfe rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/46b75392da5f7cfe diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/46d1961b32d5cb9f b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/46d1961b32d5cb9f similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/46d1961b32d5cb9f rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/46d1961b32d5cb9f diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/478d693097378327 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/478d693097378327 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/478d693097378327 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/478d693097378327 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/47f19a40024b8cb1 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/47f19a40024b8cb1 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/47f19a40024b8cb1 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/47f19a40024b8cb1 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/480056564c5f416b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/480056564c5f416b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/480056564c5f416b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/480056564c5f416b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/49664281f0c7d6ae b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/49664281f0c7d6ae similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/49664281f0c7d6ae rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/49664281f0c7d6ae diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/49fa803a8051b0b2 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/49fa803a8051b0b2 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/49fa803a8051b0b2 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/49fa803a8051b0b2 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4b48919d576a3a2d b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4b48919d576a3a2d similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4b48919d576a3a2d rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4b48919d576a3a2d diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4c97d23b2c3c3baf b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4c97d23b2c3c3baf similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4c97d23b2c3c3baf rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4c97d23b2c3c3baf diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4d779050267d6a33 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4d779050267d6a33 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/4d779050267d6a33 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/4d779050267d6a33 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/50907d0be878c4a4 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/50907d0be878c4a4 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/50907d0be878c4a4 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/50907d0be878c4a4 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/50e74d0d01f18bfb b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/50e74d0d01f18bfb similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/50e74d0d01f18bfb rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/50e74d0d01f18bfb diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/510fca6994c6aaea b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/510fca6994c6aaea similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/510fca6994c6aaea rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/510fca6994c6aaea diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/5157b512027871a1 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/5157b512027871a1 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/5157b512027871a1 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/5157b512027871a1 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/523a71b2c3589276 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/523a71b2c3589276 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/523a71b2c3589276 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/523a71b2c3589276 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/551f1b5748ff590a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/551f1b5748ff590a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/551f1b5748ff590a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/551f1b5748ff590a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/568931e65f633c06 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/568931e65f633c06 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/568931e65f633c06 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/568931e65f633c06 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/5c475e95b27afb5b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/5c475e95b27afb5b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/5c475e95b27afb5b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/5c475e95b27afb5b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/5e62eb22ac20ee72 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/5e62eb22ac20ee72 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/5e62eb22ac20ee72 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/5e62eb22ac20ee72 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/5ef46c16ddd5f36c b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/5ef46c16ddd5f36c similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/5ef46c16ddd5f36c rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/5ef46c16ddd5f36c diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/62170998841481ad b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/62170998841481ad similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/62170998841481ad rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/62170998841481ad diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6279be4fdf184603 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6279be4fdf184603 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6279be4fdf184603 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6279be4fdf184603 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/62bae9070ab5f211 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/62bae9070ab5f211 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/62bae9070ab5f211 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/62bae9070ab5f211 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/62fa0aef0468129c b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/62fa0aef0468129c similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/62fa0aef0468129c rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/62fa0aef0468129c diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/65bcea75bb8022c8 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/65bcea75bb8022c8 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/65bcea75bb8022c8 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/65bcea75bb8022c8 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/66c82de98452d219 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/66c82de98452d219 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/66c82de98452d219 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/66c82de98452d219 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/67ecded90b404b67 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/67ecded90b404b67 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/67ecded90b404b67 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/67ecded90b404b67 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/684047813c13eba9 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/684047813c13eba9 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/684047813c13eba9 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/684047813c13eba9 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/69d095c5cacf477a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/69d095c5cacf477a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/69d095c5cacf477a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/69d095c5cacf477a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6a5b08d57ec3bbed b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6a5b08d57ec3bbed similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6a5b08d57ec3bbed rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6a5b08d57ec3bbed diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6b016f7f24be24e2 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6b016f7f24be24e2 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6b016f7f24be24e2 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6b016f7f24be24e2 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6c660dc66b4396d7 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6c660dc66b4396d7 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6c660dc66b4396d7 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6c660dc66b4396d7 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6c840e28c3cda436 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6c840e28c3cda436 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6c840e28c3cda436 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6c840e28c3cda436 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6c9433353b45a3c5 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6c9433353b45a3c5 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6c9433353b45a3c5 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6c9433353b45a3c5 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6efd20290df138d5 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6efd20290df138d5 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/6efd20290df138d5 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/6efd20290df138d5 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/706ec4d0027ffd16 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/706ec4d0027ffd16 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/706ec4d0027ffd16 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/706ec4d0027ffd16 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/727529b57474fca4 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/727529b57474fca4 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/727529b57474fca4 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/727529b57474fca4 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/72f6b0b56269283e b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/72f6b0b56269283e similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/72f6b0b56269283e rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/72f6b0b56269283e diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/732ccf3c65cb1e1a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/732ccf3c65cb1e1a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/732ccf3c65cb1e1a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/732ccf3c65cb1e1a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7596dc7fa176af1f b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7596dc7fa176af1f similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7596dc7fa176af1f rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7596dc7fa176af1f diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/79510d17fda0d2d6 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/79510d17fda0d2d6 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/79510d17fda0d2d6 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/79510d17fda0d2d6 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7bda3c48707023fa b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7bda3c48707023fa similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7bda3c48707023fa rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7bda3c48707023fa diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7c2177f0a84b8170 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7c2177f0a84b8170 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7c2177f0a84b8170 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7c2177f0a84b8170 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7c63a546ab0079a8 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7c63a546ab0079a8 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7c63a546ab0079a8 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7c63a546ab0079a8 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7d0b272cc90984ce b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7d0b272cc90984ce similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7d0b272cc90984ce rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7d0b272cc90984ce diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7dcd1a915866ce41 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7dcd1a915866ce41 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/7dcd1a915866ce41 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/7dcd1a915866ce41 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/816026a04e401c40 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/816026a04e401c40 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/816026a04e401c40 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/816026a04e401c40 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/81de82b5ba6aa4de b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/81de82b5ba6aa4de similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/81de82b5ba6aa4de rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/81de82b5ba6aa4de diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8321f0d4f3c80586 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8321f0d4f3c80586 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8321f0d4f3c80586 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8321f0d4f3c80586 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/84db82c39b5afc75 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/84db82c39b5afc75 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/84db82c39b5afc75 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/84db82c39b5afc75 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8528fcdb411164ff b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8528fcdb411164ff similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8528fcdb411164ff rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8528fcdb411164ff diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/874c9691fcd1e3aa b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/874c9691fcd1e3aa similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/874c9691fcd1e3aa rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/874c9691fcd1e3aa diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8950b4a43902cb72 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8950b4a43902cb72 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8950b4a43902cb72 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8950b4a43902cb72 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8a3aee83558ec9d5 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8a3aee83558ec9d5 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8a3aee83558ec9d5 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8a3aee83558ec9d5 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8b0fbca55c58481b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8b0fbca55c58481b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8b0fbca55c58481b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8b0fbca55c58481b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8b1fe6d72d34a646 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8b1fe6d72d34a646 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/8b1fe6d72d34a646 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/8b1fe6d72d34a646 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/90baf4c702e9f9cc b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/90baf4c702e9f9cc similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/90baf4c702e9f9cc rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/90baf4c702e9f9cc diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9402e593b770c689 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9402e593b770c689 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9402e593b770c689 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9402e593b770c689 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/95d7d467efe7927b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/95d7d467efe7927b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/95d7d467efe7927b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/95d7d467efe7927b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9644f35ccaee170b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9644f35ccaee170b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9644f35ccaee170b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9644f35ccaee170b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9848fa03d19bca27 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9848fa03d19bca27 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9848fa03d19bca27 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9848fa03d19bca27 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9869ec2b2b52a60d b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9869ec2b2b52a60d similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9869ec2b2b52a60d rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9869ec2b2b52a60d diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/99e474202bda5676 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/99e474202bda5676 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/99e474202bda5676 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/99e474202bda5676 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9a9d4ae5884526fd b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9a9d4ae5884526fd similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9a9d4ae5884526fd rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9a9d4ae5884526fd diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9b1be708d1df1e9e b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9b1be708d1df1e9e similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9b1be708d1df1e9e rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9b1be708d1df1e9e diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9b8369e98aef350d b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9b8369e98aef350d similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9b8369e98aef350d rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9b8369e98aef350d diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9bcedbf047a63f27 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9bcedbf047a63f27 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9bcedbf047a63f27 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9bcedbf047a63f27 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9c4a99464a69a05a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9c4a99464a69a05a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9c4a99464a69a05a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9c4a99464a69a05a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9fb8a87b7036019f b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9fb8a87b7036019f similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/9fb8a87b7036019f rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/9fb8a87b7036019f diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a09c7ae173f26c15 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a09c7ae173f26c15 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a09c7ae173f26c15 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a09c7ae173f26c15 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a1d507be96724f0b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a1d507be96724f0b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a1d507be96724f0b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a1d507be96724f0b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a236a65273d75d28 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a236a65273d75d28 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a236a65273d75d28 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a236a65273d75d28 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a65eb32415672da4 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a65eb32415672da4 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a65eb32415672da4 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a65eb32415672da4 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a6ba3f4a78f64558 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a6ba3f4a78f64558 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a6ba3f4a78f64558 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a6ba3f4a78f64558 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a6ffa36a71eca289 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a6ffa36a71eca289 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a6ffa36a71eca289 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a6ffa36a71eca289 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a7575b975df3f926 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a7575b975df3f926 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a7575b975df3f926 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a7575b975df3f926 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a78f44ea84a8c68d b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a78f44ea84a8c68d similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a78f44ea84a8c68d rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a78f44ea84a8c68d diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a9ef77fb22dc3b80 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a9ef77fb22dc3b80 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/a9ef77fb22dc3b80 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/a9ef77fb22dc3b80 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/af070c755a7646e2 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/af070c755a7646e2 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/af070c755a7646e2 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/af070c755a7646e2 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b11be55787553336 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b11be55787553336 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b11be55787553336 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b11be55787553336 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b14ebb8a964aa260 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b14ebb8a964aa260 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b14ebb8a964aa260 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b14ebb8a964aa260 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b2700d447a89c7d1 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b2700d447a89c7d1 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b2700d447a89c7d1 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b2700d447a89c7d1 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b3be69f5cac93979 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b3be69f5cac93979 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b3be69f5cac93979 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b3be69f5cac93979 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b5090ae6e41396ed b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b5090ae6e41396ed similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b5090ae6e41396ed rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b5090ae6e41396ed diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b5e752dfbe0975ce b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b5e752dfbe0975ce similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b5e752dfbe0975ce rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b5e752dfbe0975ce diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b9011866043059c9 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b9011866043059c9 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b9011866043059c9 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b9011866043059c9 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b9a300ea13345da6 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b9a300ea13345da6 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/b9a300ea13345da6 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/b9a300ea13345da6 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ba5c54babbd58a18 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ba5c54babbd58a18 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ba5c54babbd58a18 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ba5c54babbd58a18 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/baaaa1f744b9534a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/baaaa1f744b9534a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/baaaa1f744b9534a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/baaaa1f744b9534a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bb5910e976ca3593 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bb5910e976ca3593 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bb5910e976ca3593 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bb5910e976ca3593 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bc9e4ecf587a3bd4 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bc9e4ecf587a3bd4 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bc9e4ecf587a3bd4 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bc9e4ecf587a3bd4 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bd5b71d5e92e91a8 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bd5b71d5e92e91a8 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bd5b71d5e92e91a8 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bd5b71d5e92e91a8 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bd5f70ad97b16e78 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bd5f70ad97b16e78 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bd5f70ad97b16e78 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bd5f70ad97b16e78 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/beb5413b1bb2bf49 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/beb5413b1bb2bf49 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/beb5413b1bb2bf49 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/beb5413b1bb2bf49 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bef5b3a3e70396a7 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bef5b3a3e70396a7 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bef5b3a3e70396a7 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bef5b3a3e70396a7 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bf208c4e16cbb819 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bf208c4e16cbb819 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bf208c4e16cbb819 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bf208c4e16cbb819 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bfb83a6669743c70 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bfb83a6669743c70 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/bfb83a6669743c70 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/bfb83a6669743c70 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c1f911fe6fb852c4 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c1f911fe6fb852c4 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c1f911fe6fb852c4 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c1f911fe6fb852c4 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c2e6e0c38ec2143a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c2e6e0c38ec2143a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c2e6e0c38ec2143a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c2e6e0c38ec2143a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c32477fdc6227f08 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c32477fdc6227f08 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c32477fdc6227f08 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c32477fdc6227f08 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c482bfdc65d9421d b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c482bfdc65d9421d similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c482bfdc65d9421d rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c482bfdc65d9421d diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c931a068613f8e16 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c931a068613f8e16 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/c931a068613f8e16 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/c931a068613f8e16 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ca9823eb82daec9a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ca9823eb82daec9a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ca9823eb82daec9a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ca9823eb82daec9a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/cc6c777235685775 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/cc6c777235685775 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/cc6c777235685775 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/cc6c777235685775 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ce4e95e144d2ba3a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ce4e95e144d2ba3a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ce4e95e144d2ba3a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ce4e95e144d2ba3a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ce835f162554eae4 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ce835f162554eae4 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ce835f162554eae4 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ce835f162554eae4 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/cf473be2ecb04ed9 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/cf473be2ecb04ed9 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/cf473be2ecb04ed9 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/cf473be2ecb04ed9 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d0bfcc849b413c1f b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d0bfcc849b413c1f similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d0bfcc849b413c1f rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d0bfcc849b413c1f diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d2bf9d2b744c5cfe b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d2bf9d2b744c5cfe similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d2bf9d2b744c5cfe rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d2bf9d2b744c5cfe diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d4293d15fdd44f28 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d4293d15fdd44f28 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d4293d15fdd44f28 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d4293d15fdd44f28 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d4f1a601a429ca78 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d4f1a601a429ca78 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d4f1a601a429ca78 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d4f1a601a429ca78 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d69c7ec9b7be4852 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d69c7ec9b7be4852 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d69c7ec9b7be4852 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d69c7ec9b7be4852 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d710120c38620112 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d710120c38620112 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d710120c38620112 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d710120c38620112 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d720e02374c902c3 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d720e02374c902c3 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/d720e02374c902c3 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/d720e02374c902c3 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/db9a75ae42f34861 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/db9a75ae42f34861 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/db9a75ae42f34861 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/db9a75ae42f34861 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/dbbc8d03fba1a531 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/dbbc8d03fba1a531 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/dbbc8d03fba1a531 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/dbbc8d03fba1a531 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/dcbaaf212c3f561a b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/dcbaaf212c3f561a similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/dcbaaf212c3f561a rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/dcbaaf212c3f561a diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/dd5242384fbb1522 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/dd5242384fbb1522 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/dd5242384fbb1522 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/dd5242384fbb1522 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/de78c27b764e5125 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/de78c27b764e5125 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/de78c27b764e5125 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/de78c27b764e5125 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/deced0a70ff9358e b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/deced0a70ff9358e similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/deced0a70ff9358e rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/deced0a70ff9358e diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e0a10ce609157d09 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e0a10ce609157d09 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e0a10ce609157d09 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e0a10ce609157d09 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e102c4903a67269b b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e102c4903a67269b similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e102c4903a67269b rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e102c4903a67269b diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e1813161fc53241e b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e1813161fc53241e similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e1813161fc53241e rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e1813161fc53241e diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e60c7369bbfe9111 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e60c7369bbfe9111 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e60c7369bbfe9111 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e60c7369bbfe9111 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e61499a0b70150e2 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e61499a0b70150e2 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e61499a0b70150e2 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e61499a0b70150e2 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e80a4c049b27ccfe b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e80a4c049b27ccfe similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e80a4c049b27ccfe rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e80a4c049b27ccfe diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e9e9a5120f70a605 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e9e9a5120f70a605 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/e9e9a5120f70a605 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/e9e9a5120f70a605 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ea32d4c02d4a539f b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ea32d4c02d4a539f similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ea32d4c02d4a539f rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ea32d4c02d4a539f diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ead5dae0a3a1175d b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ead5dae0a3a1175d similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ead5dae0a3a1175d rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ead5dae0a3a1175d diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/eddd53a473c23f90 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/eddd53a473c23f90 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/eddd53a473c23f90 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/eddd53a473c23f90 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ef229893fc778237 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ef229893fc778237 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ef229893fc778237 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ef229893fc778237 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/efe90093d59f6819 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/efe90093d59f6819 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/efe90093d59f6819 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/efe90093d59f6819 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f0682c5f3c91f3e6 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f0682c5f3c91f3e6 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f0682c5f3c91f3e6 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f0682c5f3c91f3e6 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f090ec6f663961a7 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f090ec6f663961a7 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f090ec6f663961a7 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f090ec6f663961a7 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f1177ac50df037fb b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f1177ac50df037fb similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f1177ac50df037fb rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f1177ac50df037fb diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f25cb169384e8c1e b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f25cb169384e8c1e similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f25cb169384e8c1e rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f25cb169384e8c1e diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f3a4deacd097de54 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f3a4deacd097de54 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f3a4deacd097de54 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f3a4deacd097de54 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f461bd24486a92be b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f461bd24486a92be similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f461bd24486a92be rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f461bd24486a92be diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f5abf4771627c0e7 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f5abf4771627c0e7 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f5abf4771627c0e7 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f5abf4771627c0e7 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f5c23cc8b5729c94 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f5c23cc8b5729c94 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f5c23cc8b5729c94 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f5c23cc8b5729c94 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f76385c8d8fcdbeb b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f76385c8d8fcdbeb similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f76385c8d8fcdbeb rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f76385c8d8fcdbeb diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f8244fec867b6879 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f8244fec867b6879 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f8244fec867b6879 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f8244fec867b6879 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f84591800c501277 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f84591800c501277 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/f84591800c501277 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/f84591800c501277 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/facaca1c4d5bc72c b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/facaca1c4d5bc72c similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/facaca1c4d5bc72c rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/facaca1c4d5bc72c diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/fc43e9028cd810d0 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/fc43e9028cd810d0 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/fc43e9028cd810d0 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/fc43e9028cd810d0 diff --git a/x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ff5d241908bbd215 b/x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ff5d241908bbd215 similarity index 100% rename from x/xnet/testdata/fuzz/FuzzStackAsyncHTTP/ff5d241908bbd215 rename to x/xnet/testdata/fuzz/FuzzStackPacketHTTP/ff5d241908bbd215 diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/1ec6190fe833c850 b/x/xnet/testdata/fuzz/FuzzStackSeeded/1ec6190fe833c850 new file mode 100644 index 0000000..2af52e5 --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/1ec6190fe833c850 @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(36) +int64(-34) +int64(-32) diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/22d285196933f231 b/x/xnet/testdata/fuzz/FuzzStackSeeded/22d285196933f231 new file mode 100644 index 0000000..b8cfe74 --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/22d285196933f231 @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(692) +int64(-66) +int64(-115) diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/49001aa89de31c64 b/x/xnet/testdata/fuzz/FuzzStackSeeded/49001aa89de31c64 new file mode 100644 index 0000000..463c57c --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/49001aa89de31c64 @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(28) +int64(2) +int64(3) diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/712619020c8b32bf b/x/xnet/testdata/fuzz/FuzzStackSeeded/712619020c8b32bf new file mode 100644 index 0000000..f3bff73 --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/712619020c8b32bf @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(-1) +int64(0) +int64(94) diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/c00a793bc91dac1e b/x/xnet/testdata/fuzz/FuzzStackSeeded/c00a793bc91dac1e new file mode 100644 index 0000000..15a734e --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/c00a793bc91dac1e @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(-36) +int64(2) +int64(3) diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/cacdc4b2826c9060 b/x/xnet/testdata/fuzz/FuzzStackSeeded/cacdc4b2826c9060 new file mode 100644 index 0000000..0db6a0b --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/cacdc4b2826c9060 @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(296) +int64(-16) +int64(-12) diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/db37a1ff29a9f7a7 b/x/xnet/testdata/fuzz/FuzzStackSeeded/db37a1ff29a9f7a7 new file mode 100644 index 0000000..49db0bf --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/db37a1ff29a9f7a7 @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(-774) +int64(-138) +int64(-206) diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/de928dab3ccde888 b/x/xnet/testdata/fuzz/FuzzStackSeeded/de928dab3ccde888 new file mode 100644 index 0000000..9cc9abe --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/de928dab3ccde888 @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(12) +int64(-1) +int64(115) diff --git a/x/xnet/testdata/fuzz/FuzzStackSeeded/f9c4f8ae6e04a93c b/x/xnet/testdata/fuzz/FuzzStackSeeded/f9c4f8ae6e04a93c new file mode 100644 index 0000000..c6ae437 --- /dev/null +++ b/x/xnet/testdata/fuzz/FuzzStackSeeded/f9c4f8ae6e04a93c @@ -0,0 +1,4 @@ +go test fuzz v1 +int64(-53) +int64(0) +int64(94) diff --git a/x/xnet/xnet_fuzz_test.go b/x/xnet/xnet_fuzz_test.go index 6ec6a33..08cb676 100644 --- a/x/xnet/xnet_fuzz_test.go +++ b/x/xnet/xnet_fuzz_test.go @@ -7,11 +7,13 @@ import ( "github.com/soypat/lneto" "github.com/soypat/lneto/ethernet" "github.com/soypat/lneto/http/httpraw" + "github.com/soypat/lneto/internal/ltesto" "github.com/soypat/lneto/ipv4" "github.com/soypat/lneto/tcp" + "github.com/soypat/lneto/udp" ) -func FuzzStackAsyncHTTP(f *testing.F) { +func FuzzStackPacketHTTP(f *testing.F) { const MTU = 1500 const seed = 1 var buf [MTU + ethernet.MaxOverheadSize]byte @@ -178,3 +180,260 @@ func fixIPTCPCRCs(pkt []byte) (fixable bool) { tfrm.SetCRC(crcValue) return true } + +func FuzzStackSeeded(f *testing.F) { + f.Add(int64(1), int64(2), int64(3)) + var pmut ltesto.PacketMut + f.Fuzz(func(t *testing.T, seed1, seed2, seedAction int64) { + if seed1 == 0 { + seed1++ + } + if seed2 == 0 { + seed2++ + } + const mtu = 1500 + const mfl = mtu + 14 // frame length includes ethernet header + var buf [mfl]byte + var s1, s2 StackAsync + v1, v2 := byte(seed1), byte(seed2) + cfg1 := StackConfig{ + Hostname: "s1", + StaticAddress: netip.AddrFrom4([4]byte{1, 0, 0, v1}), + RandSeed: seed1, + MaxActiveTCPPorts: 1, + MaxActiveUDPPorts: 1, + ICMPQueueLimit: 1 + int(v1%4), + MTU: mtu, + HardwareAddress: [6]byte{0x1, 0, 0, 0, 0, v1}, + AcceptMulticast: v1%2 == 0, + } + err := s1.Reset(cfg1) + if err != nil { + t.Fatal(err, cfg1) + } + cfg2 := StackConfig{ + Hostname: "s2", + StaticAddress: netip.AddrFrom4([4]byte{1, 0, 0, v2}), + RandSeed: seed2, + MaxActiveTCPPorts: 1, + MaxActiveUDPPorts: 1, + ICMPQueueLimit: 1 + int(v2%4), + MTU: mtu, + HardwareAddress: [6]byte{0x2, 0, 0, 0, 0, v2}, + AcceptMulticast: v2%2 == 0, + } + err = s2.Reset(cfg2) + if err != nil { + t.Fatal(err, cfg2) + } + const maxActions = 100 + const ( + actionUDP = iota + actionTCP + actionICMP + actionARP + actionNone + actionLim + ) + const ( + pingMinPayload = 8 + port1 = 8080 + port2 = 80 + bufsize = 64 + ) + var udp1, udp2 udp.Conn + var tcp1, tcp2 tcp.Conn + err = tcp1.Configure(tcp.ConnConfig{ + RxBuf: make([]byte, bufsize), + TxBuf: make([]byte, bufsize), + TxPacketQueueSize: 1 + int(s1.Prand32())%10, + }) + if err != nil { + t.Fatal(err) + } + err = tcp2.Configure(tcp.ConnConfig{ + RxBuf: make([]byte, bufsize), + TxBuf: make([]byte, bufsize), + TxPacketQueueSize: 1 + int(s2.Prand32())%10, + }) + if err != nil { + t.Fatal(err) + } + err = udp1.Configure(udp.ConnConfig{ + RxBuf: make([]byte, bufsize), + TxBuf: make([]byte, bufsize), + RxQueueSize: int(1 + s1.Prand32()%10), + TxQueueSize: int(1 + s1.Prand32()%10), + }) + if err != nil { + t.Fatal(err) + } + err = udp2.Configure(udp.ConnConfig{ + RxBuf: make([]byte, bufsize), + TxBuf: make([]byte, bufsize), + RxQueueSize: int(1 + s2.Prand32()%10), + TxQueueSize: int(1 + s2.Prand32()%10), + }) + if err != nil { + t.Fatal(err) + } + icmpEnabled := false + udpOrder := 0 + betsAreOff := false // When a packet is mutated all bets on which error can be returned are off. + for i := 0; i < maxActions; i++ { + action1 := s1.Prand32() + switch action1 % actionLim { + case actionTCP: + state1 := tcp1.State() + state2 := tcp2.State() + if state1 == 0 && state2 == 0 { + err = s1.DialTCP(&tcp1, port1, netip.AddrPortFrom(s2.Addr(), port2)) + if err != nil { + t.Fatal(i, err) + } + err = s2.ListenTCP(&tcp2, port2) + if err != nil { + t.Fatal(i, err) + } + } else if state1 == tcp.StateEstablished && state2 == tcp.StateEstablished { + // For now just close after established. + if s1.Prand32()%2 == 0 { + tcp1.Close() + } else { + tcp2.Close() + } + } + case actionUDP: + // Ensure connections open. + if !udp1.IsOpen() { + err = s1.DialUDP(&udp1, port1, netip.AddrPortFrom(s2.Addr(), port2)) + if err != nil { + t.Fatal(i, err) + } + } + if !udp2.IsOpen() { + err = s2.DialUDP(&udp2, port2, netip.AddrPortFrom(s1.Addr(), port1)) + if err != nil { + t.Fatal(i, err) + } + } + udpOrder++ + action := s1.Prand32() % 8 + switch action { + case 0: + if udp1.FreeOutput() > 0 { + udp1.Write([]byte{byte(udpOrder)}) + } + case 1: + if udp1.BufferedInput() > 0 { + udp1.Read(buf[:]) + } + case 2: + if udp2.FreeOutput() > 0 { + udp2.Write([]byte{byte(udpOrder)}) + } + case 3: + if udp2.BufferedInput() > 0 { + udp2.Read(buf[:]) + } + case 4: + udp1.Close() + case 5: + udp2.Close() + } + case actionICMP: + if !icmpEnabled { + err = s1.EnableICMP(true) + if err != nil { + t.Fatal(i, err) + } + err = s2.EnableICMP(true) + if err != nil { + t.Fatal(i, err) + } + icmpEnabled = true + } + if s1.Prand32()%2 == 0 { + s1.icmp.Reset() + _, err = s1.icmp.PingStart(s2.Addr().As4(), buf[:pingMinPayload], pingMinPayload+uint16(s1.Prand32())%pingMinPayload) + if err != nil { + t.Fatal(i, err) + } + } else { + s2.icmp.Reset() + _, err = s2.icmp.PingStart(s1.Addr().As4(), buf[:pingMinPayload], pingMinPayload+uint16(s2.Prand32())%pingMinPayload) + if err != nil { + t.Fatal(i, err) + } + } + case actionARP: + action := s1.Prand32() % 6 + switch action { + case 0: // s1 queries s2 address. + s1.StartResolveHardwareAddress6(s2.Addr()) + case 1: // s2 queries s1 address. + s2.StartResolveHardwareAddress6(s1.Addr()) + case 2: // s1 checks query result for s2. + s1.ResultResolveHardwareAddress6(s2.Addr()) + case 3: // s2 checks query result for s1. + s2.ResultResolveHardwareAddress6(s1.Addr()) + case 4: // s1 discards pending query. + s1.DiscardResolveHardwareAddress6(s2.Addr()) + case 5: // s2 discards pending query. + s2.DiscardResolveHardwareAddress6(s1.Addr()) + } + } + // Exchange data while checking stack does not enter runaway infinite frame send loop. + first, second := &s1, &s2 + if s1.Prand32()%2 == 0 { + first, second = second, first + } + // TODO(soypat): add specialized packet mutation by detecting protocol and modifying specific packet fields. + const maxConsecutivePackets = 6 + mut := s1.Prand32() + + for k := 0; k < maxConsecutivePackets; k++ { + n, err := first.EgressEthernet(buf[:]) + if err != nil { + t.Fatal(i, k, err) + } else if n > 0 { + if mut&1 == 1 { + pmut.MutateEthernet(buf[:n], int64(s1.Prand32())|int64(s1.Prand32())<<32, int64(s1.Prand32())|int64(s1.Prand32())<<32) + betsAreOff = true + } + err = second.IngressEthernet(buf[:n]) + if err != nil && !betsAreOff && err != lneto.ErrPacketDrop && err != lneto.ErrExhausted { + t.Fatal(i, k, err) + } + mut >>= 1 + } + n, err = second.EgressEthernet(buf[:]) + if err != nil { + t.Fatal(i, k, err) + } else if n > 0 { + if mut&1 == 1 { + pmut.MutateEthernet(buf[:n], int64(s1.Prand32())|int64(s1.Prand32())<<32, int64(s1.Prand32())|int64(s1.Prand32())<<32) + betsAreOff = true + } + mut >>= 1 + err = first.IngressEthernet(buf[:n]) + if err != nil && !betsAreOff && err != lneto.ErrPacketDrop && err != lneto.ErrExhausted { + t.Fatal(i, k, err) + } + } + } + n, err := first.EgressEthernet(buf[:]) + if err != nil { + t.Fatal(i, "expected no errors after maxconsecutive", err) + } else if n > 0 { + t.Fatal(i, "expected no more data after max consecutive") + } + n, err = second.EgressEthernet(buf[:]) + if err != nil { + t.Fatal(i, "expected no errors after maxconsecutive", err) + } else if n > 0 { + t.Fatal(i, "expected no more data after max consecutive") + } + } + }) +}