• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Packet Description Language (PDL)
2
3PDL is a domain specific language for writing the definition of binary protocol
4packets. Parsing and validating packets from raw bytes is tedious and error
5prone in any language. PDL generates memory safe and tailored backends for
6mulitple target languages:
7
8    - Rust
9    - C++
10    - Python
11
12## How to use PDL
13
141. Write the protocol definition
151. `cargo run my-protocol.pdl --output-format rust > my-protocol.rs`
16
17Language specific instructions are provided in another section.
18
19## Supported Features
20
21[Full reference documentation](#doc/reference.md)
22- Scalar values
23- Enumerators
24- Arrays
25- Nested packets
26- Conditional packet derivation
27- Custom field definitions
28
29## Similar projects
30
31* [Kaitai](https://kaitai.io)
32* [EMBOSS](https://github.com/kimrutherford/EMBOSS)
33* [P4](https://p4.org/p4-spec/docs/P4-16-v1.0.0-spec.html)
34