libcoap 4.3.5-develop-71d1692
Loading...
Searching...
No Matches
coap_io_internal.h
Go to the documentation of this file.
1/*
2 * coap_io.h -- Default network I/O functions for libcoap
3 *
4 * Copyright (C) 2012-2025 Olaf Bergmann <bergmann@tzi.org>
5 *
6 * SPDX-License-Identifier: BSD-2-Clause
7 *
8 * This file is part of the CoAP library libcoap. Please see README for terms
9 * of use.
10 */
11
17#ifndef COAP_IO_INTERNAL_H_
18#define COAP_IO_INTERNAL_H_
19
20#include "coap_internal.h"
22#include <sys/types.h>
23
24#include "coap_address.h"
25
26#ifdef WITH_CONTIKI
27struct uip_udp_conn;
28#endif /* WITH_CONTIKI */
29
30#ifdef RIOT_VERSION
31#include "net/gnrc.h"
32#include "net/sock/udp.h"
33#if ! COAP_DISABLE_TCP
34#include "net/sock/tcp.h"
35#endif /* ! COAP_DISABLE_TCP */
36#endif /* RIOT_VERSION */
37
39#if defined(WITH_LWIP)
40 struct pbuf *p;
41 struct udp_pcb *udp_pcb;
42#if ! COAP_DISABLE_TCP
43 struct tcp_pcb *tcp_pcb;
44#endif /* ! COAP_DISABLE_TCP */
45
46#elif defined(WITH_CONTIKI)
47 struct uip_udp_conn *udp_conn;
48 coap_context_t *context;
49
50#elif defined(RIOT_VERSION)
51 sock_udp_t udp;
52#if ! COAP_DISABLE_TCP
53 sock_tcp_t tcp;
54#endif /* ! COAP_DISABLE_TCP */
56#else
58#endif /* ! WITH_LWIP && !WITH_CONTIKI && ! RIOT_VERSION */
61#if COAP_SERVER_SUPPORT
64#endif /* COAP_SERVER_SUPPORT */
65#if COAP_CLIENT_SUPPORT
67#endif /* COAP_CLIENT_SUPPORT */
69};
70
74#define COAP_SOCKET_EMPTY 0x0000
75#define COAP_SOCKET_NOT_EMPTY 0x0001
76#define COAP_SOCKET_BOUND 0x0002
77#define COAP_SOCKET_CONNECTED 0x0004
78#define COAP_SOCKET_WANT_READ 0x0010
79#define COAP_SOCKET_WANT_WRITE 0x0020
80#define COAP_SOCKET_WANT_ACCEPT 0x0040
81#define COAP_SOCKET_WANT_CONNECT 0x0080
82#define COAP_SOCKET_CAN_READ 0x0100
83#define COAP_SOCKET_CAN_WRITE 0x0200
84#define COAP_SOCKET_CAN_ACCEPT 0x0400
85#define COAP_SOCKET_CAN_CONNECT 0x0800
86#define COAP_SOCKET_MULTICAST 0x1000
87#define COAP_SOCKET_SLAVE 0x2000
89#if COAP_SERVER_SUPPORT
92#endif /* COAP_SERVER_SUPPORT */
93
94const char *coap_socket_format_errno(int error);
95
96#if COAP_CLIENT_SUPPORT
98 const coap_address_t *local_if,
99 const coap_address_t *server,
100 int default_port,
101 coap_address_t *local_addr,
102 coap_address_t *remote_addr);
103#endif /* COAP_CLIENT_SUPPORT */
104
105#if COAP_SERVER_SUPPORT
107 const coap_address_t *listen_addr,
108 coap_address_t *bound_addr);
109#endif /* COAP_SERVER_SUPPORT */
110
118
129ssize_t coap_socket_write(coap_socket_t *sock, const uint8_t *data, size_t data_len);
130
141ssize_t coap_socket_read(coap_socket_t *sock, uint8_t *data, size_t data_len);
142
152void coap_epoll_ctl_add(coap_socket_t *sock, uint32_t events, const char *func);
153
163void coap_epoll_ctl_mod(coap_socket_t *sock, uint32_t events, const char *func);
164
173
174#ifdef WITH_LWIP
175ssize_t coap_socket_send_pdu(coap_socket_t *sock, coap_session_t *session,
176 coap_pdu_t *pdu);
177#endif
178
191ssize_t coap_socket_send(coap_socket_t *sock, coap_session_t *session,
192 const uint8_t *data, size_t datalen);
193
206ssize_t coap_socket_recv(coap_socket_t *sock, coap_packet_t *packet);
207
208#ifndef coap_mcast_interface
209# define coap_mcast_interface(Local) 0
210#endif
211
217 unsigned char **address,
218 size_t *length);
219
220#ifdef WITH_LWIP
221void coap_io_process_timeout(void *arg);
222void coap_io_lwip_init(void);
223void coap_io_lwip_cleanup(void);
224#endif
225
232
233#ifdef WITH_CONTIKI
234void coap_start_io_process(void);
235void coap_stop_io_process(void);
236#endif /* WITH_CONTIKI */
237
238#endif /* COAP_IO_INTERNAL_H_ */
Representation of network addresses.
Pulls together all the internal only header files.
uint16_t coap_socket_flags_t
Definition coap_io.h:53
int coap_fd_t
Definition coap_io.h:47
void coap_epoll_ctl_add(coap_socket_t *sock, uint32_t events, const char *func)
Epoll specific function to add the state of events that epoll is to track for the appropriate file de...
int coap_socket_connect_udp(coap_socket_t *sock, const coap_address_t *local_if, const coap_address_t *server, int default_port, coap_address_t *local_addr, coap_address_t *remote_addr)
const char * coap_socket_format_errno(int error)
Definition coap_io.c:2345
ssize_t coap_socket_read(coap_socket_t *sock, uint8_t *data, size_t data_len)
Function interface for data stream receiving off a socket.
Definition coap_io.c:705
void coap_socket_close(coap_socket_t *sock)
Function interface to close off a socket.
Definition coap_io.c:390
ssize_t coap_socket_recv(coap_socket_t *sock, coap_packet_t *packet)
Function interface for reading data.
Definition coap_io.c:1062
ssize_t coap_socket_send(coap_socket_t *sock, coap_session_t *session, const uint8_t *data, size_t datalen)
Function interface for data transmission.
Definition coap_io.c:861
void coap_packet_get_memmapped(coap_packet_t *packet, unsigned char **address, size_t *length)
Given a packet, set msg and msg_len to an address and length of the packet's data in memory.
Definition coap_io.c:1049
ssize_t coap_socket_write(coap_socket_t *sock, const uint8_t *data, size_t data_len)
Function interface for data stream sending off a socket.
Definition coap_io.c:646
void coap_update_io_timer(coap_context_t *context, coap_tick_t delay)
Update when to continue with I/O processing, unless packets come in in the meantime.
Definition coap_io.c:528
int coap_socket_bind_udp(coap_socket_t *sock, const coap_address_t *listen_addr, coap_address_t *bound_addr)
coap_endpoint_t * coap_malloc_endpoint(void)
void coap_epoll_ctl_mod(coap_socket_t *sock, uint32_t events, const char *func)
Epoll specific function to modify the state of events that epoll is tracking on the appropriate file ...
void coap_mfree_endpoint(coap_endpoint_t *ep)
Internal layer I/O functions.
@ COAP_LAYER_LAST
uint64_t coap_tick_t
This data type represents internal timer ticks with COAP_TICKS_PER_SECOND resolution.
Definition coap_time.h:143
Multi-purpose address abstraction.
The CoAP stack's global state is stored in a coap_context_t object.
Abstraction of virtual endpoint that can be attached to coap_context_t.
size_t length
length of payload
coap_addr_tuple_t addr_info
local and remote addresses
unsigned char * payload
payload
int ifindex
the interface index
structure for CoAP PDUs
Abstraction of virtual session that can be attached to coap_context_t (client) or coap_endpoint_t (se...
coap_layer_func_t lfunc[COAP_LAYER_LAST]
Layer functions to use.
coap_session_t * session
Used to determine session owner.
coap_endpoint_t * endpoint
Used by the epoll logic for a listening endpoint.
coap_address_t mcast_addr
remote address and port (multicast track)
coap_socket_flags_t flags
1 or more of COAP_SOCKET* flag values