xref: /netbsd/external/bsd/ntp/dist/include/ntp_io.h (revision 6550d01e)
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