1
2 /* constants_dep.h */
3
4 #ifndef CONSTANTS_DEP_H
5 #define CONSTANTS_DEP_H
6
7 /**
8 *\file
9 * \brief Plateform-dependent constants definition
10 *
11 * This header defines all includes and constants which are plateform-dependent
12 *
13 * ptpdv2 is only implemented for linux, NetBSD and FreeBSD
14 */
15
16 /* platform dependent */
17
18 #if !defined(linux) && !defined(__NetBSD__) && !defined(__FreeBSD__) && \
19 !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__sun)
20 #error PTPD hasn't been ported to this OS - should be possible \
21 if it's POSIX compatible, if you succeed, report it to ptpd-devel@sourceforge.net
22 #endif
23
24 #ifdef linux
25 #include<netinet/in.h>
26 #include<net/if.h>
27 #include<net/if_arp.h>
28 #include <ifaddrs.h>
29 #define IFACE_NAME_LENGTH IF_NAMESIZE
30 #define NET_ADDRESS_LENGTH INET_ADDRSTRLEN
31
32 #define IFCONF_LENGTH 10
33
34 #define octet ether_addr_octet
35 #include<endian.h>
36 #if __BYTE_ORDER == __LITTLE_ENDIAN
37 #define PTPD_LSBF
38 #elif __BYTE_ORDER == __BIG_ENDIAN
39 #define PTPD_MSBF
40 #endif
41 #endif /* linux */
42
43
44
45 #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__OpenBSD__)
46 # include <sys/types.h>
47 # include <sys/socket.h>
48 # include <netinet/in.h>
49 # include <net/if.h>
50 # include <net/if_dl.h>
51 # include <net/if_types.h>
52 #ifdef HAVE_NET_IF_ETHER_H
53 # include <net/if_ether.h>
54 #endif
55 #ifdef HAVE_SYS_UIO_H
56 # include <sys/uio.h>
57 #endif
58 #ifdef HAVE_NET_ETHERNET_H
59 # include <net/ethernet.h>
60 #endif
61 # include <ifaddrs.h>
62 # define IFACE_NAME_LENGTH IF_NAMESIZE
63 # define NET_ADDRESS_LENGTH INET_ADDRSTRLEN
64
65 # define IFCONF_LENGTH 10
66
67 # define adjtimex ntp_adjtime
68
69 # include <machine/endian.h>
70 # if BYTE_ORDER == LITTLE_ENDIAN
71 # define PTPD_LSBF
72 # elif BYTE_ORDER == BIG_ENDIAN
73 # define PTPD_MSBF
74 # endif
75 #endif
76
77 #ifdef __sun
78 /* Solarish (Illumos & Oracle Solaris) definitions. */
79
80 #include <sys/types.h>
81 #include <sys/socket.h>
82 #include <sys/sockio.h>
83 #include <netinet/in.h>
84 #include <net/if.h>
85 #include <net/if_dl.h>
86 #include <net/if_types.h>
87 #include <sys/ethernet.h>
88 #include <sys/uio.h>
89 #include <ifaddrs.h>
90
91 #define ETHER_ADDR_LEN ETHERADDRL
92 #define IFACE_NAME_LENGTH IF_NAMESIZE
93 #define NET_ADDRESS_LENGTH INET_ADDRSTRLEN
94 #define ETHER_HDR_LEN sizeof (struct ether_header)
95
96 #define adjtimex ntp_adjtime
97
98 #include <sys/isa_defs.h>
99 #ifdef _LITTLE_ENDIAN
100 #define PTPD_LSBF
101 #elif defined(_BIG_ENDIAN)
102 #define PTPD_MSBF
103 #endif
104
105 #endif /* __sun */
106
107 #define CLOCK_IDENTITY_LENGTH 8
108 #define ADJ_FREQ_MAX 500000
109
110 /* UDP/IPv4 dependent */
111 #ifndef INADDR_LOOPBACK
112 #define INADDR_LOOPBACK 0x7f000001UL
113 #endif
114
115 #define SUBDOMAIN_ADDRESS_LENGTH 4
116 #define PORT_ADDRESS_LENGTH 2
117 #define PTP_UUID_LENGTH 6
118 #define CLOCK_IDENTITY_LENGTH 8
119 #define FLAG_FIELD_LENGTH 2
120
121 #define PACKET_SIZE 300 //ptpdv1 value kept because of use of TLV...
122 #define PACKET_BEGIN_UDP (ETHER_HDR_LEN + sizeof(struct ip) + \
123 sizeof(struct udphdr))
124 #define PACKET_BEGIN_ETHER (ETHER_HDR_LEN)
125
126 #define PTP_EVENT_PORT 319
127 #define PTP_GENERAL_PORT 320
128
129 #define DEFAULT_PTP_DOMAIN_ADDRESS "224.0.1.129"
130 #define PEER_PTP_DOMAIN_ADDRESS "224.0.0.107"
131
132 /* 802.3 Support */
133
134 #define PTP_ETHER_DST "01:1b:19:00:00:00"
135 #define PTP_ETHER_TYPE 0x88f7
136 #define PTP_ETHER_PEER "01:80:c2:00:00:0E"
137
138 /* dummy clock driver designation in preparation for generic clock driver API */
139 #define DEFAULT_CLOCKDRIVER "kernelclock"
140 /* default lock file location and mode */
141 #define DEFAULT_LOCKMODE F_WRLCK
142 #define DEFAULT_LOCKDIR "/var/run"
143 #define DEFAULT_LOCKFILE_NAME PTPD_PROGNAME".lock"
144 //define DEFAULT_LOCKFILE_PATH DEFAULT_LOCKDIR"/"DEFAULT_LOCKFILE_NAME
145 #define DEFAULT_FILE_PERMS (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
146
147 /* default drift file location */
148 #define DEFAULT_DRIFTFILE "/etc/"PTPD_PROGNAME"_"DEFAULT_CLOCKDRIVER".drift"
149
150 /* default status file location */
151 #define DEFAULT_STATUSFILE DEFAULT_LOCKDIR"/"PTPD_PROGNAME".status"
152
153 /* Highest log level (default) catches all */
154 #define LOG_ALL LOG_DEBUGV
155
156 /* drift recovery metod for use with -F */
157 enum {
158 DRIFT_RESET = 0,
159 DRIFT_KERNEL,
160 DRIFT_FILE
161 };
162 /* IP transmission mode */
163 enum {
164 IPMODE_MULTICAST = 0,
165 IPMODE_UNICAST,
166 IPMODE_HYBRID,
167 #if 0
168 IPMODE_UNICAST_SIGNALING
169 #endif
170 };
171
172 /* servo dT calculation mode */
173 enum {
174 DT_NONE,
175 DT_CONSTANT,
176 DT_MEASURED
177 };
178
179 #define MM_STARTING_BOUNDARY_HOPS 0x7fff
180
181 /* others */
182
183 /* bigger screen size constants */
184 #define SCREEN_BUFSZ 228
185 #define SCREEN_MAXSZ 180
186
187 /* default size for string buffers */
188 #define BUF_SIZE 1000
189
190 #define NANOSECONDS_MAX 999999999
191
192 // limit operator messages to once every X seconds
193 #define OPERATOR_MESSAGES_INTERVAL 300.0
194
195 #define MAXTIMESTR 32
196
197 #endif /*CONSTANTS_DEP_H_*/