Expand description
SCTP Implementation for Rust ‘async’ runtimes.
The Goal of this implementation is being able to use SCTP within Rust’s async ecosystem. Also,
this implementation is a Pure Rust implementation leveraging the kernel SCTP stack in the Linux
kernel without requiring libsctp
or similar libraries to be present and makes use of the
libc
crate for system calls. This crate implements Socket API
Extensions, that are expected in a modern
implementation of SCTP stack. As a result, APIs that are marked as DEPRECATED
in the RFC will
not will not be implemented initially.
Also, the APIs are designed such that they are idiomatic Rust APIs and making use of
appropriate types thus making use of the std::net::SocketAddr
structures wherever
appropriate rather than using the libc::sockaddr
structures for example.
§Example
The examples below will help you to get started using the APIs in your application.
// Create a TCP Style (Socket-to-association is 1-1) socket.
let client = sctp_rs::Socket::new_v4(sctp_rs::SocketToAssociation::OneToOne)?;
let bind_addr: std::net::SocketAddr = "127.0.0.1:8080".parse().unwrap();
client.bind(bind_addr)?;
// Listen on the socket listen queue size of 10. Normally this number should be considerably
// higher like 100 or so.
let listener = client.listen(10)?;
// Accept on the socket and process data.
let (accepted, _client_addr) = listener.accept().await?;
loop {
let notification_or_data = accepted.sctp_recv().await?;
match notification_or_data {
sctp_rs::NotificationOrData::Notification(notification) => {
// Process Notification
},
sctp_rs::NotificationOrData::Data(data) => {
// Process Data
}
}
}
Structs§
- Association
Change - AssociationChange: Structure returned as notification for Association Change.
- Conn
Status - ConnStatus: Status of an SCTP Connection
- Connected
Socket - A structure representing a Connected SCTP socket.
- Listener
- A structure representing a socket that is listening for incoming SCTP Connections.
- NxtInfo
- Structure representing Ancillary next information (See Section 5.3.5)
- RcvInfo
- Structure Representing Ancillary Receive Information (See Section 5.3.5 of RFC 6458)
- Received
Data - Structure Representing SCTP Received Data.
- Send
Data - Structure Represnting Data to be Sent.
- Send
Info - Structure representing Ancilliary Send Information (See Section 5.3.4 of RFC 6458)
- Shutdown
- Shutdown: Structure rreturned as notification for Shutdown Event.
- Socket
- A structure representing an unconnected SCTP Socket.
Enums§
- Assoc
Change State - Association Change States
- Bindx
Flags - Flags used by
sctp_bindx
. - Cmsg
Type - Constants related to
enum sctp_cmsg_type
- Event
- Event: Used for Subscribing for SCTP Events
- Notification
- An
enum
representing the notifications received on the SCTP Sockets. - Notification
OrData - NotificationOrData: A type returned by a
sctp_recv
call. - Socket
ToAssociation - SocketToAssociation: One-to-Many or One-to-One style Socket
- Subscribe
Event Assoc Id - SubscribeEventAssocId: AssociationID Used for Event Subscription
Type Aliases§
- Association
Id - SCTP Association ID Type