gutd 2.5.1

WireGuard traffic obfuscation library — QUIC-like encapsulation, cross-platform userspace proxy, optional eBPF fast path on Linux
# Contributing to gutd

## Getting Started

1. Fork the repository: <https://github.com/sh0rch/gutd>
2. Create a feature branch: `git checkout -b my-feature`
3. Make your changes and commit with a clear message
4. Open a pull request against `main`

## Development Requirements

- Rust stable (latest)
- Linux kernel 5.15+ with BTF enabled (`CONFIG_DEBUG_INFO_BTF=y`)
- `clang` 14+ and `llvm-strip` for BPF compilation
- `libbpf` dev headers

Check all build dependencies:

```bash
bash tests/check-deps.sh
```

Build:

```bash
cargo build
```

## Code Style

- Rust: standard `rustfmt` formatting (`cargo fmt`)
- BPF C: follow the style of existing files in `src/tc/bpf/`
- No inline performance claims or benchmark numbers in docs

## Testing

Run the integration test before submitting a PR:

```bash
sudo bash tests/integration-wg.sh
```

The test requires a Linux host with network namespace support and WireGuard loaded.

## Pull Request Guidelines

- One logical change per PR
- Include a brief description of what changes and why
- If changing the wire protocol or BPF datapath, update `COMPLIANCE.md`
- If changing config keys, update `gutd.conf`, `src/installer.rs`, and `README.md`

## Reporting Security Issues

See [SECURITY.md](SECURITY.md).

## License

By contributing you agree that your changes will be licensed under the
[Apache-2.0](LICENSE) license.