A collection of network related libraries that includes protocol parsers and daemons. This project is still in an early stage.
- BGP
- Packet representation and wire format
serialization/deserialization:
netgauze-bgp-pkt
- BGP Speaker (including connection management and FSM):
netgauze-bgp-speaker
- Packet representation and wire format
serialization/deserialization:
- BMP
- Packet representation and wire format
serialization/deserialization:
netgauze-bmp-pkt
- Service building block to receive BMP messages:
netgauze-bmp-service
- Packet representation and wire format
serialization/deserialization:
- Netflow V9 and IPFIX
- Packet representation and wire format
serialization/deserialization:
netgauze-flow-pkt
- Service building block to receive messages:
netgauze-flow-service
- Packet representation and wire format
serialization/deserialization:
NetGauze uses macro test from the trybuild crate.
To generate the expected output for macro test the TRYBUILD env var must be set:
TRYBUILD=overwrite cargo test
To generate the expected output for pcap tests the OVERWRITE env var must be set:
```OVERWRITE=true cargo test``
cargo fmt -- --config format_code_in_doc_comments=true --config wrap_comments=true --config imports_granularity=Crate
NetGauze uses nightly rust build for clippy checks just to anticipate what's coming in new rust releases.
cargo +nightly clippy --tests -- -Dclippy::all
Some NetGauze crates come with examples. Check ls ./crates/*/examples
to list existing examples.
For example, run the ./crates/flow-service/example/print-flow.rs
, you can use:
cargo run -p netgauze-flow-service --example print-flow
-
Fuzzing BGP Peer
cargo +nightly fuzz run fuzz-bgp-peer
-
Fuzzing BGP pkt serde
cargo +nightly fuzz run fuzz-bgp-pkt cargo +nightly fuzz run fuzz-bgp-pkt-serialize
-
Fuzzing BMP pkt serde
cargo +nightly fuzz run fuzz-bmp-pkt cargo +nightly fuzz run fuzz-bmp-pkt-serialize
-
Fuzzing IPFIX
cargo +nightly fuzz run fuzz-ipfix-pkt
-
Fuzzing Netflow V9
cargo +nightly fuzz run fuzz-netflow-v9-pkt
Licensed under Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.