libcoap 4.3.5-develop-783b531
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
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
50
59
68
69#ifndef COAP_MAX_PING_FAILURES
70#define COAP_MAX_PING_FAILURES 3
71#endif
72
82 unsigned ref;
83 size_t tls_overhead;
84 size_t mtu;
85 size_t csm_rcv_mtu;
87 UT_hash_handle hh;
89#if COAP_CLIENT_SUPPORT
90 coap_address_t local_reconnect;
91#endif /* COAP_CLIENT_SUPPORT */
92 int ifindex;
93#if COAP_SERVER_SUPPORT
94 unsigned ref_subscriptions;
95 unsigned ref_proxy_subs;
96#endif /* COAP_SERVER_SUPPORT */
99#if COAP_SERVER_SUPPORT
100 coap_endpoint_t *endpoint;
101#endif /* COAP_SERVER_SUPPORT */
103 void *tls;
104 uint16_t tx_mid;
106 uint8_t con_active;
113#if COAP_CLIENT_SUPPORT
114 coap_lg_crcv_t *lg_crcv;
115#endif /* COAP_CLIENT_SUPPORT */
116#if COAP_SERVER_SUPPORT
117 coap_lg_srcv_t *lg_srcv;
118#endif /* COAP_SERVER_SUPPORT */
122 uint8_t read_header[8];
161 void *app_data;
167 uint16_t max_retransmit;
169 uint16_t nstart;
173 uint32_t probing_rate;
175#if COAP_Q_BLOCK_SUPPORT
176 uint16_t max_payloads;
178 uint16_t non_max_retransmit;
180 coap_fixed_point_t non_timeout;
182 coap_fixed_point_t non_receive_timeout;
185 coap_fixed_point_t non_probing_wait_base;
188 coap_fixed_point_t non_partial_timeout;
191#endif /* COAP_Q_BLOCK_SUPPORT */
192 unsigned int dtls_timeout_count;
195 uint32_t tx_rtag;
196 uint32_t block_mode;
199#if COAP_CLIENT_SUPPORT
200 uint8_t doing_first;
201#endif /* COAP_CLIENT_SUPPORT */
206 uint8_t csm_not_seen;
207#if COAP_OSCORE_SUPPORT
208 uint8_t oscore_encryption;
209 COAP_OSCORE_B_2_STEP b_2_step;
210 oscore_recipient_ctx_t *recipient_ctx;
212 oscore_association_t *associations;
214 uint64_t oscore_r2;
215#endif /* COAP_OSCORE_SUPPORT */
216#if COAP_WS_SUPPORT
217 coap_ws_state_t *ws;
218 coap_str_const_t *ws_host;
219#endif /* COAP_WS_SUPPORT */
220#if COAP_OSCORE_SUPPORT
221 uint8_t doing_b_1_2;
222#endif /* COAP_OSCORE_SUPPORT */
223 volatile uint8_t max_token_checked;
225 uint8_t is_dtls13;
226#if COAP_CLIENT_SUPPORT
227 uint8_t negotiated_cid;
228 uint8_t doing_send_recv;
229 uint8_t session_failed;
230 uint8_t client_initiated;
231 uint8_t retry_count;
232 coap_tick_t doing_first_timeout;
233 coap_pdu_t *doing_first_pdu;
234#endif /* COAP_CLIENT_SUPPORT */
238 uint32_t max_token_size;
239 uint64_t tx_token;
248#if COAP_SERVER_SUPPORT
249 coap_bin_const_t *client_cid;
250 coap_pdu_t *cached_pdu;
251 coap_digest_t cached_pdu_cksum;
252#endif /* COAP_SERVER_SUPPORT */
253#if COAP_CLIENT_SUPPORT
254 coap_pdu_t *resp_pdu;
255 coap_bin_const_t *req_token;
256#endif /* COAP_CLIENT_SUPPORT */
257#if COAP_PROXY_SUPPORT
258 coap_proxy_entry_t *proxy_entry;
259 coap_proxy_server_list_t *server_list;
260#endif /* COAP_PROXY_SUPPORT */
264 uint32_t ping_failed;
265};
266
267#if COAP_SERVER_SUPPORT
272struct coap_endpoint_t {
273 struct coap_endpoint_t *next;
274 coap_context_t *context;
275 coap_proto_t proto;
276 uint16_t default_mtu;
277 coap_socket_t sock;
279 coap_address_t bind_addr;
280 coap_session_t *sessions;
282 void *app_data;
284};
285#endif /* COAP_SERVER_SUPPORT */
286
289
291 uint32_t u2);
292
295
297 uint32_t u2);
298
300 uint32_t u2);
301
303
305
307
308
315
322
333 coap_nack_reason_t reason);
334
344
356 const coap_bin_const_t *psk_hint);
357
369 const coap_bin_const_t *psk_key);
370
382 const coap_bin_const_t *psk_identity);
383
384#if COAP_SERVER_SUPPORT
394coap_session_t *coap_new_server_session(coap_context_t *ctx,
395 coap_endpoint_t *ep,
396 void *extra);
397#endif /* COAP_SERVER_SUPPORT */
398
408
418
436int coap_session_set_type_client_lkd(coap_session_t *session, int report_changed);
437
455
466
478ssize_t coap_session_send_pdu(coap_session_t *session, coap_pdu_t *pdu);
479
481 coap_queue_t *node);
482
483#if COAP_SERVER_SUPPORT
493coap_session_t *coap_endpoint_get_session(coap_endpoint_t *endpoint,
494 const coap_packet_t *packet, coap_tick_t now);
495
510coap_endpoint_t *coap_new_endpoint_lkd(coap_context_t *context, const coap_address_t *listen_addr,
511 coap_proto_t proto);
512
520void coap_free_endpoint_lkd(coap_endpoint_t *endpoint);
521
522#endif /* COAP_SERVER_SUPPORT */
523
530size_t coap_session_max_pdu_rcv_size(const coap_session_t *session);
531
541size_t coap_session_max_pdu_size_lkd(const coap_session_t *session);
542
573 const coap_address_t *local_if,
574 const coap_address_t *server,
575 coap_proto_t proto,
576 void *app_data,
578 coap_str_const_t *ws_host
579 );
580
613 const coap_address_t *local_if,
614 const coap_address_t *server,
615 coap_proto_t proto,
616 coap_dtls_pki_t *setup_data,
617 void *app_data,
619 coap_str_const_t *ws_host
620 );
621
642 const coap_address_t *local_if,
643 const coap_address_t *server,
644 coap_proto_t proto,
645 const char *identity,
646 const uint8_t *key,
647 unsigned key_len
648 );
649
682 const coap_address_t *local_if,
683 const coap_address_t *server,
684 coap_proto_t proto,
685 coap_dtls_cpsk_t *setup_data,
686 void *app_data,
688 coap_str_const_t *ws_host
689 );
690
698
711 coap_tick_t now);
712
722
741void *coap_session_set_app_data2_lkd(coap_session_t *session, void *data,
743
764
765void coap_session_free(coap_session_t *session);
767
769
771
772void coap_handle_nack(coap_session_t *session,
773 coap_pdu_t *sent,
774 const coap_nack_reason_t reason,
775 const coap_mid_t mid);
776
783
790
791#define COAP_SESSION_REF(s) ((s)->ref
792
793/* RFC7252 */
794#define COAP_ACK_TIMEOUT(s) ((s)->ack_timeout)
795#define COAP_ACK_RANDOM_FACTOR(s) ((s)->ack_random_factor)
796#define COAP_MAX_RETRANSMIT(s) ((s)->max_retransmit)
797#define COAP_NSTART(s) ((s)->nstart)
798#define COAP_DEFAULT_LEISURE(s) ((s)->default_leisure)
799#define COAP_PROBING_RATE(s) ((s)->probing_rate)
800/* RFC9177 */
801#define COAP_MAX_PAYLOADS(s) ((s)->max_payloads)
802#define COAP_NON_MAX_RETRANSMIT(s) ((s)->non_max_retransmit)
803#define COAP_NON_TIMEOUT(s) ((s)->non_timeout)
804#define COAP_NON_TIMEOUT_TICKS(s) \
805 (COAP_NON_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
806 COAP_NON_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
807#define COAP_NON_RECEIVE_TIMEOUT(s) ((s)->non_receive_timeout)
808#define COAP_NON_PROBING_WAIT_BASE(s) ((s)->non_probing_wait_base)
809#define COAP_NON_PARTIAL_TIMEOUT(s) ((s)->non_partial_timeout)
810
817#define COAP_DEFAULT_LEISURE_TICKS(s) \
818 (COAP_DEFAULT_LEISURE(s).integer_part * COAP_TICKS_PER_SECOND + \
819 COAP_DEFAULT_LEISURE(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
826#define COAP_MAX_TRANSMIT_SPAN(s) \
827 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part) * \
828 ((1 << ((s)->max_retransmit)) -1) * \
829 ((s)->ack_random_factor.integer_part * 1000 + \
830 (s)->ack_random_factor.fractional_part) \
831 / 1000000)
832
839#define COAP_MAX_TRANSMIT_WAIT(s) \
840 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part) * \
841 ((1 << ((s)->max_retransmit + 1)) -1) * \
842 ((s)->ack_random_factor.integer_part * 1000 + \
843 (s)->ack_random_factor.fractional_part) \
844 / 1000000)
845
846#define COAP_MAX_TRANSMIT_WAIT_TICKS(s) \
847 (COAP_MAX_TRANSMIT_WAIT(s) * COAP_TICKS_PER_SECOND)
848
855#define COAP_PROCESSING_DELAY(s) \
856 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part + \
857 500) / 1000)
858
865#define COAP_MAX_RTT(s) \
866 ((2 * COAP_DEFAULT_MAX_LATENCY) + COAP_PROCESSING_DELAY(s))
867
874#define COAP_EXCHANGE_LIFETIME(s) \
875 (COAP_MAX_TRANSMIT_SPAN(s) + (2 * COAP_DEFAULT_MAX_LATENCY) + \
876 COAP_PROCESSING_DELAY(s))
877
884#define COAP_NON_LIFETIME(s) \
885 (COAP_MAX_TRANSMIT_SPAN(s) + COAP_DEFAULT_MAX_LATENCY)
886
893#define COAP_NON_RECEIVE_TIMEOUT_TICKS(s) ( \
894 COAP_NON_RECEIVE_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
895 COAP_NON_RECEIVE_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
896
905#define COAP_NON_PROBING_WAIT(s) \
906 coap_add_fixed_fixed(COAP_NON_PROBING_WAIT_BASE(s), \
907 COAP_NON_TIMEOUT_RANDOM(s))
908
909#define COAP_NON_PROBING_WAIT_TICKS(s) \
910 (COAP_NON_PROBING_WAIT(s).integer_part * COAP_TICKS_PER_SECOND + \
911 COAP_NON_PROBING_WAIT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
912
919#define COAP_NON_PARTIAL_TIMEOUT_TICKS(s) \
920 (COAP_NON_PARTIAL_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
921 COAP_NON_PARTIAL_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
922
929#define COAP_NON_TIMEOUT_RANDOM(s) \
930 coap_get_non_timeout_random(s)
931
934#define SESSIONS_ADD(e, obj) \
935 HASH_ADD(hh, (e), addr_hash, sizeof((obj)->addr_hash), (obj))
936
937#define SESSIONS_DELETE(e, obj) \
938 HASH_DELETE(hh, (e), (obj))
939
940#define SESSIONS_ITER(e, el, rtmp) \
941 HASH_ITER(hh, (e), el, rtmp)
942
943#define SESSIONS_ITER_SAFE(e, el, rtmp) \
944 for ((el) = (e); (el) && ((rtmp) = (el)->hh.next, 1); (el) = (rtmp))
945
946#define SESSIONS_FIND(e, k, res) { \
947 HASH_FIND(hh, (e), &(k), sizeof(k), (res)); \
948 }
949
950#ifdef __cplusplus
951}
952#endif
953
954#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:267
coap_proto_t
CoAP protocol types Note: coap_layers_coap[] needs updating if extended.
Definition coap_pdu.h:317
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:2574
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:1135
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:414
The structure used for defining the PKI setup data to be used.
Definition coap_dtls.h:316
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)
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_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.
coap_context_t * context
session's context
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.