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