libcoap 4.3.5-develop-45ace06
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-2026 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
17
18#ifndef COAP_SESSION_INTERNAL_H_
19#define COAP_SESSION_INTERNAL_H_
20
21#include "coap_ws_internal.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27#ifndef COAP_DEFAULT_SESSION_TIMEOUT
28#define COAP_DEFAULT_SESSION_TIMEOUT 300
29#endif /* !COAP_DEFAULT_SESSION_TIMEOUT */
30
31#define COAP_PARTIAL_SESSION_TIMEOUT_TICKS (30 * COAP_TICKS_PER_SECOND)
32#define COAP_DEFAULT_MAX_HANDSHAKE_SESSIONS 100
33
40
50
59
68
69#ifndef COAP_MAX_PING_FAILURES
70#define COAP_MAX_PING_FAILURES 3
71#endif
72
73/*
74 * Upper bound for PDUs queued on session->doing_first_pdu while the client
75 * waits for the first exchange (OSCORE confirmation, Extended Token probe,
76 * Q-Block probe, etc.). Override before including libcoap headers if needed.
77 */
78#ifndef COAP_DOING_FIRST_MAX_QUEUE
79#define COAP_DOING_FIRST_MAX_QUEUE 4
80#endif /* COAP_DOING_FIRST_MAX_QUEUE */
81
91 unsigned ref;
92 size_t tls_overhead;
93 size_t mtu;
94 size_t csm_rcv_mtu;
96 UT_hash_handle hh;
98#if COAP_CLIENT_SUPPORT
99 coap_address_t local_reconnect;
100#endif /* COAP_CLIENT_SUPPORT */
102#if COAP_SERVER_SUPPORT
103 unsigned ref_subscriptions;
104 unsigned ref_proxy_subs;
105#endif /* COAP_SERVER_SUPPORT */
108#if COAP_SERVER_SUPPORT
109 coap_endpoint_t *endpoint;
110#endif /* COAP_SERVER_SUPPORT */
112 void *tls;
113 uint16_t tx_mid;
115 uint8_t con_active;
123#if COAP_CLIENT_SUPPORT
124 coap_lg_crcv_t *lg_crcv;
125#endif /* COAP_CLIENT_SUPPORT */
126#if COAP_SERVER_SUPPORT
127 coap_lg_srcv_t *lg_srcv;
128#endif /* COAP_SERVER_SUPPORT */
132 uint8_t read_header[8];
171 void *app_data;
177 uint16_t max_retransmit;
179 uint16_t nstart;
183 uint32_t probing_rate;
185#if COAP_Q_BLOCK_SUPPORT
186 uint16_t max_payloads;
188 uint16_t non_max_retransmit;
190 coap_fixed_point_t non_timeout;
192 coap_fixed_point_t non_receive_timeout;
195 coap_fixed_point_t non_probing_wait_base;
198 coap_fixed_point_t non_partial_timeout;
201#endif /* COAP_Q_BLOCK_SUPPORT */
202 unsigned int dtls_timeout_count;
205 uint32_t tx_rtag;
206 uint32_t block_mode;
209#if COAP_CLIENT_SUPPORT
210 uint8_t doing_first;
211#endif /* COAP_CLIENT_SUPPORT */
216 uint8_t csm_not_seen;
217#if COAP_OSCORE_SUPPORT
218 uint8_t oscore_encryption;
219 COAP_OSCORE_B_2_STEP b_2_step;
220 oscore_recipient_ctx_t *recipient_ctx;
222 oscore_association_t *associations;
224 uint64_t oscore_r2;
225 coap_str_const_t *b_2_retransmit_token;
226#endif /* COAP_OSCORE_SUPPORT */
227#if COAP_WS_SUPPORT
228 coap_ws_state_t *ws;
229 coap_str_const_t *ws_host;
230#endif /* COAP_WS_SUPPORT */
231#if COAP_OSCORE_SUPPORT
232 uint8_t doing_b_1_2;
233#endif /* COAP_OSCORE_SUPPORT */
234 volatile uint8_t max_token_checked;
236 uint8_t is_dtls13;
237#if COAP_CLIENT_SUPPORT
238 uint8_t negotiated_cid;
239 uint8_t doing_send_recv;
240 uint8_t session_failed;
241 uint8_t client_initiated;
242 uint8_t retry_count;
243 coap_tick_t doing_first_timeout;
244 coap_pdu_t *doing_first_pdu;
245#endif /* COAP_CLIENT_SUPPORT */
249 uint32_t max_token_size;
250 uint64_t tx_token;
257#if COAP_SERVER_SUPPORT
258 coap_bin_const_t *client_cid;
259 coap_pdu_t *last_resp_pdu;
260#endif /* COAP_SERVER_SUPPORT */
261#if COAP_CLIENT_SUPPORT
262 coap_pdu_t *resp_pdu;
263 coap_bin_const_t *req_token;
264#endif /* COAP_CLIENT_SUPPORT */
265#if COAP_PROXY_SUPPORT
266 coap_proxy_entry_t *proxy_entry;
267 coap_proxy_server_list_t *server_list;
268#endif /* COAP_PROXY_SUPPORT */
272 uint32_t ping_failed;
273#ifdef HAVE_LINUX_ERRQUEUE_H
274 coap_str_const_t *last_data_write;
276#endif /* HAVE_LINUX_ERRQUEUE_H */
277};
278
279#if COAP_SERVER_SUPPORT
284struct coap_endpoint_t {
285 struct coap_endpoint_t *next;
286 coap_context_t *context;
287 coap_proto_t proto;
288 uint16_t default_mtu;
289 coap_socket_t sock;
291 coap_address_t bind_addr;
292 coap_session_t *sessions;
293
294 void *app_data;
296};
297#endif /* COAP_SERVER_SUPPORT */
298
301
303 uint32_t u2);
304
307
309 uint32_t u2);
310
312 uint32_t u2);
313
315
317
319
320
327
334
345 coap_nack_reason_t reason);
346
356
368 const coap_bin_const_t *psk_hint);
369
381 const coap_bin_const_t *psk_key);
382
394 const coap_bin_const_t *psk_identity);
395
396#if COAP_SERVER_SUPPORT
406coap_session_t *coap_new_server_session(coap_context_t *ctx,
407 coap_endpoint_t *ep,
408 void *extra);
409#endif /* COAP_SERVER_SUPPORT */
410
420
430
448int coap_session_set_type_client_lkd(coap_session_t *session, int report_changed);
449
467
478
490ssize_t coap_session_send_pdu(coap_session_t *session, coap_pdu_t *pdu);
491
493 coap_queue_t *node);
494
495#if COAP_SERVER_SUPPORT
505coap_session_t *coap_endpoint_get_session(coap_endpoint_t *endpoint,
506 const coap_packet_t *packet, coap_tick_t now);
507
522coap_endpoint_t *coap_new_endpoint_lkd(coap_context_t *context, const coap_address_t *listen_addr,
523 coap_proto_t proto);
524
532void coap_free_endpoint_lkd(coap_endpoint_t *endpoint);
533
534#endif /* COAP_SERVER_SUPPORT */
535
542size_t coap_session_max_pdu_rcv_size(const coap_session_t *session);
543
553size_t coap_session_max_pdu_size_lkd(const coap_session_t *session);
554
585 const coap_address_t *local_if,
586 const coap_address_t *server,
587 coap_proto_t proto,
588 void *app_data,
590 coap_str_const_t *ws_host
591 );
592
625 const coap_address_t *local_if,
626 const coap_address_t *server,
627 coap_proto_t proto,
628 coap_dtls_pki_t *setup_data,
629 void *app_data,
631 coap_str_const_t *ws_host
632 );
633
654 const coap_address_t *local_if,
655 const coap_address_t *server,
656 coap_proto_t proto,
657 const char *identity,
658 const uint8_t *key,
659 unsigned key_len
660 );
661
694 const coap_address_t *local_if,
695 const coap_address_t *server,
696 coap_proto_t proto,
697 coap_dtls_cpsk_t *setup_data,
698 void *app_data,
700 coap_str_const_t *ws_host
701 );
702
710
723 coap_tick_t now);
724
734
753void *coap_session_set_app_data2_lkd(coap_session_t *session, void *data,
755
776
777void coap_session_free(coap_session_t *session);
779
781
783
784void coap_handle_nack(coap_session_t *session,
785 coap_pdu_t *sent,
786 const coap_nack_reason_t reason,
787 const coap_mid_t mid);
788
795
802
803#define COAP_SESSION_REF(s) ((s)->ref
804
805/* RFC7252 */
806#define COAP_ACK_TIMEOUT(s) ((s)->ack_timeout)
807#define COAP_ACK_RANDOM_FACTOR(s) ((s)->ack_random_factor)
808#define COAP_MAX_RETRANSMIT(s) ((s)->max_retransmit)
809#define COAP_NSTART(s) ((s)->nstart)
810#define COAP_DEFAULT_LEISURE(s) ((s)->default_leisure)
811#define COAP_PROBING_RATE(s) ((s)->probing_rate)
812/* RFC9177 */
813#define COAP_MAX_PAYLOADS(s) ((s)->max_payloads)
814#define COAP_NON_MAX_RETRANSMIT(s) ((s)->non_max_retransmit)
815#define COAP_NON_TIMEOUT(s) ((s)->non_timeout)
816#define COAP_NON_TIMEOUT_TICKS(s) \
817 (COAP_NON_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
818 COAP_NON_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
819#define COAP_NON_RECEIVE_TIMEOUT(s) ((s)->non_receive_timeout)
820#define COAP_NON_PROBING_WAIT_BASE(s) ((s)->non_probing_wait_base)
821#define COAP_NON_PARTIAL_TIMEOUT(s) ((s)->non_partial_timeout)
822
829#define COAP_DEFAULT_LEISURE_TICKS(s) \
830 (COAP_DEFAULT_LEISURE(s).integer_part * COAP_TICKS_PER_SECOND + \
831 COAP_DEFAULT_LEISURE(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
832
838#define COAP_MAX_TRANSMIT_SPAN(s) \
839 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part) * \
840 ((1 << ((s)->max_retransmit)) -1) * \
841 ((s)->ack_random_factor.integer_part * 1000 + \
842 (s)->ack_random_factor.fractional_part) \
843 / 1000000)
844
851#define COAP_MAX_TRANSMIT_WAIT(s) \
852 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part) * \
853 ((1 << ((s)->max_retransmit + 1)) -1) * \
854 ((s)->ack_random_factor.integer_part * 1000 + \
855 (s)->ack_random_factor.fractional_part) \
856 / 1000000)
857
858#define COAP_MAX_TRANSMIT_WAIT_TICKS(s) \
859 (COAP_MAX_TRANSMIT_WAIT(s) * COAP_TICKS_PER_SECOND)
860
867#define COAP_PROCESSING_DELAY(s) \
868 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part + \
869 500) / 1000)
870
877#define COAP_MAX_RTT(s) \
878 ((2 * COAP_DEFAULT_MAX_LATENCY) + COAP_PROCESSING_DELAY(s))
879
886#define COAP_EXCHANGE_LIFETIME(s) \
887 (COAP_MAX_TRANSMIT_SPAN(s) + (2 * COAP_DEFAULT_MAX_LATENCY) + \
888 COAP_PROCESSING_DELAY(s))
889
896#define COAP_NON_LIFETIME(s) \
897 (COAP_MAX_TRANSMIT_SPAN(s) + COAP_DEFAULT_MAX_LATENCY)
898
905#define COAP_NON_RECEIVE_TIMEOUT_TICKS(s) ( \
906 COAP_NON_RECEIVE_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
907 COAP_NON_RECEIVE_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
908
917#define COAP_NON_PROBING_WAIT(s) \
918 coap_add_fixed_fixed(COAP_NON_PROBING_WAIT_BASE(s), \
919 COAP_NON_TIMEOUT_RANDOM(s))
920
921#define COAP_NON_PROBING_WAIT_TICKS(s) \
922 (COAP_NON_PROBING_WAIT(s).integer_part * COAP_TICKS_PER_SECOND + \
923 COAP_NON_PROBING_WAIT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
924
931#define COAP_NON_PARTIAL_TIMEOUT_TICKS(s) \
932 (COAP_NON_PARTIAL_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
933 COAP_NON_PARTIAL_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
934
941#define COAP_NON_TIMEOUT_RANDOM(s) \
942 coap_get_non_timeout_random(s)
943
945
946#define SESSIONS_ADD(e, obj) \
947 HASH_ADD(hh, (e), addr_hash, sizeof((obj)->addr_hash), (obj))
948
949#define SESSIONS_DELETE(e, obj) \
950 HASH_DELETE(hh, (e), (obj))
951
952#define SESSIONS_ITER(e, el, rtmp) \
953 HASH_ITER(hh, (e), el, rtmp)
954
955#define SESSIONS_ITER_SAFE(e, el, rtmp) \
956 for ((el) = (e); (el) && ((rtmp) = (el)->hh.next, 1); (el) = (rtmp))
957
958#define SESSIONS_FIND(e, k, res) { \
959 HASH_FIND(hh, (e), &(k), sizeof(k), (res)); \
960 }
961
962#ifdef __cplusplus
963}
964#endif
965
966#endif /* COAP_SESSION_INTERNAL_H_ */
struct coap_lg_crcv_t coap_lg_crcv_t
struct coap_endpoint_t coap_endpoint_t
struct coap_proxy_entry_t coap_proxy_entry_t
Proxy information.
struct coap_lg_srcv_t coap_lg_srcv_t
coap_nack_reason_t
Definition coap_io.h:64
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:149
coap_response_t
Definition coap_net.h:51
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:184
coap_proto_t
CoAP protocol types Note: coap_layers_coap[] needs updating if extended.
Definition coap_pdu.h:234
coap_session_t * coap_new_client_session_pki3_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, void *app_data, coap_app_data_free_callback_t callback, coap_str_const_t *ws_host)
Creates a new client session to the designated server, with PKI credentials along with app_data infor...
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_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_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:2709
coap_session_t * coap_new_client_session_psk3_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, void *app_data, coap_app_data_free_callback_t callback, coap_str_const_t *ws_host)
Creates a new client session to the designated server, with PSK credentials along with app_data infor...
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_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:1267
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).
coap_session_t * coap_new_client_session3_lkd(coap_context_t *ctx, const coap_address_t *local_if, const coap_address_t *server, coap_proto_t proto, void *app_data, coap_app_data_free_callback_t callback, coap_str_const_t *ws_host)
Creates a new client session to the designated server, with PSK credentials along with app_data infor...
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_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:65
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:418
The structure used for defining the PKI setup data to be used.
Definition coap_dtls.h:317
Abstraction of a fixed point number that can be used where necessary instead of a float.
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
coap_bin_const_t * psk_key
If client, this field contains the current pre-shared key for server; When this field is NULL,...
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 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.
uint32_t ping_failed
Ping failure count.
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).
coap_mid_t last_resp_mid
The last response mid that has been been processed.
uint64_t tx_token
Next token number to use.
uint8_t is_rate_limiting
Currently NON rate limiting.
coap_mid_t remote_test_mid
mid used for checking remote support
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).
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_tick_t last_tx
Last time a ratelimited packet is sent.
coap_bin_const_t * psk_hint
If client, this field contains the server provided identity hint.
coap_bin_const_t * last_token
uint8_t no_path_abbrev
Set is remote does not support Uri-Path-Abbrev.
coap_dtls_cpsk_t cpsk_setup_data
client provided PSK initial setup data
size_t mtu
path or CSM mtu (xmt)
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_fixed_point_t ack_timeout
timeout waiting for ack (default 2.0 secs)
uint64_t rl_ticks_per_packet
If not 0, rate limit NON to ticks per packet.
coap_fixed_point_t default_leisure
Mcast leisure time (default 5.0 secs).
coap_session_type_t type
client or server side socket
uint32_t probing_rate
Max transfer wait when remote is not responding (default 1 byte/sec).
coap_context_t * context
session's context
coap_queue_t * delayqueue_tail
tail of delayqueue for O(1) append
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.
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:47
WebSockets session state.