This commit introduces a sans-IO TFTP protocol implementation following RFC 1350. The protocol crate provides: - Packet types: RRQ, WRQ, DATA, ACK, ERROR with full serialization/parsing - Error codes as defined in RFC 1350 Appendix - Transfer modes: octet (binary) and netascii - Client and server state machines for managing protocol flow - Comprehensive tests for all packet types and state transitions The sans-IO design separates protocol logic from I/O operations, making the code testable and reusable across different I/O implementations. Key design decisions: - Mail mode is explicitly rejected as obsolete per RFC 1350 - Block numbers wrap around at 65535 for large file support - State machines emit events that tell the I/O layer what to do next - All protocol-specific values are documented with RFC citations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
74 lines
1.6 KiB
TOML
74 lines
1.6 KiB
TOML
# This file is automatically @generated by Cargo.
|
|
# It is not intended for manual editing.
|
|
version = 4
|
|
|
|
[[package]]
|
|
name = "pfs-tftp"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"pfs-tftp-proto",
|
|
"thiserror",
|
|
]
|
|
|
|
[[package]]
|
|
name = "pfs-tftp-proto"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"thiserror",
|
|
]
|
|
|
|
[[package]]
|
|
name = "proc-macro2"
|
|
version = "1.0.103"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
|
|
dependencies = [
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "quote"
|
|
version = "1.0.42"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
]
|
|
|
|
[[package]]
|
|
name = "syn"
|
|
version = "2.0.111"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "thiserror"
|
|
version = "2.0.17"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
|
|
dependencies = [
|
|
"thiserror-impl",
|
|
]
|
|
|
|
[[package]]
|
|
name = "thiserror-impl"
|
|
version = "2.0.17"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "unicode-ident"
|
|
version = "1.0.22"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
|