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_*/