• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * coap_io.h -- Default network I/O functions for libcoap
3  *
4  * Copyright (C) 2012-2013,2023 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 
12 /**
13  * @file coap_io.h
14  * @brief Default network I/O functions
15  */
16 
17 #ifndef COAP_IO_H_
18 #define COAP_IO_H_
19 
20 #include <sys/types.h>
21 
22 #include "coap_address.h"
23 
24 #ifdef RIOT_VERSION
25 #include "net/gnrc.h"
26 #endif /* RIOT_VERSION */
27 
28 #ifndef COAP_RXBUFFER_SIZE
29 #define COAP_RXBUFFER_SIZE 1472
30 #endif /* COAP_RXBUFFER_SIZE */
31 
32 /*
33  * It may may make sense to define this larger on busy systems
34  * (lots of sessions, large number of which are active), by using
35  * -DCOAP_MAX_EPOLL_EVENTS=nn at compile time.
36  */
37 #ifndef COAP_MAX_EPOLL_EVENTS
38 #define COAP_MAX_EPOLL_EVENTS 10
39 #endif /* COAP_MAX_EPOLL_EVENTS */
40 
41 #ifdef _WIN32
42 typedef SOCKET coap_fd_t;
43 #define coap_closesocket closesocket
44 #define COAP_SOCKET_ERROR SOCKET_ERROR
45 #define COAP_INVALID_SOCKET INVALID_SOCKET
46 #else
47 typedef int coap_fd_t;
48 #define coap_closesocket close
49 #define COAP_SOCKET_ERROR (-1)
50 #define COAP_INVALID_SOCKET (-1)
51 #endif
52 
53 typedef uint16_t coap_socket_flags_t;
54 
55 typedef struct coap_addr_tuple_t {
56   coap_address_t remote;       /**< remote address and port */
57   coap_address_t local;        /**< local address and port */
58 } coap_addr_tuple_t;
59 
60 const char *coap_socket_strerror(void);
61 
62 /**
63  * Check whether TCP is available.
64  *
65  * @return @c 1 if support for TCP is enabled, or @c 0 otherwise.
66  */
67 int coap_tcp_is_supported(void);
68 
69 typedef enum {
70   COAP_NACK_TOO_MANY_RETRIES,
71   COAP_NACK_NOT_DELIVERABLE,
72   COAP_NACK_RST,
73   COAP_NACK_TLS_FAILED,
74   COAP_NACK_ICMP_ISSUE,
75   COAP_NACK_BAD_RESPONSE,
76   COAP_NACK_TLS_LAYER_FAILED,
77   COAP_NACK_WS_LAYER_FAILED,
78   COAP_NACK_WS_FAILED
79 } coap_nack_reason_t;
80 
81 #endif /* COAP_IO_H_ */
82