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