ntp_tty.h revision 290000
1/*
2 * ntp_tty.h - header file for serial lines handling
3 */
4#ifndef NTP_TTY_H
5#define NTP_TTY_H
6
7/*
8 * use only one tty model - no use in initialising
9 * a tty in three ways
10 * HAVE_TERMIOS is preferred over HAVE_SYSV_TTYS over HAVE_BSD_TTYS
11 */
12
13#if defined(HAVE_TERMIOS_H) || defined(HAVE_SYS_TERMIOS_H)
14# define HAVE_TERMIOS
15#elif defined(HAVE_TERMIO_H)
16# define HAVE_SYSV_TTYS
17#elif defined(HAVE_SGTTY_H)
18# define HAVE_BSD_TTYS
19#endif
20
21#if !defined(VMS) && !defined(SYS_VXWORKS)
22# if	!defined(HAVE_SYSV_TTYS) \
23	&& !defined(HAVE_BSD_TTYS) \
24	&& !defined(HAVE_TERMIOS)
25#include "ERROR: no tty type defined!"
26# endif
27#endif /* !VMS && !SYS_VXWORKS*/
28
29#if defined(HAVE_BSD_TTYS)
30#include <sgtty.h>
31#define TTY	struct sgttyb
32#endif /* HAVE_BSD_TTYS */
33
34#if defined(HAVE_SYSV_TTYS)
35#include <termio.h>
36#define TTY	struct termio
37#ifndef tcsetattr
38#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)
39#endif
40#ifndef TCSANOW
41#define TCSANOW	TCSETA
42#endif
43#ifndef TCIFLUSH
44#define TCIFLUSH 0
45#endif
46#ifndef TCOFLUSH
47#define TCOFLUSH 1
48#endif
49#ifndef TCIOFLUSH
50#define TCIOFLUSH 2
51#endif
52#ifndef tcflush
53#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)
54#endif
55#endif /* HAVE_SYSV_TTYS */
56
57#if defined(HAVE_TERMIOS)
58# if defined(HAVE_TERMIOS_H)
59#  ifdef TERMIOS_NEEDS__SVID3
60#   define _SVID3
61#  endif
62#  include <termios.h>
63#  ifdef TERMIOS_NEEDS__SVID3
64#   undef _SVID3
65#  endif
66# elif defined(HAVE_SYS_TERMIOS_H)
67#  include <sys/termios.h>
68# endif
69# define TTY	struct termios
70#endif
71
72#if defined(HAVE_SYS_MODEM_H)
73#include <sys/modem.h>
74#endif
75
76/*
77 * Line discipline flags.  The depredated ones required line discipline
78 * or streams modules to be installed/loaded in the kernel and are now
79 * ignored.  Leave the LDISC_CLK and other deprecated symbols defined
80 * until 2013 or 2014 to avoid complicating the use of newer drivers on
81 * older ntpd, which is often as easy as dropping in the refclock *.c.
82 */
83#define LDISC_STD	0x000	/* standard */
84#define LDISC_CLK	0x001	/* depredated tty_clk \n */
85#define LDISC_CLKPPS	0x002	/* depredated tty_clk \377 */
86#define LDISC_ACTS	0x004	/* depredated tty_clk #* */
87#define LDISC_CHU	0x008	/* depredated */
88#define LDISC_PPS	0x010	/* depredated */
89#define LDISC_RAW	0x020	/* raw binary */
90#define LDISC_ECHO	0x040	/* enable echo */
91#define	LDISC_REMOTE	0x080	/* remote mode */
92#define	LDISC_7O1	0x100	/* 7-bit, odd parity for Z3801A */
93
94/* function prototypes for ntp_tty.c */
95#if !defined(SYS_VXWORKS) && !defined(SYS_WINNT)
96# if defined(HAVE_TERMIOS) || defined(HAVE_SYSV_TTYS) || \
97     defined(HAVE_BSD_TTYS)
98extern	int	ntp_tty_setup(int, u_int, u_int);
99extern	int	ntp_tty_ioctl(int, u_int);
100# endif
101#endif
102
103#endif /* NTP_TTY_H */
104