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