//! STUN/ICE implementation for NAT traversal.
//!
//! This crate provides:
//! - STUN client (RFC 5389) for server reflexive address discovery
//! - ICE agent (RFC 8445) for connectivity checks
//! - ICE candidate types and utilities
//!
//! # Example
//!
//! ```rust,ignore
//! use rsiprtp::ice::{IceAgent, IceConfig, IceRole, StunServer};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//! // Create ICE agent
//! let config = IceConfig::default();
//! let agent = IceAgent::new(config, IceRole::Controlling);
//!
//! // Gather local candidates
//! let candidates = agent.gather_candidates().await?;
//! println!("Gathered {} candidates", candidates.len());
//!
//! Ok(())
//! }
//! ```
pub
pub
pub
pub
pub use ;
pub use ;
pub use ;
pub use ;