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