Crate stun_client[][src]

This is a simple async_std based asynchronous STUN client library. At the moment only some features of RFC8489 are implemented and only simple binding requests are possible.

It also supports the OTHER-ADDRESS and CHANGE-REQUEST attributes for RFC5780 -based NAT Behavior Discovery

Example

use async_std::task;
use stun_client::*;

task::block_on(async {
    let mut client = Client::new("0.0.0.0:0", None).await.unwrap();
    let res = client
        .binding_request("stun.l.google.com:19302", None)
        .await
        .unwrap();
    let class = res.get_class();
    match class {
        Class::SuccessResponse => {
            let xor_mapped_addr = Attribute::get_xor_mapped_address(&res);
            println!("XOR-MAPPED-ADDRESS: {}", xor_mapped_addr.unwrap());
        },
        _ => panic!("error"),
    }
});

Modules

nat_behavior_discovery

This module is for NAT Behavior Discovery based on RFC5780. To use this module, the STUN server side must support the OTHER-ADDRESS and CHANGE-REQUEST attributes.

Structs

Client

STUN client. The transport protocol is UDP only and only supports simple STUN Binding requests.

Header

Struct representing STUN header

Message

Struct representing STUN message

Options

STUN client options.

Enums

Attribute

Enum representing STUN attribute

Class

Enum representing STUN class

ErrorCode

An enum that defines the type of STUN error code.

Method

Enum representing STUN method

STUNClientError

Defines the error used by the stun_client library.

Constants

ATTR_CHANGE_REQUEST

CHANGE-REQUEST attribute

ATTR_ERROR_CODE

ERROR-CODE attribute

ATTR_MAPPED_ADDRESS

MAPPED-ADDRESS attribute

ATTR_OTHER_ADDRESS

OTHER-ADDRESS attribute

ATTR_XOR_MAPPED_ADDRESS

XOR-MAPPED-ADDRESS attribute

CHANGE_REQUEST_IP_FLAG

The “change IP” flag for the CHANGE-REQUEST attribute.

CHANGE_REQUEST_PORT_FLAG

The “change port” flag for the CHANGE-REQUEST attribute.

CLASS_ERROR_RESPONSE

A constant that represents a class error response

CLASS_INDICATION

A constant that represents a class indication

CLASS_REQUEST

A constant that represents a class request

CLASS_SUCCESS_RESPONSE

A constant that represents a class success response

FAMILY_IPV4
FAMILY_IPV6
HEADER_BYTE_SIZE

STUN header size

MAGIC_COOKIE

Magic cookie

METHOD_BINDING

Binding method