libcoap 4.3.5-develop-e78a250
Loading...
Searching...
No Matches
coap_session_internal.h
Go to the documentation of this file.
1/*
2 * coap_session_internal.h -- Structures, Enums & Functions that are not
3 * exposed to application programming
4 *
5 * Copyright (C) 2010-2025 Olaf Bergmann <bergmann@tzi.org>
6 *
7 * SPDX-License-Identifier: BSD-2-Clause
8 *
9 * This file is part of the CoAP library libcoap. Please see README for terms
10 * of use.
11 */
12
18#ifndef COAP_SESSION_INTERNAL_H_
19#define COAP_SESSION_INTERNAL_H_
20
21#include "coap_internal.h"
22#include "coap_io_internal.h"
23#include "coap_ws_internal.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#define COAP_DEFAULT_SESSION_TIMEOUT 300
30#define COAP_PARTIAL_SESSION_TIMEOUT_TICKS (30 * COAP_TICKS_PER_SECOND)
31#define COAP_DEFAULT_MAX_HANDSHAKE_SESSIONS 100
32
49
58
67
77 unsigned ref;
78 size_t tls_overhead;
79 size_t mtu;
80 size_t csm_rcv_mtu;
82 UT_hash_handle hh;
84#if COAP_CLIENT_SUPPORT
86#endif /* COAP_CLIENT_SUPPORT */
87 int ifindex;
88#if COAP_SERVER_SUPPORT
90 unsigned ref_proxy_subs;
91#endif /* COAP_SERVER_SUPPORT */
94#if COAP_SERVER_SUPPORT
96#endif /* COAP_SERVER_SUPPORT */
98 void *tls;
99 uint16_t tx_mid;
101 uint8_t con_active;
108#if COAP_CLIENT_SUPPORT
110#endif /* COAP_CLIENT_SUPPORT */
111#if COAP_SERVER_SUPPORT
113#endif /* COAP_SERVER_SUPPORT */
117 uint8_t read_header[8];
156 void *app_data;
162 uint16_t max_retransmit;
164 uint16_t nstart;
168 uint32_t probing_rate;
170#if COAP_Q_BLOCK_SUPPORT
171 uint16_t max_payloads;
173 uint16_t non_max_retransmit;
175 coap_fixed_point_t non_timeout;
177 coap_fixed_point_t non_receive_timeout;
180 coap_fixed_point_t non_probing_wait_base;
183 coap_fixed_point_t non_partial_timeout;
186#endif /* COAP_Q_BLOCK_SUPPORT */
187 unsigned int dtls_timeout_count;
190 uint32_t tx_rtag;
191 uint32_t block_mode;
194 uint8_t doing_first;
199 uint8_t csm_not_seen;
200#if COAP_OSCORE_SUPPORT
201 uint8_t oscore_encryption;
202 COAP_OSCORE_B_2_STEP b_2_step;
203 oscore_recipient_ctx_t *recipient_ctx;
205 oscore_association_t *associations;
207 uint64_t oscore_r2;
208#endif /* COAP_OSCORE_SUPPORT */
209#if COAP_WS_SUPPORT
210 coap_ws_state_t *ws;
211 coap_str_const_t *ws_host;
212#endif /* COAP_WS_SUPPORT */
213#if COAP_OSCORE_SUPPORT
214 uint8_t doing_b_1_2;
215#endif /* COAP_OSCORE_SUPPORT */
216 volatile uint8_t max_token_checked;
218 uint8_t is_dtls13;
219#if COAP_CLIENT_SUPPORT
224 uint8_t retry_count;
225#endif /* COAP_CLIENT_SUPPORT */
228 uint32_t max_token_size;
229 uint64_t tx_token;
238#if COAP_SERVER_SUPPORT
242#endif /* COAP_SERVER_SUPPORT */
243#if COAP_CLIENT_SUPPORT
246#endif /* COAP_CLIENT_SUPPORT */
247#if COAP_PROXY_SUPPORT
248 coap_proxy_list_t *proxy_entry;
249 coap_proxy_server_list_t *server_list;
250#endif /* COAP_PROXY_SUPPORT */
251};
252
253#if COAP_SERVER_SUPPORT
271#endif /* COAP_SERVER_SUPPORT */
272
275
277 uint32_t u2);
278
281
283 uint32_t u2);
284
286 uint32_t u2);
287
289
291
293
294
301
308
319 coap_nack_reason_t reason);
320
330
342 const coap_bin_const_t *psk_hint);
343
355 const coap_bin_const_t *psk_key);
356
368 const coap_bin_const_t *psk_identity);
369
370#if COAP_SERVER_SUPPORT
381 coap_endpoint_t *ep,
382 void *extra);
383#endif /* COAP_SERVER_SUPPORT */
384
394
404
422int coap_session_set_type_client_lkd(coap_session_t *session, int report_changed);
423
441
452
464ssize_t coap_session_send_pdu(coap_session_t *session, coap_pdu_t *pdu);
465
467 coap_queue_t *node);
468
469#if COAP_SERVER_SUPPORT
480 const coap_packet_t *packet, coap_tick_t now);
481
498
507
508#endif /* COAP_SERVER_SUPPORT */
509
516size_t coap_session_max_pdu_rcv_size(const coap_session_t *session);
517
527size_t coap_session_max_pdu_size_lkd(const coap_session_t *session);
528
546 coap_context_t *ctx,
547 const coap_address_t *local_if,
548 const coap_address_t *server,
550);
551
571 const coap_address_t *local_if,
572 const coap_address_t *server,
574 coap_dtls_pki_t *setup_data
575 );
576
599 const coap_address_t *local_if,
600 const coap_address_t *server,
602 const char *identity,
603 const uint8_t *key,
604 unsigned key_len
605 );
606
626 const coap_address_t *local_if,
627 const coap_address_t *server,
629 coap_dtls_cpsk_t *setup_data
630 );
631
639
652 coap_tick_t now);
653
663
682void *coap_session_set_app_data2_lkd(coap_session_t *session, void *data,
684
705
706void coap_session_free(coap_session_t *session);
708
710
712
713void coap_handle_nack(coap_session_t *session,
714 coap_pdu_t *sent,
715 const coap_nack_reason_t reason,
716 const coap_mid_t mid);
717
724
731
732#define COAP_SESSION_REF(s) ((s)->ref
733
734/* RFC7252 */
735#define COAP_ACK_TIMEOUT(s) ((s)->ack_timeout)
736#define COAP_ACK_RANDOM_FACTOR(s) ((s)->ack_random_factor)
737#define COAP_MAX_RETRANSMIT(s) ((s)->max_retransmit)
738#define COAP_NSTART(s) ((s)->nstart)
739#define COAP_DEFAULT_LEISURE(s) ((s)->default_leisure)
740#define COAP_PROBING_RATE(s) ((s)->probing_rate)
741/* RFC9177 */
742#define COAP_MAX_PAYLOADS(s) ((s)->max_payloads)
743#define COAP_NON_MAX_RETRANSMIT(s) ((s)->non_max_retransmit)
744#define COAP_NON_TIMEOUT(s) ((s)->non_timeout)
745#define COAP_NON_TIMEOUT_TICKS(s) \
746 (COAP_NON_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
747 COAP_NON_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
748#define COAP_NON_RECEIVE_TIMEOUT(s) ((s)->non_receive_timeout)
749#define COAP_NON_PROBING_WAIT_BASE(s) ((s)->non_probing_wait_base)
750#define COAP_NON_PARTIAL_TIMEOUT(s) ((s)->non_partial_timeout)
751
758#define COAP_DEFAULT_LEISURE_TICKS(s) \
759 (COAP_DEFAULT_LEISURE(s).integer_part * COAP_TICKS_PER_SECOND + \
760 COAP_DEFAULT_LEISURE(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
767#define COAP_MAX_TRANSMIT_SPAN(s) \
768 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part) * \
769 ((1 << ((s)->max_retransmit)) -1) * \
770 ((s)->ack_random_factor.integer_part * 1000 + \
771 (s)->ack_random_factor.fractional_part) \
772 / 1000000)
773
780#define COAP_MAX_TRANSMIT_WAIT(s) \
781 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part) * \
782 ((1 << ((s)->max_retransmit + 1)) -1) * \
783 ((s)->ack_random_factor.integer_part * 1000 + \
784 (s)->ack_random_factor.fractional_part) \
785 / 1000000)
786
787#define COAP_MAX_TRANSMIT_WAIT_TICKS(s) \
788 (COAP_MAX_TRANSMIT_WAIT(s) * COAP_TICKS_PER_SECOND)
789
796#define COAP_PROCESSING_DELAY(s) \
797 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part + \
798 500) / 1000)
799
806#define COAP_MAX_RTT(s) \
807 ((2 * COAP_DEFAULT_MAX_LATENCY) + COAP_PROCESSING_DELAY(s))
808
815#define COAP_EXCHANGE_LIFETIME(s) \
816 (COAP_MAX_TRANSMIT_SPAN(s) + (2 * COAP_DEFAULT_MAX_LATENCY) + \
817 COAP_PROCESSING_DELAY(s))
818
825#define COAP_NON_LIFETIME(s) \
826 (COAP_MAX_TRANSMIT_SPAN(s) + COAP_DEFAULT_MAX_LATENCY)
827
834#define COAP_NON_RECEIVE_TIMEOUT_TICKS(s) ( \
835 COAP_NON_RECEIVE_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
836 COAP_NON_RECEIVE_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
837
846#define COAP_NON_PROBING_WAIT(s) \
847 coap_add_fixed_fixed(COAP_NON_PROBING_WAIT_BASE(s), \
848 COAP_NON_TIMEOUT_RANDOM(s))
849
850#define COAP_NON_PROBING_WAIT_TICKS(s) \
851 (COAP_NON_PROBING_WAIT(s).integer_part * COAP_TICKS_PER_SECOND + \
852 COAP_NON_PROBING_WAIT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
853
860#define COAP_NON_PARTIAL_TIMEOUT_TICKS(s) \
861 (COAP_NON_PARTIAL_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
862 COAP_NON_PARTIAL_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
863
870#define COAP_NON_TIMEOUT_RANDOM(s) \
871 coap_get_non_timeout_random(s)
872
875#define SESSIONS_ADD(e, obj) \
876 HASH_ADD(hh, (e), addr_hash, sizeof((obj)->addr_hash), (obj))
877
878#define SESSIONS_DELETE(e, obj) \
879 HASH_DELETE(hh, (e), (obj))
880
881#define SESSIONS_ITER(e, el, rtmp) \
882 HASH_ITER(hh, (e), el, rtmp)
883
884#define SESSIONS_ITER_SAFE(e, el, rtmp) \
885 for ((el) = (e); (el) && ((rtmp) = (el)->hh.next, 1); (el) = (rtmp))
886
887#define SESSIONS_FIND(e, k, res) { \
888 HASH_FIND(hh, (e), &(k), sizeof(k), (res)); \
889 }
890
891#ifdef __cplusplus
892}
893#endif
894
895#endif /* COAP_SESSION_INTERNAL_H_ */
struct coap_proxy_list_t coap_proxy_list_t
Proxy information.
Pulls together all the internal only header files.
coap_nack_reason_t
Definition coap_io.h:66
Internal network I/O functions.
Internal CoAP WebSockets support.
uint64_t coap_tick_t
This data type represents internal timer ticks with COAP_TICKS_PER_SECOND resolution.
Definition coap_time.h:151
coap_response_t
Definition coap_net.h:54
coap_session_t * coap_session_new_dtls_session(coap_session_t *session, coap_tick_t now)
Create a new DTLS session for the session.
int coap_mid_t
coap_mid_t is used to store the CoAP Message ID of a CoAP PDU.
Definition coap_pdu.h:268
coap_proto_t
CoAP protocol types Note: coap_layers_coap[] needs updating if extended.
Definition coap_pdu.h:318
void coap_connect_session(coap_session_t *session, coap_tick_t now)
void coap_session_reestablished(coap_session_t *session)
Session has been re-connected to server.
ssize_t coap_session_delay_pdu(coap_session_t *session, coap_pdu_t *pdu, coap_queue_t *node)
int coap_session_refresh_psk_hint(coap_session_t *session, const coap_bin_const_t *psk_hint)
Refresh the session's current Identity Hint (PSK).
void coap_session_send_csm(coap_session_t *session)
Notify session transport has just connected and CSM exchange can now start.
coap_session_t * coap_new_client_session_psk2_lkd(coap_context_t *ctx, const coap_address_t *local_if, const coap_address_t *server, coap_proto_t proto, coap_dtls_cpsk_t *setup_data)
Creates a new client session to the designated server with PSK credentials.
coap_fixed_point_t coap_add_fixed_uint(coap_fixed_point_t fp1, uint32_t u2)
void coap_handle_nack(coap_session_t *session, coap_pdu_t *sent, const coap_nack_reason_t reason, const coap_mid_t mid)
size_t coap_session_max_pdu_rcv_size(const coap_session_t *session)
Get maximum acceptable receive PDU size.
coap_fixed_point_t coap_sub_fixed_uint(coap_fixed_point_t fp1, uint32_t u2)
int coap_session_set_type_server_lkd(coap_session_t *session)
Set the session type to server.
coap_session_t * coap_endpoint_get_session(coap_endpoint_t *endpoint, const coap_packet_t *packet, coap_tick_t now)
Lookup the server session for the packet received on an endpoint, or create a new one.
void coap_free_endpoint_lkd(coap_endpoint_t *endpoint)
Release an endpoint and all the structures associated with it.
coap_session_t * coap_new_client_session_psk_lkd(coap_context_t *ctx, const coap_address_t *local_if, const coap_address_t *server, coap_proto_t proto, const char *identity, const uint8_t *key, unsigned key_len)
Creates a new client session to the designated server with PSK credentials.
coap_ext_token_check_t
coap_ext_token_check_t values
void coap_read_session(coap_context_t *ctx, coap_session_t *session, coap_tick_t now)
Definition coap_net.c:2468
int coap_session_reconnect(coap_session_t *session)
Close the current session (if not already closed) and reconnect to server (client session only).
void coap_session_server_keepalive_failed(coap_session_t *session)
Clear down a session following a keepalive failure.
void * coap_endpoint_set_app_data_lkd(coap_endpoint_t *endpoint, void *data, coap_app_data_free_callback_t callback)
Stores data with the given endpoint, returning the previously stored value or NULL.
void coap_session_establish(coap_session_t *session)
Layer function interface for layer below session accept/connect being established.
coap_session_t * coap_new_client_session_pki_lkd(coap_context_t *ctx, const coap_address_t *local_if, const coap_address_t *server, coap_proto_t proto, coap_dtls_pki_t *setup_data)
Creates a new client session to the designated server with PKI credentials.
coap_session_t * coap_new_client_session_lkd(coap_context_t *ctx, const coap_address_t *local_if, const coap_address_t *server, coap_proto_t proto)
Creates a new client session to the designated server.
coap_fixed_point_t coap_add_fixed_fixed(coap_fixed_point_t fp1, coap_fixed_point_t fp2)
coap_tick_t coap_get_non_timeout_random_ticks(coap_session_t *session)
int coap_session_refresh_psk_key(coap_session_t *session, const coap_bin_const_t *psk_key)
Refresh the session's current pre-shared key (PSK).
void coap_session_connected(coap_session_t *session)
Notify session that it has just connected or reconnected.
void coap_session_failed(coap_session_t *session)
Session has failed due to a socket error.
coap_fixed_point_t coap_multi_fixed_fixed(coap_fixed_point_t fp1, coap_fixed_point_t fp2)
ssize_t coap_session_send_pdu(coap_session_t *session, coap_pdu_t *pdu)
Send a pdu according to the session's protocol.
Definition coap_net.c:1110
size_t coap_session_max_pdu_size_lkd(const coap_session_t *session)
Get maximum acceptable PDU size.
coap_mid_t coap_session_send_ping_lkd(coap_session_t *session)
Send a ping message for the session.
coap_fixed_point_t coap_div_fixed_uint(coap_fixed_point_t fp1, uint32_t u2)
void coap_session_free(coap_session_t *session)
void coap_session_mfree(coap_session_t *session)
void coap_session_release_lkd(coap_session_t *session)
Decrement reference counter on a session.
int coap_session_refresh_psk_identity(coap_session_t *session, const coap_bin_const_t *psk_identity)
Refresh the session's current pre-shared identity (PSK).
int coap_session_set_type_client_lkd(coap_session_t *session, int report_changed)
Set the session type to client.
coap_fixed_point_t coap_get_non_timeout_random(coap_session_t *session)
COAP_OSCORE_B_2_STEP
coap_session_t * coap_session_reference_lkd(coap_session_t *session)
Increment reference counter on a session.
void * coap_session_set_app_data2_lkd(coap_session_t *session, void *data, coap_app_data_free_callback_t callback)
Stores data with the given session, returning the previously stored value or NULL.
coap_fixed_point_t coap_multi_fixed_uint(coap_fixed_point_t fp1, uint32_t u2)
void coap_session_disconnected_lkd(coap_session_t *session, coap_nack_reason_t reason)
Notify session that it has failed.
coap_endpoint_t * coap_new_endpoint_lkd(coap_context_t *context, const coap_address_t *listen_addr, coap_proto_t proto)
Create a new endpoint for communicating with peers.
coap_session_t * coap_new_server_session(coap_context_t *ctx, coap_endpoint_t *ep, void *extra)
Creates a new server session for the specified endpoint.
@ COAP_EXT_T_NOT_CHECKED
Not checked.
@ COAP_EXT_T_CHECKING
Token size check request sent.
@ COAP_EXT_T_CHECKED
Token size valid.
@ COAP_OSCORE_B_2_NONE
@ COAP_OSCORE_B_2_STEP_3
@ COAP_OSCORE_B_2_STEP_1
@ COAP_OSCORE_B_2_STEP_4
@ COAP_OSCORE_B_2_STEP_5
@ COAP_OSCORE_B_2_STEP_2
coap_session_type_t
coap_session_type_t values
coap_session_state_t
coap_session_state_t values
void(* coap_app_data_free_callback_t)(void *data)
Callback to free off the app data when the entry is being deleted / freed off.
Only used for servers for hashing incoming packets.
uint16_t lport
local port
coap_address_t remote
remote address and port
coap_proto_t proto
CoAP protocol.
Multi-purpose address abstraction.
CoAP binary data definition with const data.
Definition coap_str.h:67
The CoAP stack's global state is stored in a coap_context_t object.
The structure used for defining the Client PSK setup data to be used.
Definition coap_dtls.h:414
The structure used for defining the PKI setup data to be used.
Definition coap_dtls.h:316
Abstraction of virtual endpoint that can be attached to coap_context_t.
void * app_data
application-specific data
coap_context_t * context
endpoint's context
uint16_t default_mtu
default mtu for this interface
coap_session_t * sessions
hash table or list of active sessions
coap_app_data_free_callback_t app_cb
call-back to release app_data
struct coap_endpoint_t * next
coap_address_t bind_addr
local interface address
coap_socket_t sock
socket object for the interface, if any
coap_proto_t proto
protocol used on this interface
Abstraction of a fixed point number that can be used where necessary instead of a float.
Structure to hold large body (many blocks) client receive information.
Structure to hold large body (many blocks) server receive information.
Structure to hold large body (many blocks) transmission information.
structure for CoAP PDUs
Queue entry.
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...
coap_lg_xmit_t * lg_xmit
list of large transmissions
volatile uint8_t max_token_checked
Check for max token size coap_ext_token_check_t.
uint8_t csm_not_seen
Set if timeout waiting for CSM.
unsigned int dtls_timeout_count
dtls setup retry counter
unsigned ref_subscriptions
reference count of current subscriptions
coap_bin_const_t * psk_key
If client, this field contains the current pre-shared key for server; When this field is NULL,...
coap_endpoint_t * endpoint
session's endpoint
uint32_t block_mode
Zero or more COAP_BLOCK_ or'd options.
coap_app_data_free_callback_t app_cb
call-back to release app_data
uint8_t doing_first
Set if doing client's first request.
uint8_t delay_recursive
Set if in coap_client_delay_first()
coap_socket_t sock
socket object for the session, if any
coap_pdu_t * partial_pdu
incomplete incoming pdu
uint32_t max_token_size
Largest token size supported RFC8974.
uint16_t nstart
maximum concurrent confirmable xmits (default 1)
coap_bin_const_t * psk_identity
If client, this field contains the current identity for server; When this field is NULL,...
coap_session_state_t state
current state of relationship with peer
uint8_t csm_bert_rem_support
CSM TCP BERT blocks supported (remote)
uint8_t client_initiated
Session initially started as a client.
uint64_t tx_token
Next token number to use.
coap_digest_t cached_pdu_cksum
Checksum of last CON request PDU.
coap_bin_const_t * client_cid
Contains client CID or NULL.
coap_mid_t remote_test_mid
mid used for checking remote support
coap_address_t local_reconnect
local address to initiate reconnect from
uint8_t read_header[8]
storage space for header of incoming message header
uint8_t csm_bert_loc_support
CSM TCP BERT blocks supported (local)
unsigned ref_proxy_subs
reference count of current proxy subscriptions
coap_addr_tuple_t addr_info
remote/local address info
coap_proto_t proto
protocol used
uint16_t tx_mid
the last message id that was used in this session
uint8_t is_dtls13
Set if session is DTLS1.3.
unsigned ref
reference count from queues
size_t csm_rcv_mtu
CSM mtu (rcv)
coap_response_t last_con_handler_res
The result of calling the response handler of the last CON.
coap_bin_const_t * psk_hint
If client, this field contains the server provided identity hint.
coap_bin_const_t * last_token
uint8_t doing_send_recv
Set if coap_send_recv() active.
coap_dtls_cpsk_t cpsk_setup_data
client provided PSK initial setup data
size_t mtu
path or CSM mtu (xmt)
uint8_t negotiated_cid
Set for a client if CID negotiated.
uint8_t no_observe_cancel
Set if do not cancel observe on session close.
size_t partial_read
if > 0 indicates number of bytes already read for an incoming message
int dtls_event
Tracking any (D)TLS events on this session.
void * tls
security parameters
uint16_t max_retransmit
maximum re-transmit count (default 4)
uint8_t csm_block_supported
CSM TCP blocks supported.
coap_fixed_point_t ack_random_factor
ack random factor backoff (default 1.5)
uint8_t proxy_session
Set if this is an ongoing proxy session.
uint8_t con_active
Active CON request sent.
coap_queue_t * delayqueue
list of delayed messages waiting to be sent
size_t tls_overhead
overhead of TLS layer
void * app_data
application-specific data
uint32_t tx_rtag
Next Request-Tag number to use.
coap_mid_t last_ping_mid
the last keepalive message id that was used in this session
coap_lg_srcv_t * lg_srcv
Server list of expected large receives.
coap_bin_const_t * req_token
Token in request pdu of coap_send_recv()
coap_pdu_t * resp_pdu
PDU returned in coap_send_recv() call.
coap_lg_crcv_t * lg_crcv
Client list of expected large receives.
coap_fixed_point_t ack_timeout
timeout waiting for ack (default 2.0 secs)
coap_fixed_point_t default_leisure
Mcast leisure time (default 5.0 secs)
coap_mid_t last_con_mid
The last CON mid that has been been processed.
coap_session_type_t type
client or server side socket
uint32_t probing_rate
Max transfer wait when remote is not respoding (default 1 byte/sec)
coap_mid_t last_ack_mid
The last ACK mid that has been been processed.
uint8_t retry_count
Number of retries trying to re-connect.
coap_context_t * context
session's context
uint8_t session_failed
Set if session failed and can try re-connect.
size_t partial_write
if > 0 indicates number of bytes already written from the pdu at the head of sendqueue
coap_addr_hash_t addr_hash
Address hash for server incoming packets.
coap_pdu_t * cached_pdu
Cached copy of last ACK response PDU.
int ifindex
interface index
coap_bin_const_t * echo
last token used to make a request
CoAP string data definition with const data.
Definition coap_str.h:49
WebSockets session state.