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