blob: c3bfbf7071b0d188204afc79ff88e16ee7f0ddea [file] [log] [blame]
James Kuszmaul4cb043c2021-01-17 11:25:51 -08001/*
2 * Copyright (C) 2012-2015 Michael Tuexen
3 *
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of the project nor the names of its contributors
15 * may be used to endorse or promote products derived from this software
16 * without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 */
30
31#ifndef DATACHAN_H
32
33#define DATA_CHANNEL_PPID_CONTROL 1
34#define DATA_CHANNEL_PPID_DOMSTRING 2
35#define DATA_CHANNEL_PPID_BINARY 3
36
37struct rtcweb_datachannel_msg {
38 uint8_t msg_type;
39 uint8_t channel_type;
40 uint16_t flags;
41 uint16_t reverse_stream;
42 uint16_t reliability_params;
43 /* msg_type_data follows */
44} SCTP_PACKED;
45
46/* msg_type values: */
47#define DATA_CHANNEL_OPEN 0
48#define DATA_CHANNEL_OPEN_RESPONSE 1
49
50/* channel_type values: */
51#define DATA_CHANNEL_RELIABLE 0
52#define DATA_CHANNEL_RELIABLE_STREAM 1
53#define DATA_CHANNEL_UNRELIABLE 2
54#define DATA_CHANNEL_PARTIAL_RELIABLE_REXMIT 3
55#define DATA_CHANNEL_PARTIAL_RELIABLE_TIMED 4
56
57/* flags values: */
58#define DATA_CHANNEL_FLAG_OUT_OF_ORDER_ALLOWED 0x0001
59/* all other bits reserved and should be set to 0 */
60
61/* msg_type_data contains: */
62/*
63 for DATA_CHANNEL_OPEN:
64 a DOMString label for the data channel
65 for DATA_CHANNEL_OPEN_RESPONSE:
66 a 16-bit value for errors or 0 for no error
67*/
68
69#define ERR_DATA_CHANNEL_ALREADY_OPEN 0
70#define ERR_DATA_CHANNEL_NONE_AVAILABLE 1
71
72#endif