Commit Graph

5 Commits

Author SHA1 Message Date
CarterPerez-dev d05a7e6172 feat(zingela): M4 RX engine - classify + dedup + Io.Queue handoff
classify.zig pure frame parser: SYN-ACK -> open, RST/ACK -> closed,
ICMP type-3 {1,2,3,9,10,13} -> filtered, every verdict gated on a
wrapping SipHash cookie re-check (ack == seq+1 for replies, inner seq
== cookie for ICMP) so spoofed/stale frames are dropped state-free;
byte-offset readInt parsing, fully length-guarded. dedup.zig power-of-2
open-addressed (ip,port) set, single-owned allocator, grows at load
factor with a bounded probe (never wedges). rx.zig receive engine
generic over an injected Source + Sink (proven over hand-built frames),
Io.Queue found-host handoff across producer/consumer fibers, and a
privileged AF_PACKET Receiver (poll-bounded drain with a hard deadline,
ignore-outgoing, EINTR-retry, errno-gated, fail-closed on missing
CAP_NET_RAW). scan subcommand shares one per-run cookie across the TX
template + RX validation; consumer uses a dedicated allocator to keep
the producer/consumer fibers race-free. netutil.zig factors the shared
arg-parse/iface-resolve helpers out of txcmd. Proven end-to-end with a
live SYN scan inside a unshare -r -n netns over a veth pair
(open/closed against a real listener, dedup verified). Green Debug +
ReleaseSafe, leak-free, 61 unit tests.
2026-06-30 09:37:59 -04:00
CarterPerez-dev 8783227711 feat(zingela): M3 AF_PACKET TX_RING backend + token-bucket rate limiter
PACKET_TX_RING (PACKET_MMAP, TPACKET_V2) over AF_PACKET with
PACKET_QDISC_BYPASS: socket + version + TX_RING setsockopt + mmap'd ring,
errno-gated, fail-closed on missing CAP_NET_RAW. ratelimit.zig integer
token bucket (banked-nanoseconds, no float, saturating, exact KATs).
template.zig SYN frame template: stamp dst IP/port + SipHash seq, recompute
IP + TCP checksums (reuses the M1 RFC 1071 + cookie code, both self-verify).
afpacket.zig pure Ring slot bookkeeping (inline tpacket2_hdr, comptime size
assert, reserve/fill/atomic-status, self-defending bounds, kernel-drain
reuse) split from the privileged Backend so the hot-path accounting is
unit-tested over an in-process buffer. tx.zig transmit engine generic over
an injected Sink + Clock: the M2 cyclic-group bijection is proven to survive
stamp -> ratelimit -> submit end-to-end via a fake sink + fake clock.
Privileged tx subcommand for on-hardware benchmarking (setcap + tcpdump/perf).
Green Debug + ReleaseSafe, leak-free, 45/45 tests.
2026-06-29 17:22:20 -04:00
CarterPerez-dev c9d0cf5e36 feat(zingela): M2 address engine - cyclic-group permutation + exclude floor
Stateless O(1) zmap-style multiplicative cyclic group: runtime smallest-
prime-above-N (deterministic Miller-Rabin), fresh CSPRNG primitive root
validated against the factors of p-1, two-ops-per-target iteration with
near-zero re-roll.

numtheory.zig: modExp/mulMod (u128 intermediate), isPrime, smallestPrimeAbove,
distinctPrimeFactors, primitive-root finder, all with known-answer tests.
targets.zig: CIDR parse, RFC 6890 reserved exclude floor by range subtraction
(reserved space never enters the index space), cumulative-prefix IpPicker,
mixed-radix IP:port decode, contiguous pizza-slice sharding with a fail-closed
shard-count guard. Full bijection property tests (single shard + 4-shard union,
no gaps/overlap/reserved), green Debug + ReleaseSafe, leak-free.
2026-06-29 05:45:09 -04:00
CarterPerez-dev e6e6703aba feat(zingela): M1 packet-layer correctness KATs + SipHash SYN-cookie
SIMD @Vector internet checksum proven byte-equivalent to scalar across
every length 0..256 plus the 0xb861 IPv4 KAT. RFC 1624 incremental
update proven against the RFC section 4 worked example
(0xDD2F/0x5555/0x3285 -> 0x0000) plus 4096 random full-recompute trials.
Reusable TCP pseudo-header checksum helper; smoke.zig now reuses it.

New cookie.zig: stateless SipHash64(2,4) SYN-cookie over the 4-tuple,
full-128-bit randomSecure key, u64 generate with write-site u32
truncation, ack == cookie +% 1 wrapping validation. Reproduces the
published SipHash reference vector plus a pinned golden cookie KAT.

All green Debug + ReleaseSafe (14/14). Version bumped to 0.0.0-m1.
2026-06-26 18:12:20 -04:00
CarterPerez-dev 79e155ae94 feat(zingela): M0 scaffold + AF_PACKET ground-truth smoke
Zig 0.16 module graph (build.zig DAG with per-module addTest, run/smoke
steps), Juicy Main entry, truecolor tty-gated banner, --version/--help.
Wire-exact extern eth/ip/tcp headers with comptime @sizeOf asserts and
an RFC 1071 checksum proven by the canonical 0xb861 IPv4 KAT. AF_PACKET
raw socket that hand-builds and sends one SYN, checking errno not fd<0.
4/4 tests green under Debug and ReleaseSafe.
2026-06-26 15:16:50 -04:00