stund ===== A minimal asynchronous STUN server implementation. The server implements the minimal necessary functionality from [RFC 8489](https://datatracker.ietf.org/doc/html/rfc8489), namely the Binding Request. The server is both IPv6 and IPv4 capable as well as operating in both TCP/UDP modes. When listening on IPv6 address, the server is capable of handling IPv6/IPv4 clients. Running ------- To try out the server, just run: ```shell $ cargo run ``` By default, the server will receive requests from any network hosts using IPv6, this can be adjusted by adding a `--no-ipv4` option to disable IPv6 or manually specifying the `host:port` pair to listen on: ```shell $ cargo run -- 127.0.0.1:3478 ``` Testing ------- To verify the server functions properly, the following tools may be used: * [Trickle ICE tester from WebRTC github samples](https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/) * [IceTest.Info](https://icetest.info/) * `stunclient` package from [stunprotocol.org](stunprotocol.org). *Note: the server will report an error due to stunclient sending additional attributes not recognized by this implementation* Testings results are also recorded as Wireshark captures and are found in [pcaps](this directory).