libcoap 4.3.5-develop-bd47692
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 coap_str_const_t *b_2_retransmit_token;
216#endif /* COAP_OSCORE_SUPPORT */
217#if COAP_WS_SUPPORT
218 coap_ws_state_t *ws;
219 coap_str_const_t *ws_host;
220#endif /* COAP_WS_SUPPORT */
221#if COAP_OSCORE_SUPPORT
222 uint8_t doing_b_1_2;
223#endif /* COAP_OSCORE_SUPPORT */
224 volatile uint8_t max_token_checked;
226 uint8_t is_dtls13;
227#if COAP_CLIENT_SUPPORT
228 uint8_t negotiated_cid;
229 uint8_t doing_send_recv;
230 uint8_t session_failed;
231 uint8_t client_initiated;
232 uint8_t retry_count;
233 coap_tick_t doing_first_timeout;
234 coap_pdu_t *doing_first_pdu;
235#endif /* COAP_CLIENT_SUPPORT */
239 uint32_t max_token_size;
240 uint64_t tx_token;
249#if COAP_SERVER_SUPPORT
250 coap_bin_const_t *client_cid;
251 coap_pdu_t *cached_pdu;
252 coap_digest_t cached_pdu_cksum;
253#endif /* COAP_SERVER_SUPPORT */
254#if COAP_CLIENT_SUPPORT
255 coap_pdu_t *resp_pdu;
256 coap_bin_const_t *req_token;
257#endif /* COAP_CLIENT_SUPPORT */
258#if COAP_PROXY_SUPPORT
259 coap_proxy_entry_t *proxy_entry;
260 coap_proxy_server_list_t *server_list;
261#endif /* COAP_PROXY_SUPPORT */
265 uint32_t ping_failed;
266};
267
268#if COAP_SERVER_SUPPORT
273struct coap_endpoint_t {
274 struct coap_endpoint_t *next;
275 coap_context_t *context;
276 coap_proto_t proto;
277 uint16_t default_mtu;
278 coap_socket_t sock;
280 coap_address_t bind_addr;
281 coap_session_t *sessions;
283 void *app_data;
285};
286#endif /* COAP_SERVER_SUPPORT */
287
290
292 uint32_t u2);
293
296
298 uint32_t u2);
299
301 uint32_t u2);
302
304
306
308
309
316
323
334 coap_nack_reason_t reason);
335
345
357 const coap_bin_const_t *psk_hint);
358
370 const coap_bin_const_t *psk_key);
371
383 const coap_bin_const_t *psk_identity);
384
385#if COAP_SERVER_SUPPORT
395coap_session_t *coap_new_server_session(coap_context_t *ctx,
396 coap_endpoint_t *ep,
397 void *extra);
398#endif /* COAP_SERVER_SUPPORT */
399
409
419
437int coap_session_set_type_client_lkd(coap_session_t *session, int report_changed);
438
456
467
479ssize_t coap_session_send_pdu(coap_session_t *session, coap_pdu_t *pdu);
480
482 coap_queue_t *node);
483
484#if COAP_SERVER_SUPPORT
494coap_session_t *coap_endpoint_get_session(coap_endpoint_t *endpoint,
495 const coap_packet_t *packet, coap_tick_t now);
496
511coap_endpoint_t *coap_new_endpoint_lkd(coap_context_t *context, const coap_address_t *listen_addr,
512 coap_proto_t proto);
513
521void coap_free_endpoint_lkd(coap_endpoint_t *endpoint);
522
523#endif /* COAP_SERVER_SUPPORT */
524
531size_t coap_session_max_pdu_rcv_size(const coap_session_t *session);
532
542size_t coap_session_max_pdu_size_lkd(const coap_session_t *session);
543
574 const coap_address_t *local_if,
575 const coap_address_t *server,
576 coap_proto_t proto,
577 void *app_data,
579 coap_str_const_t *ws_host
580 );
581
614 const coap_address_t *local_if,
615 const coap_address_t *server,
616 coap_proto_t proto,
617 coap_dtls_pki_t *setup_data,
618 void *app_data,
620 coap_str_const_t *ws_host
621 );
622
643 const coap_address_t *local_if,
644 const coap_address_t *server,
645 coap_proto_t proto,
646 const char *identity,
647 const uint8_t *key,
648 unsigned key_len
649 );
650
683 const coap_address_t *local_if,
684 const coap_address_t *server,
685 coap_proto_t proto,
686 coap_dtls_cpsk_t *setup_data,
687 void *app_data,
689 coap_str_const_t *ws_host
690 );
691
699
712 coap_tick_t now);
713
723
742void *coap_session_set_app_data2_lkd(coap_session_t *session, void *data,
744
765
766void coap_session_free(coap_session_t *session);
768
770
772
773void coap_handle_nack(coap_session_t *session,
774 coap_pdu_t *sent,
775 const coap_nack_reason_t reason,
776 const coap_mid_t mid);
777
784
791
792#define COAP_SESSION_REF(s) ((s)->ref
793
794/* RFC7252 */
795#define COAP_ACK_TIMEOUT(s) ((s)->ack_timeout)
796#define COAP_ACK_RANDOM_FACTOR(s) ((s)->ack_random_factor)
797#define COAP_MAX_RETRANSMIT(s) ((s)->max_retransmit)
798#define COAP_NSTART(s) ((s)->nstart)
799#define COAP_DEFAULT_LEISURE(s) ((s)->default_leisure)
800#define COAP_PROBING_RATE(s) ((s)->probing_rate)
801/* RFC9177 */
802#define COAP_MAX_PAYLOADS(s) ((s)->max_payloads)
803#define COAP_NON_MAX_RETRANSMIT(s) ((s)->non_max_retransmit)
804#define COAP_NON_TIMEOUT(s) ((s)->non_timeout)
805#define COAP_NON_TIMEOUT_TICKS(s) \
806 (COAP_NON_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
807 COAP_NON_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
808#define COAP_NON_RECEIVE_TIMEOUT(s) ((s)->non_receive_timeout)
809#define COAP_NON_PROBING_WAIT_BASE(s) ((s)->non_probing_wait_base)
810#define COAP_NON_PARTIAL_TIMEOUT(s) ((s)->non_partial_timeout)
811
818#define COAP_DEFAULT_LEISURE_TICKS(s) \
819 (COAP_DEFAULT_LEISURE(s).integer_part * COAP_TICKS_PER_SECOND + \
820 COAP_DEFAULT_LEISURE(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
827#define COAP_MAX_TRANSMIT_SPAN(s) \
828 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part) * \
829 ((1 << ((s)->max_retransmit)) -1) * \
830 ((s)->ack_random_factor.integer_part * 1000 + \
831 (s)->ack_random_factor.fractional_part) \
832 / 1000000)
833
840#define COAP_MAX_TRANSMIT_WAIT(s) \
841 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part) * \
842 ((1 << ((s)->max_retransmit + 1)) -1) * \
843 ((s)->ack_random_factor.integer_part * 1000 + \
844 (s)->ack_random_factor.fractional_part) \
845 / 1000000)
846
847#define COAP_MAX_TRANSMIT_WAIT_TICKS(s) \
848 (COAP_MAX_TRANSMIT_WAIT(s) * COAP_TICKS_PER_SECOND)
849
856#define COAP_PROCESSING_DELAY(s) \
857 (((s)->ack_timeout.integer_part * 1000 + (s)->ack_timeout.fractional_part + \
858 500) / 1000)
859
866#define COAP_MAX_RTT(s) \
867 ((2 * COAP_DEFAULT_MAX_LATENCY) + COAP_PROCESSING_DELAY(s))
868
875#define COAP_EXCHANGE_LIFETIME(s) \
876 (COAP_MAX_TRANSMIT_SPAN(s) + (2 * COAP_DEFAULT_MAX_LATENCY) + \
877 COAP_PROCESSING_DELAY(s))
878
885#define COAP_NON_LIFETIME(s) \
886 (COAP_MAX_TRANSMIT_SPAN(s) + COAP_DEFAULT_MAX_LATENCY)
887
894#define COAP_NON_RECEIVE_TIMEOUT_TICKS(s) ( \
895 COAP_NON_RECEIVE_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
896 COAP_NON_RECEIVE_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
897
906#define COAP_NON_PROBING_WAIT(s) \
907 coap_add_fixed_fixed(COAP_NON_PROBING_WAIT_BASE(s), \
908 COAP_NON_TIMEOUT_RANDOM(s))
909
910#define COAP_NON_PROBING_WAIT_TICKS(s) \
911 (COAP_NON_PROBING_WAIT(s).integer_part * COAP_TICKS_PER_SECOND + \
912 COAP_NON_PROBING_WAIT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
913
920#define COAP_NON_PARTIAL_TIMEOUT_TICKS(s) \
921 (COAP_NON_PARTIAL_TIMEOUT(s).integer_part * COAP_TICKS_PER_SECOND + \
922 COAP_NON_PARTIAL_TIMEOUT(s).fractional_part * COAP_TICKS_PER_SECOND / 1000)
923
930#define COAP_NON_TIMEOUT_RANDOM(s) \
931 coap_get_non_timeout_random(s)
932
935#define SESSIONS_ADD(e, obj) \
936 HASH_ADD(hh, (e), addr_hash, sizeof((obj)->addr_hash), (obj))
937
938#define SESSIONS_DELETE(e, obj) \
939 HASH_DELETE(hh, (e), (obj))
940
941#define SESSIONS_ITER(e, el, rtmp) \
942 HASH_ITER(hh, (e), el, rtmp)
943
944#define SESSIONS_ITER_SAFE(e, el, rtmp) \
945 for ((el) = (e); (el) && ((rtmp) = (el)->hh.next, 1); (el) = (rtmp))
946
947#define SESSIONS_FIND(e, k, res) { \
948 HASH_FIND(hh, (e), &(k), sizeof(k), (res)); \
949 }
950
951#ifdef __cplusplus
952}
953#endif
954
955#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:2586
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:1147
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.