stackforge 0.1.1__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {stackforge-0.1.1 → stackforge-0.3.0}/.github/workflows/test.yml +2 -2
- {stackforge-0.1.1 → stackforge-0.3.0}/.gitignore +8 -1
- stackforge-0.3.0/CLAUDE.md +77 -0
- stackforge-0.3.0/Cargo.lock +1294 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/Cargo.toml +23 -4
- stackforge-0.3.0/PKG-INFO +208 -0
- stackforge-0.3.0/README.md +183 -0
- stackforge-0.3.0/cliff.toml +94 -0
- stackforge-0.3.0/cog.toml +13 -0
- stackforge-0.3.0/crates/stackforge-automata/Cargo.toml +14 -0
- stackforge-0.3.0/crates/stackforge-automata/src/lib.rs +34 -0
- stackforge-0.3.0/crates/stackforge-core/Cargo.toml +40 -0
- stackforge-0.3.0/crates/stackforge-core/src/error.rs +147 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/arp.rs +1154 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/bindings.rs +317 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/bitmap.rs +169 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/builder.rs +379 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/edns.rs +450 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/header.rs +439 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/mod.rs +445 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/query.rs +234 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/rdata.rs +2250 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/rr.rs +625 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/svcb.rs +272 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dns/types.rs +897 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/builder.rs +794 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/control.rs +412 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/data.rs +355 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/ie.rs +1544 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/management.rs +984 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/mod.rs +947 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/radiotap.rs +688 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/security.rs +728 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/types.rs +1106 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/beacon.rs +507 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/builder.rs +707 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/command.rs +524 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/crc.rs +106 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/mod.rs +1436 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/security.rs +396 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/types.rs +307 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ethernet.rs +663 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/field.rs +1544 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/field_ext.rs +530 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/generic/builder.rs +273 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/generic/mod.rs +510 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http/builder.rs +369 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http/detection.rs +80 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http/mod.rs +665 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http/request.rs +161 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http/response.rs +177 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http2/builder.rs +666 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http2/frames.rs +713 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http2/hpack.rs +1251 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/http2/mod.rs +542 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/builder.rs +544 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/checksum.rs +107 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/error.rs +87 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/extensions.rs +371 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/mod.rs +1348 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/types.rs +113 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/icmpv6/builder.rs +475 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/icmpv6/mod.rs +754 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/builder.rs +727 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/checksum.rs +388 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/fragmentation.rs +740 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/header.rs +1007 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/mod.rs +24 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/options.rs +1024 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/protocol.rs +656 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/routing.rs +444 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/ttl.rs +65 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv6/builder.rs +295 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv6/ext_headers.rs +299 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ipv6/mod.rs +571 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/l2tp/builder.rs +388 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/l2tp/mod.rs +644 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/mod.rs +1485 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/neighbor.rs +521 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/quic/builder.rs +375 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/quic/frames.rs +649 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/quic/headers.rs +310 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/quic/mod.rs +819 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/quic/varint.rs +203 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/raw.rs +520 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ssh/builder.rs +81 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/ssh/mod.rs +379 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/stack.rs +900 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/builder.rs +861 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/checksum.rs +386 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/flags.rs +588 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/header.rs +758 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/mod.rs +49 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/options.rs +1056 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/services.rs +794 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/builder.rs +255 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/cert.rs +193 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/cipher_aead.rs +366 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/cipher_block.rs +310 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/cipher_stream.rs +103 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/compression.rs +51 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/groups.rs +147 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/hash.rs +160 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/hkdf_tls13.rs +297 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/hmac_tls.rs +225 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/mod.rs +31 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/prf.rs +235 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/suites.rs +536 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/common.rs +152 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/key_share.rs +111 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/mod.rs +159 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/signature_algorithms.rs +47 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/sni.rs +78 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/supported_versions.rs +65 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/certificate.rs +286 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/client_hello.rs +272 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/finished.rs +39 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/key_exchange.rs +208 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/mod.rs +206 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/server_hello.rs +210 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/keyexchange/ecdhe.rs +323 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/keyexchange/mod.rs +44 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/mod.rs +149 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/record.rs +403 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/session.rs +297 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/sslv2/handshake.rs +366 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/sslv2/mod.rs +25 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/sslv2/record.rs +120 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/tls/types.rs +532 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/udp/builder.rs +501 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/udp/checksum.rs +236 -0
- stackforge-0.3.0/crates/stackforge-core/src/layer/udp/mod.rs +402 -0
- stackforge-0.3.0/crates/stackforge-core/src/lib.rs +329 -0
- stackforge-0.3.0/crates/stackforge-core/src/packet.rs +949 -0
- stackforge-0.3.0/crates/stackforge-core/src/pcap/mod.rs +42 -0
- stackforge-0.3.0/crates/stackforge-core/src/pcap/reader.rs +172 -0
- stackforge-0.3.0/crates/stackforge-core/src/pcap/writer.rs +207 -0
- stackforge-0.3.0/crates/stackforge-core/src/utils/bits.rs +61 -0
- stackforge-0.3.0/crates/stackforge-core/src/utils/checksum.rs +131 -0
- stackforge-0.3.0/crates/stackforge-core/src/utils/compare.rs +63 -0
- stackforge-0.3.0/crates/stackforge-core/src/utils/hex.rs +143 -0
- stackforge-0.3.0/crates/stackforge-core/src/utils/mod.rs +31 -0
- stackforge-0.3.0/crates/stackforge-core/src/utils/padding.rs +56 -0
- stackforge-0.3.0/crates/stackforge-core/src/utils/random.rs +22 -0
- stackforge-0.3.0/pyproject.toml +55 -0
- stackforge-0.3.0/python/stackforge/__init__.py +81 -0
- stackforge-0.3.0/python/stackforge/custom.py +252 -0
- stackforge-0.3.0/rustfmt.toml +22 -0
- stackforge-0.3.0/src/lib.rs +3180 -0
- stackforge-0.3.0/tests/integration/arp.rs +349 -0
- stackforge-0.3.0/tests/integration/compat_tests/arp_compat.rs +214 -0
- stackforge-0.3.0/tests/integration/compat_tests/ethernet_compat.rs +183 -0
- stackforge-0.3.0/tests/integration/compat_tests/icmp_compat.rs +60 -0
- stackforge-0.3.0/tests/integration/compat_tests/ipv4_compat.rs +82 -0
- stackforge-0.3.0/tests/integration/compat_tests/mod.rs +253 -0
- stackforge-0.3.0/tests/integration/compat_tests/ssh_compat.rs +40 -0
- stackforge-0.3.0/tests/integration/compat_tests/tcp_compat.rs +70 -0
- stackforge-0.3.0/tests/integration/compat_tests/tls_compat.rs +103 -0
- stackforge-0.3.0/tests/integration/compat_tests/udp_compat.rs +31 -0
- stackforge-0.3.0/tests/integration/dns.rs +978 -0
- stackforge-0.3.0/tests/integration/dot11.rs +1300 -0
- stackforge-0.3.0/tests/integration/dot15d4.rs +1333 -0
- stackforge-0.3.0/tests/integration/ethernet.rs +182 -0
- stackforge-0.3.0/tests/integration/field.rs +46 -0
- stackforge-0.3.0/tests/integration/http.rs +620 -0
- stackforge-0.3.0/tests/integration/http2.rs +1330 -0
- stackforge-0.3.0/tests/integration/icmpv6.rs +480 -0
- stackforge-0.3.0/tests/integration/ipv6.rs +595 -0
- stackforge-0.3.0/tests/integration/layer.rs +69 -0
- stackforge-0.3.0/tests/integration/main.rs +22 -0
- stackforge-0.3.0/tests/integration/packet.rs +325 -0
- stackforge-0.3.0/tests/integration/quic.rs +544 -0
- stackforge-0.3.0/tests/integration/ssh.rs +184 -0
- stackforge-0.3.0/tests/integration/tls.rs +863 -0
- stackforge-0.3.0/tests/integration/util.rs +30 -0
- stackforge-0.3.0/tests/python/scapy_compat/__init__.py +1 -0
- stackforge-0.3.0/tests/python/scapy_compat/conftest.py +166 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_arp_compat.py +209 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_checksums_compat.py +221 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_edge_cases_compat.py +201 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_ethernet_compat.py +157 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_icmp_compat.py +192 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_ipv4_compat.py +282 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_pcap_compat.py +325 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_stacking_compat.py +385 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_tcp_compat.py +322 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_udp_compat.py +114 -0
- stackforge-0.3.0/tests/python/scapy_compat/test_uts_integration.py +83 -0
- stackforge-0.3.0/tests/python/test_core.py +415 -0
- stackforge-0.3.0/tests/python/test_custom.py +370 -0
- stackforge-0.3.0/tests/python/test_dns.py +603 -0
- stackforge-0.3.0/tests/python/test_dot11.py +469 -0
- stackforge-0.3.0/tests/python/test_dot15d4.py +562 -0
- stackforge-0.3.0/tests/python/test_http.py +391 -0
- stackforge-0.3.0/tests/python/test_icmpv6.py +299 -0
- stackforge-0.3.0/tests/python/test_ipv6.py +362 -0
- stackforge-0.3.0/tests/python/test_l2tp.py +395 -0
- stackforge-0.3.0/tests/python/test_pcap.py +186 -0
- stackforge-0.3.0/tests/python/test_quic.py +473 -0
- stackforge-0.3.0/tests/python/test_ssh.py +89 -0
- stackforge-0.3.0/tests/python/test_tls.py +343 -0
- stackforge-0.3.0/tests/python/test_udp_icmp.py +1222 -0
- stackforge-0.3.0/tests/python/test_uts_http.py +430 -0
- stackforge-0.3.0/tests/python/test_uts_http2.py +578 -0
- stackforge-0.3.0/tests/python/test_uts_ipv6.py +436 -0
- stackforge-0.3.0/tests/python/test_uts_l2tp.py +370 -0
- stackforge-0.3.0/tests/python/test_uts_quic.py +481 -0
- stackforge-0.3.0/tests/sample_pcap/http2_h2c.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/http_chunk.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/http_compressed-brotli.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/http_compressed-zstd.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/http_compressed.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/http_content_length.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/http_head.pcapng +0 -0
- stackforge-0.3.0/tests/sample_pcap/http_tcp_psh.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/ssh_ed25519.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/tcprelay/PCAP.md +46 -0
- stackforge-0.3.0/tests/sample_pcap/tcprelay/smallFlows.pcap +0 -0
- stackforge-0.3.0/tests/sample_pcap/tcprelay/test.pcap +0 -0
- stackforge-0.3.0/tests/scripts/compare_packets.py +106 -0
- stackforge-0.3.0/tests/scripts/generate_scapy_fixtures.py +95 -0
- stackforge-0.3.0/tests/uts/dns.uts +522 -0
- stackforge-0.3.0/tests/uts/dns_dnssec.uts +146 -0
- stackforge-0.3.0/tests/uts/dns_edns0.uts +214 -0
- stackforge-0.3.0/tests/uts/dot11.uts +808 -0
- stackforge-0.3.0/tests/uts/dot15d4.uts +876 -0
- stackforge-0.3.0/tests/uts/fields.uts +2347 -0
- stackforge-0.3.0/tests/uts/http.uts +415 -0
- stackforge-0.3.0/tests/uts/http2.uts +2414 -0
- stackforge-0.3.0/tests/uts/inet.uts +923 -0
- stackforge-0.3.0/tests/uts/inet6 copy.uts +2999 -0
- stackforge-0.3.0/tests/uts/inet6.uts +2999 -0
- stackforge-0.3.0/tests/uts/l2.uts +279 -0
- stackforge-0.3.0/tests/uts/l2tp.uts +16 -0
- stackforge-0.3.0/tests/uts/quic.uts +117 -0
- stackforge-0.3.0/tests/uts/ssh.uts +37 -0
- stackforge-0.3.0/tests/uts/tls/__init__.py +8 -0
- stackforge-0.3.0/tests/uts/tls/cert.uts +1107 -0
- stackforge-0.3.0/tests/uts/tls/example_client.py +101 -0
- stackforge-0.3.0/tests/uts/tls/example_server.py +68 -0
- stackforge-0.3.0/tests/uts/tls/pki/README.md +9 -0
- stackforge-0.3.0/tests/uts/tls/pki/ca_cert.pem +21 -0
- stackforge-0.3.0/tests/uts/tls/pki/ca_key.pem +28 -0
- stackforge-0.3.0/tests/uts/tls/pki/cli_cert.pem +22 -0
- stackforge-0.3.0/tests/uts/tls/pki/cli_key.pem +28 -0
- stackforge-0.3.0/tests/uts/tls/pki/srv_cert.pem +22 -0
- stackforge-0.3.0/tests/uts/tls/pki/srv_cert_ed25519.pem +17 -0
- stackforge-0.3.0/tests/uts/tls/pki/srv_key.pem +28 -0
- stackforge-0.3.0/tests/uts/tls/pki/srv_key_ed25519.pem +3 -0
- stackforge-0.3.0/tests/uts/tls/sslv2.uts +286 -0
- stackforge-0.3.0/tests/uts/tls/tls.uts +1695 -0
- stackforge-0.3.0/tests/uts/tls/tls13.uts +1309 -0
- stackforge-0.3.0/tests/uts/tls/tlsclientserver.uts +570 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/uv.lock +34 -1
- stackforge-0.1.1/Cargo.lock +0 -180
- stackforge-0.1.1/PKG-INFO +0 -6
- stackforge-0.1.1/README.md +0 -37
- stackforge-0.1.1/pyproject.toml +0 -21
- stackforge-0.1.1/python/stackforge/__init__.py +0 -0
- stackforge-0.1.1/src/lib.rs +0 -6
- stackforge-0.1.1/tests/python/test_core.py +0 -5
- {stackforge-0.1.1 → stackforge-0.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/.github/workflows/release.yml +0 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/.pre-commit-config.yaml +0 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/.python-version +0 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/CODE_OF_CONDUCT.md +0 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/CONTRIBUTING.md +0 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/LICENSE +0 -0
- {stackforge-0.1.1 → stackforge-0.3.0}/rust-toolchain.toml +0 -0
|
@@ -36,10 +36,10 @@ jobs:
|
|
|
36
36
|
uv sync --frozen --no-install-project
|
|
37
37
|
|
|
38
38
|
- name: Build and Install
|
|
39
|
-
run:
|
|
39
|
+
run: uv run maturin develop
|
|
40
40
|
|
|
41
41
|
- name: Test Rust
|
|
42
|
-
run: cargo test
|
|
42
|
+
run: uv run cargo test
|
|
43
43
|
|
|
44
44
|
- name: Test Python
|
|
45
45
|
run: uv run pytest tests/python
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
Stackforge is a high-performance networking stack and automata framework written in Rust with Python bindings via PyO3/maturin. It provides Scapy-like packet manipulation with native Rust performance.
|
|
8
|
+
|
|
9
|
+
## Build & Development Commands
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install dependencies and set up virtual environment
|
|
13
|
+
uv sync
|
|
14
|
+
|
|
15
|
+
# Build Rust extension and install in editable mode (required after Rust changes)
|
|
16
|
+
uv run maturin develop
|
|
17
|
+
|
|
18
|
+
# Run all Rust tests
|
|
19
|
+
cargo test
|
|
20
|
+
|
|
21
|
+
# Run a specific Rust test
|
|
22
|
+
cargo test test_name
|
|
23
|
+
|
|
24
|
+
# Run Python tests
|
|
25
|
+
uv run pytest tests/python
|
|
26
|
+
|
|
27
|
+
# Lint and format
|
|
28
|
+
cargo fmt
|
|
29
|
+
cargo clippy
|
|
30
|
+
uv run ruff check .
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Architecture
|
|
34
|
+
|
|
35
|
+
### Crate Structure
|
|
36
|
+
|
|
37
|
+
- **`stackforge` (root)** - PyO3 bindings that expose Rust functionality to Python. Compiles to a `cdylib`.
|
|
38
|
+
- **`stackforge-core`** - Core networking primitives implementing the "Lazy Zero-Copy View" architecture.
|
|
39
|
+
- **`stackforge-automata`** - Async state machine framework for network automation (placeholder, planned for future).
|
|
40
|
+
|
|
41
|
+
### Lazy Zero-Copy View Architecture
|
|
42
|
+
|
|
43
|
+
The core design pattern in `stackforge-core`:
|
|
44
|
+
|
|
45
|
+
1. **Zero-Copy Buffers**: Packets stored as `bytes::Bytes` (reference-counted, clone-on-write)
|
|
46
|
+
2. **Index-Only Parsing**: `Packet::parse()` only identifies layer boundaries (start/end offsets), not field values
|
|
47
|
+
3. **On-Demand Field Access**: Fields read directly from buffer when accessed (e.g., `eth.ethertype(buf)`)
|
|
48
|
+
4. **Copy-on-Write Mutation**: `Packet::with_data_mut()` clones buffer only when shared
|
|
49
|
+
|
|
50
|
+
### Key Types
|
|
51
|
+
|
|
52
|
+
- `Packet` (`packet.rs`) - Main packet container with `Bytes` buffer and `SmallVec<LayerIndex>`
|
|
53
|
+
- `LayerKind` - Enum identifying protocol types (Ethernet, ARP, IPv4, TCP, etc.)
|
|
54
|
+
- `LayerIndex` - Lightweight struct storing `kind`, `start`, `end` offsets
|
|
55
|
+
- `Layer` trait - Interface for protocol layers with `summary()`, `header_len()`, `hashret()`, `answers()`
|
|
56
|
+
- Protocol layers (`EthernetLayer`, `ArpLayer`, `Ipv4Layer`, `TcpLayer`) - Views into packet buffer
|
|
57
|
+
|
|
58
|
+
### Layer Module Organization
|
|
59
|
+
|
|
60
|
+
`crates/stackforge-core/src/layer/`:
|
|
61
|
+
- `mod.rs` - `LayerKind`, `LayerIndex`, `Layer` trait, `LayerEnum` dispatch
|
|
62
|
+
- `field.rs` - Field abstraction with `MacAddress`, `BytesField`, `FieldValue`
|
|
63
|
+
- `bindings.rs` - Protocol relationships (e.g., Ethernet type 0x0806 → ARP)
|
|
64
|
+
- `ethernet.rs`, `arp.rs`, `ipv4/`, `tcp/` - Protocol-specific implementations
|
|
65
|
+
- `neighbor.rs` - ARP/NDP cache implementations
|
|
66
|
+
|
|
67
|
+
### Python Bindings
|
|
68
|
+
|
|
69
|
+
- `src/lib.rs` - PyO3 module exposing `Packet`, `LayerKind`, `LayerIndex`
|
|
70
|
+
- `python/stackforge/__init__.py` - Re-exports from compiled extension
|
|
71
|
+
- Python source configured via `tool.maturin.python-source = "python"` in pyproject.toml
|
|
72
|
+
|
|
73
|
+
## Testing
|
|
74
|
+
|
|
75
|
+
- Rust unit tests: inline in source files and `crates/stackforge-core/src/lib.rs`
|
|
76
|
+
- Rust integration tests: `tests/integration/`
|
|
77
|
+
- Python tests: `tests/python/test_core.py`
|