turn_types/attribute/
mod.rs

1// Copyright (C) 2025 Matthew Waters <matthew@centricular.com>
2//
3// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
4// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
5// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
6// option. This file may not be copied, modified, or distributed
7// except according to those terms.
8
9//! STUN Attributes for TURN.
10//!
11//! Provides for generating, parsing and manipulating STUN attributes as specified in TURN
12//! [RFC5766].
13//!
14//! [RFC5766]: https://tools.ietf.org/html/rfc5766
15
16mod address;
17pub use address::{XorPeerAddress, XorRelayedAddress};
18mod channel;
19pub use channel::ChannelNumber;
20mod data;
21pub use data::Data;
22mod even_port;
23pub use even_port::EvenPort;
24mod fragment;
25pub use fragment::DontFragment;
26mod lifetime;
27pub use lifetime::Lifetime;
28mod reservation;
29pub use reservation::ReservationToken;
30mod transport;
31pub use transport::RequestedTransport;
32
33pub(super) fn attributes_init() {
34    use stun_types::prelude::*;
35
36    stun_types::attribute_display!(XorPeerAddress);
37    XorPeerAddress::TYPE.add_name("XorPeerAddress");
38    stun_types::attribute_display!(XorRelayedAddress);
39    XorRelayedAddress::TYPE.add_name("XorRelayedAddress");
40    stun_types::attribute_display!(ChannelNumber);
41    ChannelNumber::TYPE.add_name("ChannelNumber");
42    stun_types::attribute_display!(Data);
43    Data::TYPE.add_name("Data");
44    stun_types::attribute_display!(EvenPort);
45    EvenPort::TYPE.add_name("EvenPort");
46    stun_types::attribute_display!(DontFragment);
47    DontFragment::TYPE.add_name("DontFragment");
48    stun_types::attribute_display!(Lifetime);
49    Lifetime::TYPE.add_name("Lifetime");
50    stun_types::attribute_display!(ReservationToken);
51    ReservationToken::TYPE.add_name("ReservationToken");
52}