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__)
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 #define CLOCK_IDENTITY_LENGTH 8
78 #define ADJ_FREQ_MAX 500000
79
80 /* UDP/IPv4 dependent */
81 #ifndef INADDR_LOOPBACK
82 #define INADDR_LOOPBACK 0x7f000001UL
83 #endif
84
85 #define SUBDOMAIN_ADDRESS_LENGTH 4
86 #define PORT_ADDRESS_LENGTH 2
87 #define PTP_UUID_LENGTH 6
88 #define CLOCK_IDENTITY_LENGTH 8
89 #define FLAG_FIELD_LENGTH 2
90
91 #define PACKET_SIZE 300 //ptpdv1 value kept because of use of TLV...
92 #define PACKET_BEGIN_UDP (ETHER_HDR_LEN + sizeof(struct ip) + \
93 sizeof(struct udphdr))
94 #define PACKET_BEGIN_ETHER (ETHER_HDR_LEN)
95
96 #define PTP_EVENT_PORT 319
97 #define PTP_GENERAL_PORT 320
98
99 #define DEFAULT_PTP_DOMAIN_ADDRESS "224.0.1.129"
100 #define PEER_PTP_DOMAIN_ADDRESS "224.0.0.107"
101
102 /* 802.3 Support */
103
104 #define PTP_ETHER_DST "01:1b:19:00:00:00"
105 #define PTP_ETHER_TYPE 0x88f7
106 #define PTP_ETHER_PEER "01:80:c2:00:00:0E"
107
108 /* dummy clock driver designation in preparation for generic clock driver API */
109 #define DEFAULT_CLOCKDRIVER "kernelclock"
110 /* default lock file location and mode */
111 #define DEFAULT_LOCKMODE F_WRLCK
112 #define DEFAULT_LOCKDIR "/var/run"
113 #define DEFAULT_LOCKFILE_NAME PTPD_PROGNAME".lock"
114 //define DEFAULT_LOCKFILE_PATH DEFAULT_LOCKDIR"/"DEFAULT_LOCKFILE_NAME
115 #define DEFAULT_FILE_PERMS (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
116
117 /* default drift file location */
118 #define DEFAULT_DRIFTFILE "/etc/"PTPD_PROGNAME"_"DEFAULT_CLOCKDRIVER".drift"
119
120 /* default status file location */
121 #define DEFAULT_STATUSFILE DEFAULT_LOCKDIR"/"PTPD_PROGNAME".status"
122
123 /* Highest log level (default) catches all */
124 #define LOG_ALL LOG_DEBUGV
125
126 /* drift recovery metod for use with -F */
127 enum {
128 DRIFT_RESET = 0,
129 DRIFT_KERNEL,
130 DRIFT_FILE
131 };
132 /* IP transmission mode */
133 enum {
134 IPMODE_MULTICAST = 0,
135 IPMODE_UNICAST,
136 IPMODE_HYBRID,
137 #if 0
138 IPMODE_UNICAST_SIGNALING
139 #endif
140 };
141
142 /* servo dT calculation mode */
143 enum {
144 DT_NONE,
145 DT_CONSTANT,
146 DT_MEASURED
147 };
148
149 #define MM_STARTING_BOUNDARY_HOPS 0x7fff
150
151 /* others */
152
153 /* bigger screen size constants */
154 #define SCREEN_BUFSZ 228
155 #define SCREEN_MAXSZ 180
156
157 /* default size for string buffers */
158 #define BUF_SIZE 1000
159
160 #define NANOSECONDS_MAX 999999999
161
162 // limit operator messages to once every X seconds
163 #define OPERATOR_MESSAGES_INTERVAL 300.0
164
165 #define MAXTIMESTR 32
166
167 #endif /*CONSTANTS_DEP_H_*/