libcoap 4.3.1
net.h File Reference

CoAP context interface. More...

#include <stdlib.h>
#include <string.h>
#include <sys/select.h>
#include <sys/time.h>
#include <time.h>
#include "coap_io.h"
#include "coap_dtls.h"
#include "coap_event.h"
#include "pdu.h"
#include "coap_session.h"
+ Include dependency graph for net.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define coap_send_large(session, pdu)   coap_send(session, pdu)
 
#define coap_join_mcast_group(ctx, groupname)    (coap_join_mcast_group_intf(ctx, groupname, NULL))
 
#define COAP_IO_WAIT   0
 
#define COAP_IO_NO_WAIT   ((uint32_t)-1)
 
#define COAP_RUN_NONBLOCK   COAP_RUN_NONBLOCK_deprecated_use_COAP_IO_NO_WAIT
 
#define COAP_RUN_BLOCK   COAP_RUN_BLOCK_deprecated_use_COAP_IO_WAIT
 

Typedefs

typedef enum coap_response_t coap_response_t
 
typedef coap_response_t(* coap_response_handler_t) (coap_session_t *session, const coap_pdu_t *sent, const coap_pdu_t *received, const coap_mid_t mid)
 Response handler that is used as callback in coap_context_t. More...
 
typedef void(* coap_nack_handler_t) (coap_session_t *session, const coap_pdu_t *sent, const coap_nack_reason_t reason, const coap_mid_t mid)
 Negative Acknowedge handler that is used as callback in coap_context_t. More...
 
typedef void(* coap_ping_handler_t) (coap_session_t *session, const coap_pdu_t *received, const coap_mid_t mid)
 Received Ping handler that is used as callback in coap_context_t. More...
 
typedef void(* coap_pong_handler_t) (coap_session_t *session, const coap_pdu_t *received, const coap_mid_t mid)
 Received Pong handler that is used as callback in coap_context_t. More...
 

Enumerations

enum  coap_response_t { COAP_RESPONSE_FAIL , COAP_RESPONSE_OK }
 

Functions

void coap_register_response_handler (coap_context_t *context, coap_response_handler_t handler)
 Registers a new message handler that is called whenever a response is received. More...
 
void coap_register_nack_handler (coap_context_t *context, coap_nack_handler_t handler)
 Registers a new message handler that is called whenever a confirmable message (request or response) is dropped after all retries have been exhausted, or a rst message was received, or a network or TLS level event was received that indicates delivering the message is not possible. More...
 
void coap_register_ping_handler (coap_context_t *context, coap_ping_handler_t handler)
 Registers a new message handler that is called whenever a CoAP Ping message is received. More...
 
void coap_register_pong_handler (coap_context_t *context, coap_pong_handler_t handler)
 Registers a new message handler that is called whenever a CoAP Pong message is received. More...
 
void coap_register_option (coap_context_t *ctx, uint16_t type)
 Registers the option type type with the given context object ctx. More...
 
coap_context_tcoap_new_context (const coap_address_t *listen_addr)
 Creates a new coap_context_t object that will hold the CoAP stack status. More...
 
int coap_context_set_psk (coap_context_t *context, const char *hint, const uint8_t *key, size_t key_len)
 Set the context's default PSK hint and/or key for a server. More...
 
int coap_context_set_psk2 (coap_context_t *context, coap_dtls_spsk_t *setup_data)
 Set the context's default PSK hint and/or key for a server. More...
 
int coap_context_set_pki (coap_context_t *context, const coap_dtls_pki_t *setup_data)
 Set the context's default PKI information for a server. More...
 
int coap_context_set_pki_root_cas (coap_context_t *context, const char *ca_file, const char *ca_dir)
 Set the context's default Root CA information for a client or server. More...
 
void coap_context_set_keepalive (coap_context_t *context, unsigned int seconds)
 Set the context keepalive timer for sessions. More...
 
int coap_context_get_coap_fd (const coap_context_t *context)
 Get the libcoap internal file descriptor for using in an application's select() or returned as an event in an application's epoll_wait() call. More...
 
void coap_context_set_max_idle_sessions (coap_context_t *context, unsigned int max_idle_sessions)
 Set the maximum idle sessions count. More...
 
unsigned int coap_context_get_max_idle_sessions (const coap_context_t *context)
 Get the maximum idle sessions count. More...
 
void coap_context_set_session_timeout (coap_context_t *context, unsigned int session_timeout)
 Set the session timeout value. More...
 
unsigned int coap_context_get_session_timeout (const coap_context_t *context)
 Get the session timeout value. More...
 
void coap_context_set_csm_timeout (coap_context_t *context, unsigned int csm_tmeout)
 Set the CSM timeout value. More...
 
unsigned int coap_context_get_csm_timeout (const coap_context_t *context)
 Get the CSM timeout value. More...
 
void coap_context_set_csm_max_message_size (coap_context_t *context, uint32_t csm_max_message_size)
 Set the CSM max session size value. More...
 
uint32_t coap_context_get_csm_max_message_size (const coap_context_t *context)
 Get the CSM max session size value. More...
 
void coap_context_set_max_handshake_sessions (coap_context_t *context, unsigned int max_handshake_sessions)
 Set the maximum number of sessions in (D)TLS handshake value. More...
 
unsigned int coap_context_get_max_handshake_sessions (const coap_context_t *context)
 Get the session timeout value. More...
 
uint16_t coap_new_message_id (coap_session_t *session)
 Returns a new message id and updates session->tx_mid accordingly. More...
 
void coap_free_context (coap_context_t *context)
 CoAP stack context must be released with coap_free_context(). More...
 
void coap_set_app_data (coap_context_t *context, void *data)
 Stores data with the given CoAP context. More...
 
void * coap_get_app_data (const coap_context_t *context)
 Returns any application-specific data that has been stored with context using the function coap_set_app_data(). More...
 
coap_pdu_tcoap_new_error_response (const coap_pdu_t *request, coap_pdu_code_t code, coap_opt_filter_t *opts)
 Creates a new ACK PDU with specified error code. More...
 
coap_mid_t coap_send_error (coap_session_t *session, const coap_pdu_t *request, coap_pdu_code_t code, coap_opt_filter_t *opts)
 Sends an error response with code code for request request to dst. More...
 
coap_mid_t coap_send_message_type (coap_session_t *session, const coap_pdu_t *request, coap_pdu_type_t type)
 Helper function to create and send a message with type (usually ACK or RST). More...
 
coap_mid_t coap_send_ack (coap_session_t *session, const coap_pdu_t *request)
 Sends an ACK message with code 0 for the specified request to dst. More...
 
COAP_STATIC_INLINE coap_mid_t coap_send_rst (coap_session_t *session, const coap_pdu_t *request)
 Sends an RST message with code 0 for the specified request to dst. More...
 
coap_mid_t coap_send (coap_session_t *session, coap_pdu_t *pdu)
 Sends a CoAP message to given peer. More...
 
int coap_handle_event (coap_context_t *context, coap_event_t event, coap_session_t *session)
 Invokes the event handler of context for the given event and data. More...
 
int coap_can_exit (coap_context_t *context)
 Returns 1 if there are no messages to send or to dispatch in the context's queues. More...
 
void coap_ticks (coap_tick_t *)
 Returns the current value of an internal tick counter. More...
 
int coap_join_mcast_group_intf (coap_context_t *ctx, const char *groupname, const char *ifname)
 Function interface for joining a multicast group for listening for the currently defined endpoints that are UDP. More...
 
int coap_mcast_set_hops (coap_session_t *session, size_t hops)
 Function interface for defining the hop count (ttl) for sending multicast traffic. More...
 
void coap_mcast_per_resource (coap_context_t *context)
 Function interface to enable processing mcast requests on a per resource basis. More...
 
int coap_io_process (coap_context_t *ctx, uint32_t timeout_ms)
 The main I/O processing function. More...
 
int coap_io_process_with_fds (coap_context_t *ctx, uint32_t timeout_ms, int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
 The main message processing loop with additional fds for internal select. More...
 
unsigned int coap_io_prepare_io (coap_context_t *ctx, coap_socket_t *sockets[], unsigned int max_sockets, unsigned int *num_sockets, coap_tick_t now)
 Iterates through all the coap_socket_t structures embedded in endpoints or sessions associated with the ctx to determine which are wanting any read, write, accept or connect I/O (COAP_SOCKET_WANT_xxx is set). More...
 
void coap_io_do_io (coap_context_t *ctx, coap_tick_t now)
 Processes any outstanding read, write, accept or connect I/O as indicated in the coap_socket_t structures (COAP_SOCKET_CAN_xxx set) embedded in endpoints or sessions associated with ctx. More...
 
unsigned int coap_io_prepare_epoll (coap_context_t *ctx, coap_tick_t now)
 Any now timed out delayed packet is transmitted, along with any packets associated with requested observable response. More...
 
void coap_io_do_epoll (coap_context_t *ctx, struct epoll_event *events, size_t nevents)
 Process all the epoll events. More...
 
COAP_STATIC_INLINE COAP_DEPRECATED int coap_run_once (coap_context_t *ctx, uint32_t timeout_ms)
 
COAP_STATIC_INLINE COAP_DEPRECATED unsigned int coap_write (coap_context_t *ctx, coap_socket_t *sockets[], unsigned int max_sockets, unsigned int *num_sockets, coap_tick_t now)
 
COAP_STATIC_INLINE COAP_DEPRECATED void coap_read (coap_context_t *ctx, coap_tick_t now)
 

Detailed Description

CoAP context interface.

Definition in file net.h.

Macro Definition Documentation

◆ COAP_RUN_BLOCK

#define COAP_RUN_BLOCK   COAP_RUN_BLOCK_deprecated_use_COAP_IO_WAIT

Definition at line 823 of file net.h.

◆ COAP_RUN_NONBLOCK

#define COAP_RUN_NONBLOCK   COAP_RUN_NONBLOCK_deprecated_use_COAP_IO_NO_WAIT

Definition at line 822 of file net.h.

Function Documentation

◆ coap_read()

COAP_STATIC_INLINE COAP_DEPRECATED void coap_read ( coap_context_t ctx,
coap_tick_t  now 
)
Deprecated:
Use coap_io_do_io() instead.

This function just calls coap_io_do_io().

Internal function.

Parameters
ctxThe CoAP context
nowCurrent time

Definition at line 816 of file net.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ coap_run_once()

COAP_STATIC_INLINE COAP_DEPRECATED int coap_run_once ( coap_context_t ctx,
uint32_t  timeout_ms 
)
Deprecated:
Use coap_io_process() instead.

This function just calls coap_io_process().

Parameters
ctxThe CoAP context
timeout_msMinimum number of milliseconds to wait for new packets before returning after doing any processing. If COAP_IO_WAIT, the call will block until the next internal action (e.g. packet retransmit) if any, or block until the next packet is received whichever is the sooner and do the necessary processing. If COAP_IO_NO_WAIT, the function will return immediately after processing without waiting for any new input packets to arrive.
Returns
Number of milliseconds spent in function or -1 if there was an error

Definition at line 772 of file net.h.

+ Here is the call graph for this function:

◆ coap_write()

COAP_STATIC_INLINE COAP_DEPRECATED unsigned int coap_write ( coap_context_t ctx,
coap_socket_t sockets[],
unsigned int  max_sockets,
unsigned int *  num_sockets,
coap_tick_t  now 
)
Deprecated:
Use coap_io_prepare_io() instead.

This function just calls coap_io_prepare_io().

Internal function.

Parameters
ctxThe CoAP context
socketsArray of socket descriptors, filled on output
max_socketsSize of socket array.
num_socketsPointer to the number of valid entries in the socket arrays on output.
nowCurrent time.
Returns
timeout Maxmimum number of milliseconds that can be used by a select() to wait for network events or 0 if wait should be forever.

Definition at line 796 of file net.h.

+ Here is the call graph for this function: