rice-c
Repository containing Rust bindings to the C API version of rice-proto. This
would be needed when using rice-proto from multiple independent
libraries/application and shared access to the same Agent is required.
Relevant standards
- RFC5245: Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols
- RFC5389: Session Traversal Utilities for NAT (STUN)
- RFC5766: Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)
- RFC5769: Test Vectors for Session Traversal Utilities for NAT (STUN)
- RFC6062: Traversal Using Relays around NAT (TURN) Extensions for TCP Allocations
- RFC6156: Traversal Using Relays around NAT (TURN) Extension for IPv6
- RFC6544: TCP Candidates with Interactive Connectivity Establishment (ICE)
- RFC7675: Session Traversal Utilities for NAT (STUN) Usage for Consent Freshness
- RFC8445: Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal
- RFC8489: Session Traversal Utilities for NAT (STUN)
- RFC8656: Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)
- RFC8838: Trickle ICE: Incremental Provisioning of Candidates for the Interactive Connectivity Establishment (ICE) Protocol
TODO
- RFC6062
- RFC7675
Building
If building rice-c as part of this repository, then cargo-c is required
and can be installed using:
rice-c will then build a local copy of rice-proto for use.
Otherwise, this crate requires a pre-existing installation of the C library
rice-proto that can be found using pkg-config (through system-deps).
Running the following command will indicate whether your environment contains
rice-proto.
pkg-config --modversion rice-proto
If you need to build rice-proto with the C API, have a look at rice-proto's
README.
Once this prerequisite is handled, you can build rice-c using a
regular cargo build invocation.