1 /* $NetBSD: ntp_io.h,v 1.6 2020/05/25 20:47:19 christos Exp $ */ 2 3 #ifndef NTP_IO_H 4 #define NTP_IO_H 5 6 #include "ntp_workimpl.h" 7 8 /* 9 * POSIX says use <fnct.h> to get O_* symbols and 10 * SEEK_SET symbol form <unistd.h>. 11 */ 12 #include <sys/types.h> 13 #ifdef HAVE_UNISTD_H 14 # include <unistd.h> 15 #endif 16 #include <stdio.h> 17 #ifdef HAVE_SYS_FILE_H 18 # include <sys/file.h> 19 #endif 20 #ifdef HAVE_FCNTL_H 21 # include <fcntl.h> 22 #endif 23 #if !defined(SEEK_SET) && defined(L_SET) 24 # define SEEK_SET L_SET 25 #endif 26 27 #ifdef SYS_WINNT 28 # include <io.h> 29 # include "win32_io.h" 30 #endif 31 32 #include <isc/boolean.h> 33 #include <isc/netaddr.h> 34 35 #if defined(HAVE_NETINET_IN_H) && defined(HAVE_NETINET_IP_H) 36 # include <netinet/in.h> 37 # ifdef HAVE_NETINET_IN_SYSTM_H 38 # include <netinet/in_systm.h> 39 # endif 40 # include <netinet/ip.h> 41 #endif 42 43 #include "libntp.h" /* This needs Something above for GETDTABLESIZE */ 44 45 #include "ntp_keyacc.h" 46 47 /* 48 * Define FNDELAY and FASYNC using O_NONBLOCK and O_ASYNC if we need 49 * to (and can). This is here initially for QNX, but may help for 50 * others as well... 51 */ 52 #ifndef FNDELAY 53 # ifdef O_NONBLOCK 54 # define FNDELAY O_NONBLOCK 55 # endif 56 #endif 57 58 #ifndef FASYNC 59 # ifdef O_ASYNC 60 # define FASYNC O_ASYNC 61 # endif 62 #endif 63 64 65 /* 66 * NIC rule match types 67 */ 68 typedef enum { 69 MATCH_ALL, 70 MATCH_IPV4, 71 MATCH_IPV6, 72 MATCH_WILDCARD, 73 MATCH_IFNAME, 74 MATCH_IFADDR 75 } nic_rule_match; 76 77 /* 78 * NIC rule actions 79 */ 80 typedef enum { 81 ACTION_LISTEN, 82 ACTION_IGNORE, 83 ACTION_DROP 84 } nic_rule_action; 85 86 87 extern int qos; 88 SOCKET move_fd(SOCKET fd); 89 /*isc_boolean_t get_broadcastclient_flag(void);*/ 90 extern void sau_from_netaddr(sockaddr_u *, const isc_netaddr_t *); 91 extern void add_nic_rule(nic_rule_match match_type, 92 const char *if_name, int prefixlen, 93 nic_rule_action action); 94 #ifndef HAVE_IO_COMPLETION_PORT 95 extern void maintain_activefds(int fd, int closing); 96 #else 97 #define maintain_activefds(f, c) do {} while (0) 98 #endif 99 100 101 #endif /* NTP_IO_H */ 102