30 #include <sys/types.h>
31 #include <sys/socket.h>
32 #include <sys/select.h>
33 #include <netinet/in.h>
34 #include <arpa/inet.h>
52 int janus_sctp_init(
void);
55 void janus_sctp_deinit(
void);
58 #define BUFFER_SIZE (1<<16)
59 #define NUMBER_OF_CHANNELS (150)
60 #define NUMBER_OF_STREAMS (300)
62 #define DATA_CHANNEL_PPID_CONTROL 50
63 #define DATA_CHANNEL_PPID_DOMSTRING 51
64 #define DATA_CHANNEL_PPID_BINARY_PARTIAL 52
65 #define DATA_CHANNEL_PPID_BINARY 53
66 #define DATA_CHANNEL_PPID_DOMSTRING_PARTIAL 54
68 #define DATA_CHANNEL_CLOSED 0
69 #define DATA_CHANNEL_CONNECTING 1
70 #define DATA_CHANNEL_OPEN 2
71 #define DATA_CHANNEL_CLOSING 3
73 #define DATA_CHANNEL_FLAGS_SEND_REQ 0x00000001
74 #define DATA_CHANNEL_FLAGS_SEND_RSP 0x00000002
75 #define DATA_CHANNEL_FLAGS_SEND_ACK 0x00000004
80 typedef struct janus_sctp_channel {
99 typedef struct janus_sctp_association {
107 struct janus_sctp_channel channels[NUMBER_OF_CHANNELS];
109 struct janus_sctp_channel *stream_channel[NUMBER_OF_STREAMS];
111 uint16_t stream_buffer[NUMBER_OF_STREAMS];
113 uint32_t stream_buffer_counter;
119 uint16_t remote_port;
132 volatile gint destroyed;
135 } janus_sctp_association;
138 #define DATA_CHANNEL_OPEN_REQUEST 3
139 #define DATA_CHANNEL_OPEN_RESPONSE 1
140 #define DATA_CHANNEL_ACK 2
142 #define DATA_CHANNEL_RELIABLE 0x00
143 #define DATA_CHANNEL_RELIABLE_UNORDERED 0x80
144 #define DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT 0x01
145 #define DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT_UNORDERED 0x81
146 #define DATA_CHANNEL_PARTIAL_RELIABLE_TIMED 0x02
147 #define DATA_CHANNEL_PARTIAL_RELIABLE_TIMED_UNORDERED 0x82
150 typedef struct janus_datachannel_open_request {
154 uint8_t channel_type;
158 uint32_t reliability_params;
160 uint16_t label_length;
162 uint16_t protocol_length;
166 } janus_datachannel_open_request;
168 typedef struct janus_datachannel_open_response {
176 uint16_t reverse_stream;
177 } janus_datachannel_open_response;
179 typedef struct janus_datachannel_ack {
182 } janus_datachannel_ack;
191 janus_sctp_association *janus_sctp_association_create(
struct janus_dtls_srtp *dtls,
struct janus_handle *handle, uint16_t udp_port);
195 void janus_sctp_association_destroy(janus_sctp_association *sctp);
201 void janus_sctp_data_from_dtls(janus_sctp_association *sctp,
char *buf,
int len);
208 void janus_sctp_send_data(janus_sctp_association *sctp,
char *label,
char *buf,
int len);
guint64 handle_id
Handle identifier, guaranteed to be non-zero.
Definition: ice.h:280
Reference counter mechanism.
GMutex janus_mutex
Janus mutex implementation.
Definition: mutex.h:61
ogg_stream_state * stream
Definition: pp-opus.c:32
Definition: refcount.h:78
Janus handle.
Definition: ice.h:276
Semaphors, Mutexes and Conditions.
Janus DTLS-SRTP handle.
Definition: dtls.h:60