blob: 877576068a95878448245c1f0a1dfa2e12e705fb [file] [log] [blame]
James Kuszmaul64391362021-01-17 11:32:00 -08001#include "capabilities.h"
2#include <rawrtcdc/sctp_capabilities.h>
3#include <rawrtcc/code.h>
4#include <re.h>
5
6/**
7 * Print debug information for SCTP capabilities.
8 */
9int rawrtc_sctp_capabilities_debug(
10 struct re_printf* const pf, struct rawrtc_sctp_capabilities const* const capabilities) {
11 int err = 0;
12
13 // Check arguments
14 if (!capabilities) {
15 return 0;
16 }
17
18 err |= re_hprintf(pf, " SCTP Capabilities <%p>:\n", capabilities);
19
20 // Maximum message size
21 err |= re_hprintf(pf, " max_message_size=%" PRIu64 "\n", capabilities->max_message_size);
22
23 // Done
24 return err;
25}
26
27/*
28 * Create a new SCTP transport capabilities instance.
29 * `*capabilitiesp` must be unreferenced.
30 */
31enum rawrtc_code rawrtc_sctp_capabilities_create(
32 struct rawrtc_sctp_capabilities** const capabilitiesp, // de-referenced
33 uint64_t const max_message_size) {
34 struct rawrtc_sctp_capabilities* capabilities;
35
36 // Check arguments
37 if (!capabilitiesp) {
38 return RAWRTC_CODE_INVALID_ARGUMENT;
39 }
40
41 // Allocate capabilities
42 capabilities = mem_zalloc(sizeof(*capabilities), NULL);
43 if (!capabilities) {
44 return RAWRTC_CODE_NO_MEMORY;
45 }
46
47 // Set fields
48 capabilities->max_message_size = max_message_size;
49
50 // Set pointer & done
51 *capabilitiesp = capabilities;
52 return RAWRTC_CODE_SUCCESS;
53}