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.
Files changed (270) hide show
  1. {stackforge-0.1.1 → stackforge-0.3.0}/.github/workflows/test.yml +2 -2
  2. {stackforge-0.1.1 → stackforge-0.3.0}/.gitignore +8 -1
  3. stackforge-0.3.0/CLAUDE.md +77 -0
  4. stackforge-0.3.0/Cargo.lock +1294 -0
  5. {stackforge-0.1.1 → stackforge-0.3.0}/Cargo.toml +23 -4
  6. stackforge-0.3.0/PKG-INFO +208 -0
  7. stackforge-0.3.0/README.md +183 -0
  8. stackforge-0.3.0/cliff.toml +94 -0
  9. stackforge-0.3.0/cog.toml +13 -0
  10. stackforge-0.3.0/crates/stackforge-automata/Cargo.toml +14 -0
  11. stackforge-0.3.0/crates/stackforge-automata/src/lib.rs +34 -0
  12. stackforge-0.3.0/crates/stackforge-core/Cargo.toml +40 -0
  13. stackforge-0.3.0/crates/stackforge-core/src/error.rs +147 -0
  14. stackforge-0.3.0/crates/stackforge-core/src/layer/arp.rs +1154 -0
  15. stackforge-0.3.0/crates/stackforge-core/src/layer/bindings.rs +317 -0
  16. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/bitmap.rs +169 -0
  17. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/builder.rs +379 -0
  18. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/edns.rs +450 -0
  19. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/header.rs +439 -0
  20. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/mod.rs +445 -0
  21. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/query.rs +234 -0
  22. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/rdata.rs +2250 -0
  23. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/rr.rs +625 -0
  24. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/svcb.rs +272 -0
  25. stackforge-0.3.0/crates/stackforge-core/src/layer/dns/types.rs +897 -0
  26. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/builder.rs +794 -0
  27. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/control.rs +412 -0
  28. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/data.rs +355 -0
  29. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/ie.rs +1544 -0
  30. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/management.rs +984 -0
  31. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/mod.rs +947 -0
  32. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/radiotap.rs +688 -0
  33. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/security.rs +728 -0
  34. stackforge-0.3.0/crates/stackforge-core/src/layer/dot11/types.rs +1106 -0
  35. stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/beacon.rs +507 -0
  36. stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/builder.rs +707 -0
  37. stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/command.rs +524 -0
  38. stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/crc.rs +106 -0
  39. stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/mod.rs +1436 -0
  40. stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/security.rs +396 -0
  41. stackforge-0.3.0/crates/stackforge-core/src/layer/dot15d4/types.rs +307 -0
  42. stackforge-0.3.0/crates/stackforge-core/src/layer/ethernet.rs +663 -0
  43. stackforge-0.3.0/crates/stackforge-core/src/layer/field.rs +1544 -0
  44. stackforge-0.3.0/crates/stackforge-core/src/layer/field_ext.rs +530 -0
  45. stackforge-0.3.0/crates/stackforge-core/src/layer/generic/builder.rs +273 -0
  46. stackforge-0.3.0/crates/stackforge-core/src/layer/generic/mod.rs +510 -0
  47. stackforge-0.3.0/crates/stackforge-core/src/layer/http/builder.rs +369 -0
  48. stackforge-0.3.0/crates/stackforge-core/src/layer/http/detection.rs +80 -0
  49. stackforge-0.3.0/crates/stackforge-core/src/layer/http/mod.rs +665 -0
  50. stackforge-0.3.0/crates/stackforge-core/src/layer/http/request.rs +161 -0
  51. stackforge-0.3.0/crates/stackforge-core/src/layer/http/response.rs +177 -0
  52. stackforge-0.3.0/crates/stackforge-core/src/layer/http2/builder.rs +666 -0
  53. stackforge-0.3.0/crates/stackforge-core/src/layer/http2/frames.rs +713 -0
  54. stackforge-0.3.0/crates/stackforge-core/src/layer/http2/hpack.rs +1251 -0
  55. stackforge-0.3.0/crates/stackforge-core/src/layer/http2/mod.rs +542 -0
  56. stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/builder.rs +544 -0
  57. stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/checksum.rs +107 -0
  58. stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/error.rs +87 -0
  59. stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/extensions.rs +371 -0
  60. stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/mod.rs +1348 -0
  61. stackforge-0.3.0/crates/stackforge-core/src/layer/icmp/types.rs +113 -0
  62. stackforge-0.3.0/crates/stackforge-core/src/layer/icmpv6/builder.rs +475 -0
  63. stackforge-0.3.0/crates/stackforge-core/src/layer/icmpv6/mod.rs +754 -0
  64. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/builder.rs +727 -0
  65. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/checksum.rs +388 -0
  66. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/fragmentation.rs +740 -0
  67. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/header.rs +1007 -0
  68. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/mod.rs +24 -0
  69. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/options.rs +1024 -0
  70. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/protocol.rs +656 -0
  71. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/routing.rs +444 -0
  72. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv4/ttl.rs +65 -0
  73. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv6/builder.rs +295 -0
  74. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv6/ext_headers.rs +299 -0
  75. stackforge-0.3.0/crates/stackforge-core/src/layer/ipv6/mod.rs +571 -0
  76. stackforge-0.3.0/crates/stackforge-core/src/layer/l2tp/builder.rs +388 -0
  77. stackforge-0.3.0/crates/stackforge-core/src/layer/l2tp/mod.rs +644 -0
  78. stackforge-0.3.0/crates/stackforge-core/src/layer/mod.rs +1485 -0
  79. stackforge-0.3.0/crates/stackforge-core/src/layer/neighbor.rs +521 -0
  80. stackforge-0.3.0/crates/stackforge-core/src/layer/quic/builder.rs +375 -0
  81. stackforge-0.3.0/crates/stackforge-core/src/layer/quic/frames.rs +649 -0
  82. stackforge-0.3.0/crates/stackforge-core/src/layer/quic/headers.rs +310 -0
  83. stackforge-0.3.0/crates/stackforge-core/src/layer/quic/mod.rs +819 -0
  84. stackforge-0.3.0/crates/stackforge-core/src/layer/quic/varint.rs +203 -0
  85. stackforge-0.3.0/crates/stackforge-core/src/layer/raw.rs +520 -0
  86. stackforge-0.3.0/crates/stackforge-core/src/layer/ssh/builder.rs +81 -0
  87. stackforge-0.3.0/crates/stackforge-core/src/layer/ssh/mod.rs +379 -0
  88. stackforge-0.3.0/crates/stackforge-core/src/layer/stack.rs +900 -0
  89. stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/builder.rs +861 -0
  90. stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/checksum.rs +386 -0
  91. stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/flags.rs +588 -0
  92. stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/header.rs +758 -0
  93. stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/mod.rs +49 -0
  94. stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/options.rs +1056 -0
  95. stackforge-0.3.0/crates/stackforge-core/src/layer/tcp/services.rs +794 -0
  96. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/builder.rs +255 -0
  97. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/cert.rs +193 -0
  98. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/cipher_aead.rs +366 -0
  99. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/cipher_block.rs +310 -0
  100. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/cipher_stream.rs +103 -0
  101. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/compression.rs +51 -0
  102. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/groups.rs +147 -0
  103. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/hash.rs +160 -0
  104. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/hkdf_tls13.rs +297 -0
  105. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/hmac_tls.rs +225 -0
  106. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/mod.rs +31 -0
  107. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/prf.rs +235 -0
  108. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/crypto/suites.rs +536 -0
  109. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/common.rs +152 -0
  110. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/key_share.rs +111 -0
  111. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/mod.rs +159 -0
  112. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/signature_algorithms.rs +47 -0
  113. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/sni.rs +78 -0
  114. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/extensions/supported_versions.rs +65 -0
  115. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/certificate.rs +286 -0
  116. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/client_hello.rs +272 -0
  117. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/finished.rs +39 -0
  118. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/key_exchange.rs +208 -0
  119. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/mod.rs +206 -0
  120. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/handshake/server_hello.rs +210 -0
  121. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/keyexchange/ecdhe.rs +323 -0
  122. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/keyexchange/mod.rs +44 -0
  123. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/mod.rs +149 -0
  124. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/record.rs +403 -0
  125. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/session.rs +297 -0
  126. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/sslv2/handshake.rs +366 -0
  127. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/sslv2/mod.rs +25 -0
  128. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/sslv2/record.rs +120 -0
  129. stackforge-0.3.0/crates/stackforge-core/src/layer/tls/types.rs +532 -0
  130. stackforge-0.3.0/crates/stackforge-core/src/layer/udp/builder.rs +501 -0
  131. stackforge-0.3.0/crates/stackforge-core/src/layer/udp/checksum.rs +236 -0
  132. stackforge-0.3.0/crates/stackforge-core/src/layer/udp/mod.rs +402 -0
  133. stackforge-0.3.0/crates/stackforge-core/src/lib.rs +329 -0
  134. stackforge-0.3.0/crates/stackforge-core/src/packet.rs +949 -0
  135. stackforge-0.3.0/crates/stackforge-core/src/pcap/mod.rs +42 -0
  136. stackforge-0.3.0/crates/stackforge-core/src/pcap/reader.rs +172 -0
  137. stackforge-0.3.0/crates/stackforge-core/src/pcap/writer.rs +207 -0
  138. stackforge-0.3.0/crates/stackforge-core/src/utils/bits.rs +61 -0
  139. stackforge-0.3.0/crates/stackforge-core/src/utils/checksum.rs +131 -0
  140. stackforge-0.3.0/crates/stackforge-core/src/utils/compare.rs +63 -0
  141. stackforge-0.3.0/crates/stackforge-core/src/utils/hex.rs +143 -0
  142. stackforge-0.3.0/crates/stackforge-core/src/utils/mod.rs +31 -0
  143. stackforge-0.3.0/crates/stackforge-core/src/utils/padding.rs +56 -0
  144. stackforge-0.3.0/crates/stackforge-core/src/utils/random.rs +22 -0
  145. stackforge-0.3.0/pyproject.toml +55 -0
  146. stackforge-0.3.0/python/stackforge/__init__.py +81 -0
  147. stackforge-0.3.0/python/stackforge/custom.py +252 -0
  148. stackforge-0.3.0/rustfmt.toml +22 -0
  149. stackforge-0.3.0/src/lib.rs +3180 -0
  150. stackforge-0.3.0/tests/integration/arp.rs +349 -0
  151. stackforge-0.3.0/tests/integration/compat_tests/arp_compat.rs +214 -0
  152. stackforge-0.3.0/tests/integration/compat_tests/ethernet_compat.rs +183 -0
  153. stackforge-0.3.0/tests/integration/compat_tests/icmp_compat.rs +60 -0
  154. stackforge-0.3.0/tests/integration/compat_tests/ipv4_compat.rs +82 -0
  155. stackforge-0.3.0/tests/integration/compat_tests/mod.rs +253 -0
  156. stackforge-0.3.0/tests/integration/compat_tests/ssh_compat.rs +40 -0
  157. stackforge-0.3.0/tests/integration/compat_tests/tcp_compat.rs +70 -0
  158. stackforge-0.3.0/tests/integration/compat_tests/tls_compat.rs +103 -0
  159. stackforge-0.3.0/tests/integration/compat_tests/udp_compat.rs +31 -0
  160. stackforge-0.3.0/tests/integration/dns.rs +978 -0
  161. stackforge-0.3.0/tests/integration/dot11.rs +1300 -0
  162. stackforge-0.3.0/tests/integration/dot15d4.rs +1333 -0
  163. stackforge-0.3.0/tests/integration/ethernet.rs +182 -0
  164. stackforge-0.3.0/tests/integration/field.rs +46 -0
  165. stackforge-0.3.0/tests/integration/http.rs +620 -0
  166. stackforge-0.3.0/tests/integration/http2.rs +1330 -0
  167. stackforge-0.3.0/tests/integration/icmpv6.rs +480 -0
  168. stackforge-0.3.0/tests/integration/ipv6.rs +595 -0
  169. stackforge-0.3.0/tests/integration/layer.rs +69 -0
  170. stackforge-0.3.0/tests/integration/main.rs +22 -0
  171. stackforge-0.3.0/tests/integration/packet.rs +325 -0
  172. stackforge-0.3.0/tests/integration/quic.rs +544 -0
  173. stackforge-0.3.0/tests/integration/ssh.rs +184 -0
  174. stackforge-0.3.0/tests/integration/tls.rs +863 -0
  175. stackforge-0.3.0/tests/integration/util.rs +30 -0
  176. stackforge-0.3.0/tests/python/scapy_compat/__init__.py +1 -0
  177. stackforge-0.3.0/tests/python/scapy_compat/conftest.py +166 -0
  178. stackforge-0.3.0/tests/python/scapy_compat/test_arp_compat.py +209 -0
  179. stackforge-0.3.0/tests/python/scapy_compat/test_checksums_compat.py +221 -0
  180. stackforge-0.3.0/tests/python/scapy_compat/test_edge_cases_compat.py +201 -0
  181. stackforge-0.3.0/tests/python/scapy_compat/test_ethernet_compat.py +157 -0
  182. stackforge-0.3.0/tests/python/scapy_compat/test_icmp_compat.py +192 -0
  183. stackforge-0.3.0/tests/python/scapy_compat/test_ipv4_compat.py +282 -0
  184. stackforge-0.3.0/tests/python/scapy_compat/test_pcap_compat.py +325 -0
  185. stackforge-0.3.0/tests/python/scapy_compat/test_stacking_compat.py +385 -0
  186. stackforge-0.3.0/tests/python/scapy_compat/test_tcp_compat.py +322 -0
  187. stackforge-0.3.0/tests/python/scapy_compat/test_udp_compat.py +114 -0
  188. stackforge-0.3.0/tests/python/scapy_compat/test_uts_integration.py +83 -0
  189. stackforge-0.3.0/tests/python/test_core.py +415 -0
  190. stackforge-0.3.0/tests/python/test_custom.py +370 -0
  191. stackforge-0.3.0/tests/python/test_dns.py +603 -0
  192. stackforge-0.3.0/tests/python/test_dot11.py +469 -0
  193. stackforge-0.3.0/tests/python/test_dot15d4.py +562 -0
  194. stackforge-0.3.0/tests/python/test_http.py +391 -0
  195. stackforge-0.3.0/tests/python/test_icmpv6.py +299 -0
  196. stackforge-0.3.0/tests/python/test_ipv6.py +362 -0
  197. stackforge-0.3.0/tests/python/test_l2tp.py +395 -0
  198. stackforge-0.3.0/tests/python/test_pcap.py +186 -0
  199. stackforge-0.3.0/tests/python/test_quic.py +473 -0
  200. stackforge-0.3.0/tests/python/test_ssh.py +89 -0
  201. stackforge-0.3.0/tests/python/test_tls.py +343 -0
  202. stackforge-0.3.0/tests/python/test_udp_icmp.py +1222 -0
  203. stackforge-0.3.0/tests/python/test_uts_http.py +430 -0
  204. stackforge-0.3.0/tests/python/test_uts_http2.py +578 -0
  205. stackforge-0.3.0/tests/python/test_uts_ipv6.py +436 -0
  206. stackforge-0.3.0/tests/python/test_uts_l2tp.py +370 -0
  207. stackforge-0.3.0/tests/python/test_uts_quic.py +481 -0
  208. stackforge-0.3.0/tests/sample_pcap/http2_h2c.pcap +0 -0
  209. stackforge-0.3.0/tests/sample_pcap/http_chunk.pcap +0 -0
  210. stackforge-0.3.0/tests/sample_pcap/http_compressed-brotli.pcap +0 -0
  211. stackforge-0.3.0/tests/sample_pcap/http_compressed-zstd.pcap +0 -0
  212. stackforge-0.3.0/tests/sample_pcap/http_compressed.pcap +0 -0
  213. stackforge-0.3.0/tests/sample_pcap/http_content_length.pcap +0 -0
  214. stackforge-0.3.0/tests/sample_pcap/http_head.pcapng +0 -0
  215. stackforge-0.3.0/tests/sample_pcap/http_tcp_psh.pcap +0 -0
  216. stackforge-0.3.0/tests/sample_pcap/ssh_ed25519.pcap +0 -0
  217. stackforge-0.3.0/tests/sample_pcap/tcprelay/PCAP.md +46 -0
  218. stackforge-0.3.0/tests/sample_pcap/tcprelay/smallFlows.pcap +0 -0
  219. stackforge-0.3.0/tests/sample_pcap/tcprelay/test.pcap +0 -0
  220. stackforge-0.3.0/tests/scripts/compare_packets.py +106 -0
  221. stackforge-0.3.0/tests/scripts/generate_scapy_fixtures.py +95 -0
  222. stackforge-0.3.0/tests/uts/dns.uts +522 -0
  223. stackforge-0.3.0/tests/uts/dns_dnssec.uts +146 -0
  224. stackforge-0.3.0/tests/uts/dns_edns0.uts +214 -0
  225. stackforge-0.3.0/tests/uts/dot11.uts +808 -0
  226. stackforge-0.3.0/tests/uts/dot15d4.uts +876 -0
  227. stackforge-0.3.0/tests/uts/fields.uts +2347 -0
  228. stackforge-0.3.0/tests/uts/http.uts +415 -0
  229. stackforge-0.3.0/tests/uts/http2.uts +2414 -0
  230. stackforge-0.3.0/tests/uts/inet.uts +923 -0
  231. stackforge-0.3.0/tests/uts/inet6 copy.uts +2999 -0
  232. stackforge-0.3.0/tests/uts/inet6.uts +2999 -0
  233. stackforge-0.3.0/tests/uts/l2.uts +279 -0
  234. stackforge-0.3.0/tests/uts/l2tp.uts +16 -0
  235. stackforge-0.3.0/tests/uts/quic.uts +117 -0
  236. stackforge-0.3.0/tests/uts/ssh.uts +37 -0
  237. stackforge-0.3.0/tests/uts/tls/__init__.py +8 -0
  238. stackforge-0.3.0/tests/uts/tls/cert.uts +1107 -0
  239. stackforge-0.3.0/tests/uts/tls/example_client.py +101 -0
  240. stackforge-0.3.0/tests/uts/tls/example_server.py +68 -0
  241. stackforge-0.3.0/tests/uts/tls/pki/README.md +9 -0
  242. stackforge-0.3.0/tests/uts/tls/pki/ca_cert.pem +21 -0
  243. stackforge-0.3.0/tests/uts/tls/pki/ca_key.pem +28 -0
  244. stackforge-0.3.0/tests/uts/tls/pki/cli_cert.pem +22 -0
  245. stackforge-0.3.0/tests/uts/tls/pki/cli_key.pem +28 -0
  246. stackforge-0.3.0/tests/uts/tls/pki/srv_cert.pem +22 -0
  247. stackforge-0.3.0/tests/uts/tls/pki/srv_cert_ed25519.pem +17 -0
  248. stackforge-0.3.0/tests/uts/tls/pki/srv_key.pem +28 -0
  249. stackforge-0.3.0/tests/uts/tls/pki/srv_key_ed25519.pem +3 -0
  250. stackforge-0.3.0/tests/uts/tls/sslv2.uts +286 -0
  251. stackforge-0.3.0/tests/uts/tls/tls.uts +1695 -0
  252. stackforge-0.3.0/tests/uts/tls/tls13.uts +1309 -0
  253. stackforge-0.3.0/tests/uts/tls/tlsclientserver.uts +570 -0
  254. {stackforge-0.1.1 → stackforge-0.3.0}/uv.lock +34 -1
  255. stackforge-0.1.1/Cargo.lock +0 -180
  256. stackforge-0.1.1/PKG-INFO +0 -6
  257. stackforge-0.1.1/README.md +0 -37
  258. stackforge-0.1.1/pyproject.toml +0 -21
  259. stackforge-0.1.1/python/stackforge/__init__.py +0 -0
  260. stackforge-0.1.1/src/lib.rs +0 -6
  261. stackforge-0.1.1/tests/python/test_core.py +0 -5
  262. {stackforge-0.1.1 → stackforge-0.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  263. {stackforge-0.1.1 → stackforge-0.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  264. {stackforge-0.1.1 → stackforge-0.3.0}/.github/workflows/release.yml +0 -0
  265. {stackforge-0.1.1 → stackforge-0.3.0}/.pre-commit-config.yaml +0 -0
  266. {stackforge-0.1.1 → stackforge-0.3.0}/.python-version +0 -0
  267. {stackforge-0.1.1 → stackforge-0.3.0}/CODE_OF_CONDUCT.md +0 -0
  268. {stackforge-0.1.1 → stackforge-0.3.0}/CONTRIBUTING.md +0 -0
  269. {stackforge-0.1.1 → stackforge-0.3.0}/LICENSE +0 -0
  270. {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: uvx maturin develop
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
@@ -14,6 +14,13 @@ stackforge.egg-info/
14
14
  # IDE
15
15
  .vscode/
16
16
  .idea/
17
-
17
+ helper_files/
18
18
  # Tools
19
19
  .bin/
20
+ *.md
21
+ !README.md
22
+ .claude
23
+ .pytest*
24
+ .ruff*
25
+ refs/
26
+ memory/
@@ -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`