Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
COAP_CONTEXT(3)			libcoap	Manual		       COAP_CONTEXT(3)

NAME
       coap_context, coap_new_context, coap_free_context,
       coap_context_set_max_idle_sessions, coap_context_get_max_idle_sessions,
       coap_context_set_max_handshake_sessions,
       coap_context_get_max_handshake_sessions,
       coap_context_set_session_timeout, coap_context_get_session_timeout,
       coap_context_set_csm_timeout_ms,	coap_context_get_csm_timeout_ms,
       coap_context_set_max_token_size,	coap_context_set_app_data,
       coap_context_get_app_data, coap_context_set_cid_tuple_change - Work
       with CoAP contexts

SYNOPSIS
       #include	<coap3/coap.h>

       coap_context_t *coap_new_context(const coap_address_t *listen_addr);

       void coap_free_context(coap_context_t *context);

       void coap_context_set_max_idle_sessions(coap_context_t *context,
       unsigned	int max_idle_sessions);

       unsigned	int coap_context_get_max_idle_sessions(	const coap_context_t
       *context);

       void coap_context_set_max_handshake_sessions(coap_context_t *context,
       unsigned	int max_handshake_sessions);

       unsigned	int coap_context_get_max_handshake_sessions( const
       coap_context_t *context);

       void coap_context_set_session_timeout(coap_context_t *context, unsigned
       int session_timeout);

       unsigned	int coap_context_get_session_timeout( const coap_context_t
       *context);

       void coap_context_set_csm_timeout_ms(coap_context_t *context, unsigned
       int csm_timeout_ms);

       unsigned	int coap_context_get_csm_timeout_ms(const coap_context_t
       *context);

       void coap_context_set_max_token_size(coap_context_t *context, size_t
       max_token_size);

       void coap_context_set_app_data(coap_context_t *context, void
       *app_data);

       void *coap_context_get_app_data(const coap_context_t *context);

       int coap_context_set_cid_tuple_change(coap_context_t *context_context,
       uint8_t _every);

       For specific (D)TLS library support, link with -lcoap-3-notls,
       -lcoap-3-gnutls,	-lcoap-3-openssl, -lcoap-3-mbedtls, -lcoap-3-wolfssl
       or -lcoap-3-tinydtls. Otherwise,	link with -lcoap-3 to get the default
       (D)TLS library support.

DESCRIPTION
       This man	page focuses on	the CoAP Context and how to update or get
       information from	the opaque coap_context_t structure.

       The CoAP	stack's	global state is	stored in a coap_context_t Context
       object. Resources, Endpoints and	Sessions are associated	with this
       context object. There can be more than one coap_context_t object	per
       application, it is up to	the application	to manage each one
       accordingly.

FUNCTIONS
       Function: coap_new_context()

       The coap_new_context() function creates a new Context that is then used
       to keep all the CoAP Resources, Endpoints and Sessions information. The
       optional	listen_addr parameter, if set for a CoAP server, creates an
       Endpoint	that is	added to the context that is listening for
       un-encrypted traffic on the IP address and port number defined by
       listen_addr.

       Function: coap_free_context()

       The coap_free_context() function	must be	used to	release	the CoAP stack
       context.	It clears all entries from the receive queue and send queue
       and deletes the Resources that have been	registered with	context, and
       frees the attached Sessions and Endpoints.

       WARNING:	It is unsafe to	call coap_free_context() in an atexit()
       handler as other	libraries may also call	atexit() and clear down	some
       CoAP required functionality.

       WARNING:	It is unsafe to	call coap_free_context() in any	libcoap
       callback	handlers as set	up in coap_handler(3).

       WARNING:	In a multi-thread, libcoap thread-safe environment, if other
       threads are using context, it is	not recommended	to call
       coap_free_context() as various libcoap APIs will	unexpectedly fail. It
       is best to clear	down those other threads first before calling
       coap_free_context().

       Function: coap_context_set_max_idle_sessions()

       The coap_context_set_max_idle_sessions()	function sets the maximum
       number of idle server sessions to max_idle_sessions for context.	If
       this number is exceeded,	the least recently used	server session is
       completely removed. 0 (the initial default) means that the number of
       idle sessions is	not monitored.

       Function: coap_context_get_max_idle_sessions()

       The coap_context_get_max_idle_sessions()	function returns the maximum
       number of idle server sessions for context.

       Function: coap_context_set_max_handshake_sessions()

       The coap_context_set_max_handshake_sessions() function sets the maximum
       number of outstanding server sessions in	(D)TLS handshake to
       max_handshake_sessions for context. If this number is exceeded, the
       least recently used server session in handshake is completely removed.
       0 (the default) means that the number of	handshakes is not monitored.

       Function: coap_context_get_max_handshake_sessions()

       The coap_context_get_max_handshake_sessions() function returns the
       maximum number of outstanding server sessions in	(D)TLS handshake for
       context.

       Function: coap_context_set_session_timeout()

       The coap_context_set_session_timeout() function sets the	number of
       seconds of inactivity to	session_timeout	for context before an idle
       server session is removed. 0 (the default) means	wait for the default
       of 300 seconds.

       Function: coap_context_get_session_timeout()

       The coap_context_get_session_timeout() function returns the seconds to
       wait before timing out an idle server session for context.

       Function: coap_context_set_csm_timeout_ms()

       The coap_context_set_csm_timeout_ms() function sets the number of
       milliseconds to wait for	a (TCP)	CSM negotiation	response from the peer
       to csm_timeout_ms for context before timing out and assuming CoAP
       server is broken. The default is	1000 milliseconds. The minimum value
       for csm_timeout_ms is set to 10 milliseconds and	the maximum value for
       csm_timeout_ms is set to	10000 milliseconds.

       Function: coap_context_get_csm_timeout_ms()

       The coap_context_get_csm_timeout_ms() function returns the milliseconds
       to wait for a (TCP) CSM negotiation response from the peer for context,

       Function: coap_context_set_max_token_size()

       The coap_context_set_max_token_size() function sets the max_token_size
       for context. max_token_size must	be greater than	8 to indicate support
       for RFC8974 up to max_token_size	bytes, else 8 to disable RFC8974 (if
       previously set).

       NOTE: For the client, it	will send an initial PDU to test the server
       supports	the requested extended token size as per "RFC8794 Section
       2.2.2"

       Function: coap_context_set_app_data()

       The coap_context_set_app_data() function	is used	to define a app_data
       pointer for the context which can then be retrieved at a	later date.

       Function: coap_context_get_app_data()

       The coap_context_get_app_data() function	is used	to retrieve the
       app_data	pointer	previously defined by coap_context_set_app_data().

       Function: coap_context_set_cid_tuple_change()

       The coap_context_set_cid_tuple_change() function	is used	to define to a
       client to force the client's port to change every packets sent,
       providing the ability to	test a CID (RFC9146) enabled server. Only
       supported by DTLS libraries that	support	CID.

RETURN VALUES
       coap_new_context() returns a newly created context or NULL if there is
       a creation failure.

       coap_context_get_max_idle_sessions() returns the	maximum	number of idle
       server sessions.

       coap_context_get_max_handshake_sessions() returns the maximum number of
       outstanding server sessions in (D)TLS handshake.

       coap_context_get_session_timeout() returns the seconds to wait before
       timing out an idle server session.

       coap_context_get_csm_timeout_ms() returns the milliseconds to wait for
       a (TCP) CSM negotiation response	from the peer.

       coap_context_get_app_data() returns a previously	defined	pointer.

       coap_context_set_cid_tuple_change() returns 1 on	success, else 0;

SEE ALSO
       coap_session(3)

FURTHER	INFORMATION
       See

       "RFC7252: The Constrained Application Protocol (CoAP)"

       "RFC8974: Extended Tokens and Stateless Clients in the Constrained
       Application Protocol (CoAP)"

       for further information.

BUGS
       Please raise an issue on	GitHub at
       https://github.com/obgm/libcoap/issues to report	any bugs.

       Please raise a Pull Request at https://github.com/obgm/libcoap/pulls
       for any fixes.

AUTHORS
       The libcoap project <libcoap-developers@lists.sourceforge.net>

coap_context 4.3.5		  11/03/2025		       COAP_CONTEXT(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=coap_context_set_csm_timeout_ms&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help