components/ptp/patches/00-sol_sf_patch_over_community_edition.patch
author Rich Burridge <rich.burridge@oracle.com>
Fri, 23 Oct 2015 15:32:50 -0700
changeset 5007 0052258cbb9d
parent 4581 021d774e32e1
permissions -rw-r--r--
PSARC 2015/428 Normalization of Solaris man page section numbers 22081831 Normalize cups man pages 22081902 Normalize ntp man pages 22081919 Normalize libdnet man pages 22081942 Normalize ptp man pages 22081959 Normalize snort man pages
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     1
Includes the changes from third party vendor Solarflare to make
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     2
ptpd use hardware assistance provided by some of their NICs.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     3
   This patch also include changes developed in-house to support
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     4
Solaris in general and Solaris on sparc platform. Solarflare
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     5
related changes will not be fed back upstream. Solaris related
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     6
changes will be contributed back upstream.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     7
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     8
diff -r 3f1e7d35d0ab -r 821e8eadeaff COPYRIGHT
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
     9
--- a/COPYRIGHT	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    10
+++ b/COPYRIGHT	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    11
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    12
 /*-
2214
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
    13
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    14
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    15
  * Copyright (c) 2009-2012 George V. Neville-Neil, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    16
  *                         Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    17
  *                         Martin Burnicki, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    18
diff -r 3f1e7d35d0ab -r 821e8eadeaff Makefile
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    19
--- a/Makefile	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    20
+++ b/Makefile	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    21
@@ -2,16 +2,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    22
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    23
 VERSION = ptpd-2.2.0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    24
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    25
-release:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    26
-	(cd src; make clean)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    27
-	mkdir $(VERSION)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    28
-	(cd $(VERSION); \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    29
-	ln -s ../src .; \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    30
-	ln -s ../doc .; \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    31
-	ln -s ../tools .; \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    32
-	ln -s ../COPYRIGHT .; \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    33
-	ln -s ../ChangeLog .; \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    34
-	ln -s ../Makefile .; \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    35
-	ln -s ../README .; \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    36
-	ln -s ../RELEASE_NOTES .)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    37
-	tar cvzf $(VERSION).tar.gz -L --exclude .o --exclude Doxygen --exclude .svn --exclude .dep --exclude core $(VERSION)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    38
+build:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    39
+	(cd src; gmake clean; gmake)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    40
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    41
+install:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    42
+	mkdir -p $(DESTDIR)/usr/lib/inet
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    43
+	ginstall -D -p -m 755 src/ptpd $(DESTDIR)/usr/lib/inet/ptpd
5007
0052258cbb9d PSARC 2015/428 Normalization of Solaris man page section numbers
Rich Burridge <rich.burridge@oracle.com>
parents: 4581
diff changeset
    44
+	mkdir -p $(DESTDIR)/usr/share/man/man8/
0052258cbb9d PSARC 2015/428 Normalization of Solaris man page section numbers
Rich Burridge <rich.burridge@oracle.com>
parents: 4581
diff changeset
    45
+	ginstall -D -p -m 444 src/ptpd2.8 $(DESTDIR)/usr/share/man/man8/ptpd.8
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    46
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    47
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/Makefile
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    48
--- a/src/Makefile	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    49
+++ b/src/Makefile	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    50
@@ -1,4 +1,4 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    51
-# Makefile for ptpd2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    52
+# Makefile for ptpd
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    53
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    54
 #
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    55
 # Compile time defines:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    56
@@ -13,6 +13,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    57
 #  -DPTPD_DBGV    adds all debug messages
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    58
 #
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    59
 #   -DPTPD_NO_DAEMON             forces option -c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    60
+#  -DBSD_INTERFACE_FUNCTIONS: for OpenBSD
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    61
 #
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    62
 #   -PTP_EXPERIMENTAL            Allows non-standard compliant experimental options:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    63
 #                                   -U: Hybrid mode
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    64
@@ -27,29 +28,35 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    65
 RM = rm -f
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    66
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    67
 # start with CFLAGS += ..., so additional CFLAGs can be specified e.g. on the make command line
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    68
-CFLAGS += -Wall -g
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    69
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    70
+CFLAGS = -Wall -g -D_ISOC99_SOURCE -D_BSD_SOURCE -std=gnu99 -m64
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    71
+CPPFLAGS += -D_XOPEN_SOURCE=600 -D__EXTENSIONS__ -D_XPG4_2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    72
 CFLAGS += -DRUNTIME_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    73
 #CFLAGS += -DPTPD_DBG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    74
 #CFLAGS += -DPTPD_DBG2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    75
 #CFLAGS += -DPTPD_DBGV
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    76
+#CFLAGS += -DPTPD_DUMP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    77
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    78
 #CFLAGS += -DPTPD_NO_DAEMON
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    79
+#CFLAGS += -DBSD_INTERFACE_FUNCTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    80
 #CFLAGS += -DDBG_SIGUSR2_CHANGE_DOMAIN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    81
-CFLAGS += -DDBG_SIGUSR2_CHANGE_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    82
+#CFLAGS += -DDBG_SIGRTMIN_LEAP_SECOND
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    83
+#CFLAGS += -DDBG_SIGUSR2_CHANGE_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    84
+#CFLAGS += -DPTPD_FULL_OPTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    85
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    86
-CFLAGS += -DPTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    87
+#CFLAGS += -DPTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    88
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    89
 LDFLAGS+= -lm -lrt
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    90
+LDFLAGS += -lnsl -lsocket -m64
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    91
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    92
-PROG = ptpd2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    93
+PROG = ptpd
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    94
 SRCS = ptpd.c arith.c bmc.c protocol.c display.c\
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    95
-	dep/msg.c dep/net.c dep/servo.c dep/startup.c dep/sys.c dep/timer.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    96
+	dep/msg.c dep/net.c dep/servo.c dep/startup.c dep/sys.c dep/timer.c dep/time.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    97
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    98
 OBJS = $(SRCS:.c=.o)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    99
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   100
 HDRS = ptpd.h constants.h datatypes.h \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   101
-	dep/ptpd_dep.h dep/constants_dep.h dep/datatypes_dep.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   102
+	dep/ptpd_dep.h dep/constants_dep.h dep/datatypes_dep.h \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   103
+        dep/sfxge_ioctl.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   104
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   105
 CSCOPE = cscope
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   106
 GTAGS = gtags
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   107
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/arith.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   108
--- a/src/arith.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   109
+++ b/src/arith.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   110
@@ -1,5 +1,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   111
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   112
- * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   113
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   114
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   115
+ * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   116
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   117
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   118
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   119
@@ -36,9 +38,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   120
  * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   121
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   122
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   123
+#include <math.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   124
 #include "ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   125
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   126
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   127
+double round (double __x);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   128
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   129
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   130
 integer64_to_internalTime(Integer64 bigint, TimeInternal * internal)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   131
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   132
@@ -245,7 +250,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   133
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   134
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   135
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   136
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   137
+#if 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   138
 int check_timestamp_is_fresh2(TimeInternal * timeA, TimeInternal * timeB)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   139
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   140
 	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   141
@@ -264,7 +269,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   142
 	return check_timestamp_is_fresh2(timeA, &timeB);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   143
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   144
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   145
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   146
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   147
 int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   148
 isTimeInternalNegative(const TimeInternal * p)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   149
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   150
@@ -272,4 +277,52 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   151
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   152
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   153
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   154
+int64_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   155
+internalTime_to_scalar(TimeInternal *internal)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   156
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   157
+	return ((int64_t)internal->seconds * 1000000000LL)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   158
+		+ (int64_t)internal->nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   159
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   160
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   161
+float
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   162
+secondsToMidnight(void) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   163
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   164
+	TimeInternal now;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   165
+ 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   166
+	timerNow(&now);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   167
+ 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   168
+	// TODO should be 86400 - (now.seconds % 86400)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   169
+	Integer32 stmI = (now.seconds - (now.seconds % 86400) + 86400) - 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   170
+		now.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   171
+ 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   172
+	return (stmI + 0.0 - now.nanoseconds / 1E9);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   173
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   174
+ 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   175
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   176
+float
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   177
+getPauseBeforeMidnight(Integer8 announceInterval) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   178
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   179
+	return ((secondsToMidnight() <= getPauseAfterMidnight(announceInterval)) ?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   180
+		secondsToMidnight() : getPauseAfterMidnight(announceInterval));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   181
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   182
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   183
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   184
+float
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   185
+getPauseAfterMidnight(Integer8 announceInterval) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   186
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   187
+	return((LEAP_SECOND_PAUSE_PERIOD > 2 * pow(2,announceInterval)) ?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   188
+	       LEAP_SECOND_PAUSE_PERIOD + 0.0  : 2 * pow(2,announceInterval) + 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   189
+	       0.0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   190
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   191
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   192
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   193
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   194
+log2IntegerSaturateAtZero(LongDouble number)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   195
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   196
+    if (number <= 0) return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   197
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   198
+    number = log(number)/log(2);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   199
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   200
+    return round(number);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   201
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   202
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   203
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/bmc.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   204
--- a/src/bmc.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   205
+++ b/src/bmc.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   206
@@ -1,4 +1,5 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   207
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   208
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   209
  * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   210
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   211
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   212
@@ -77,7 +78,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   213
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   214
 	ptpClock->domainNumber = rtOpts->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   215
 	ptpClock->slaveOnly = rtOpts->slaveOnly;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   216
-	if(rtOpts->slaveOnly)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   217
+	if(rtOpts->master_slave_mode == PTP_MODE_SLAVE)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   218
 		rtOpts->clockQuality.clockClass = 255;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   219
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   220
 /* Port configuration data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   221
@@ -91,16 +92,17 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   222
 	ptpClock->portIdentity.portNumber = NUMBER_PORTS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   223
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   224
 	/* select the initial rate of delayreqs until we receive the first announce message */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   225
-	ptpClock->logMinDelayReqInterval = rtOpts->initial_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   226
+	ptpClock->minDelayReqInterval = rtOpts->initial_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   227
+	ptpClock->logMinDelayReqInterval = log2IntegerSaturateAtZero(rtOpts->initial_delayreq);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   228
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   229
 	clearTime(&ptpClock->peerMeanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   230
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   231
-	ptpClock->logAnnounceInterval = rtOpts->announceInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   232
+	ptpClock->logAnnounceInterval = log2IntegerSaturateAtZero(rtOpts->announceInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   233
 	ptpClock->announceReceiptTimeout = rtOpts->announceReceiptTimeout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   234
-	ptpClock->logSyncInterval = rtOpts->syncInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   235
+	ptpClock->logSyncInterval = log2IntegerSaturateAtZero(rtOpts->syncInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   236
 	ptpClock->delayMechanism = rtOpts->delayMechanism;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   237
-	ptpClock->logMinPdelayReqInterval = DEFAULT_PDELAYREQ_INTERVAL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   238
-	ptpClock->versionNumber = VERSION_PTP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   239
+	ptpClock->logMinPdelayReqInterval = DEFAULT_LOG_PDELAYREQ_INTERVAL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   240
+	ptpClock->versionNumber = VERSION_PTP_PROTOCOL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   241
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   242
  	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   243
 	 *  Initialize random number generator using same method as ptpv1:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   244
@@ -145,9 +147,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   245
 	ptpClock->timeSource = INTERNAL_OSCILLATOR;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   246
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   247
 	/* UTC vs TAI timescales */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   248
-	ptpClock->currentUtcOffsetValid = DEFAULT_UTC_VALID;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   249
+	ptpClock->currentUtcOffsetValid = rtOpts->currentUtcOffsetValid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   250
 	ptpClock->currentUtcOffset = rtOpts->currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   251
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   252
+	/* TODO Should we clear the leap second flags? Unprogram leap second in kernel? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   253
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   254
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   255
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   256
@@ -156,8 +159,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   257
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   258
 	/* make sure we revert to ARB timescale in Passive mode*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   259
 	if(ptpClock->portState == PTP_PASSIVE){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   260
-		ptpClock->currentUtcOffsetValid = DEFAULT_UTC_VALID;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   261
+		ptpClock->currentUtcOffsetValid = rtOpts->currentUtcOffsetValid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   262
 		ptpClock->currentUtcOffset = rtOpts->currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   263
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   264
+		/* TODO Should we clear the leap second flags? Unprogram leap second in kernel? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   265
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   266
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   267
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   268
@@ -166,6 +171,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   269
 /*Local clock is synchronized to Ebest Table 16 (9.3.5) of the spec*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   270
 void s1(MsgHeader *header,MsgAnnounce *announce,PtpClock *ptpClock, RunTimeOpts *rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   271
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   272
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   273
+	Boolean previousLeap59 = FALSE, previousLeap61 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   274
+	Integer16 previousUtcOffset = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   275
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   276
+	if (ptpClock->portState == PTP_SLAVE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   277
+		previousLeap59 = ptpClock->leap59;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   278
+		previousLeap61 = ptpClock->leap61;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   279
+		previousUtcOffset = ptpClock->currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   280
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   281
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   282
 	/* Current DS */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   283
 	ptpClock->stepsRemoved = announce->stepsRemoved + 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   284
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   285
@@ -193,12 +208,95 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   286
 	/* set PTP_PASSIVE-specific state */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   287
 	p1(ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   288
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   289
-	ptpClock->leap59 = ((header->flagField[1] & PTP_LI_61) == PTP_LI_59);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   290
-	ptpClock->leap61 = ((header->flagField[1] & PTP_LI_61) == PTP_LI_61);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   291
 	ptpClock->timeTraceable = ((header->flagField[1] & TIME_TRACEABLE) == TIME_TRACEABLE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   292
 	ptpClock->frequencyTraceable = ((header->flagField[1] & FREQUENCY_TRACEABLE) == FREQUENCY_TRACEABLE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   293
 	ptpClock->ptpTimescale = ((header->flagField[1] & PTP_TIMESCALE) == PTP_TIMESCALE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   294
 	ptpClock->timeSource = announce->timeSource;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   295
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   296
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   297
+	/* Leap second handling */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   298
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   299
+        if (ptpClock->portState == PTP_SLAVE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   300
+		/* We must not take leap second updates while a leap second
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   301
+		 * is in progress. This shouldn't happen but we should not
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   302
+		 * rely on the master behaving. We'll take the update when
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   303
+		 * the first announce arrives after the leap second has
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   304
+		 * completed.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   305
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   306
+		if (!ptpClock->leapSecondInProgress) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   307
+			ptpClock->leap59 = ((header->flagField[1] & PTP_LI_59) == PTP_LI_59);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   308
+			ptpClock->leap61 = ((header->flagField[1] & PTP_LI_61) == PTP_LI_61);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   309
+			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   310
+			if(ptpClock->leap59 && ptpClock->leap61) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   311
+				ERROR("Both Leap59 and Leap61 flags set!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   312
+				toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   313
+				return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   314
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   315
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   316
+			if ((previousLeap59 != ptpClock->leap59) || 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   317
+		            (previousLeap61 != ptpClock->leap61)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   318
+				/* Either a leap second has been set. Start
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   319
+				 * by cancelling any leap seconds already
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   320
+				 * programmed. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   321
+				ptpClock->leapSecondPending = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   322
+				timerStop(LEAP_SECOND_PENDING_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   323
+				timerStop(LEAP_SECOND_NOW_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   324
+#if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   325
+				unsetTimexFlags(STA_INS | STA_DEL,TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   326
+#endif /* apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   327
+				/* If one of the leap seconds is set, program
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   328
+				 * the kernel to make the change. Set a timer
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   329
+				 * to expire just before the leap second will
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   330
+				 * occur. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   331
+				if (ptpClock->leap59 || ptpClock->leap61) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   332
+#if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   333
+					if (rtOpts->noResetClock ||
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   334
+					    rtOpts->resetClockStartupOnly) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   335
+						WARNING("=== Leap second pending! "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   336
+							"One second will be %s "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   337
+							"at midnight\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   338
+							ptpClock->leap61 ?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   339
+							"added" : "deleted");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   340
+					} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   341
+						WARNING("=== Leap second pending! "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   342
+							"Setting kernel to %s "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   343
+							"one second at midnight\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   344
+							ptpClock->leap61 ?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   345
+							"add" : "delete");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   346
+					
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   347
+						setTimexFlags(ptpClock->leap61 ?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   348
+							      STA_INS : STA_DEL,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   349
+							      FALSE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   350
+					}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   351
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   352
+					WARNING("=== Leap second pending! "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   353
+						"No kernel leap second "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   354
+						"API support - expect a "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   355
+						"clock jump at midnight!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   356
+#endif /* apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   357
+					ptpClock->leapSecondPending = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   358
+					timerStart(LEAP_SECOND_PENDING_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   359
+						   secondsToMidnight() - 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   360
+						   getPauseBeforeMidnight(ptpClock->logAnnounceInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   361
+						   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   362
+				} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   363
+					WARNING("=== Leap second event "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   364
+						"aborted by GM!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   365
+				}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   366
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   367
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   368
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   369
+		if((previousUtcOffset != ptpClock->currentUtcOffset) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   370
+		   !ptpClock->leapSecondPending && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   371
+		   !ptpClock->leapSecondInProgress ) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   372
+			WARNING("=== UTC offset changed from %d to %d with "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   373
+				"no leap second pending!\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   374
+				previousUtcOffset, ptpClock->currentUtcOffset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   375
+		} else if( previousUtcOffset != ptpClock->currentUtcOffset) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   376
+			WARNING("=== UTC offset changed from %d to %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   377
+				previousUtcOffset,ptpClock->currentUtcOffset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   378
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   379
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   380
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   381
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   382
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   383
@@ -342,9 +440,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   384
 		 RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   385
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   386
 	Integer8 comp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   387
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   388
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   389
-	if (rtOpts->slaveOnly)	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   390
+	if (rtOpts->master_slave_mode == PTP_MODE_SLAVE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   391
 		s1(header,announce,ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   392
 		return PTP_SLAVE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   393
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   394
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/constants.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   395
--- a/src/constants.h	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   396
+++ b/src/constants.h	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   397
@@ -1,3 +1,33 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   398
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   399
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   400
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   401
+ * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   402
+ *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   403
+ * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   404
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   405
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   406
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   407
+ * Redistribution and use in source and binary forms, with or without
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   408
+ * modification, are permitted provided that the following conditions are
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   409
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   410
+ * 1. Redistributions of source code must retain the above copyright notice,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   411
+ *    this list of conditions and the following disclaimer.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   412
+ * 2. Redistributions in binary form must reproduce the above copyright
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   413
+ *    notice, this list of conditions and the following disclaimer in the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   414
+ *    documentation and/or other materials provided with the distribution.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   415
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   416
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   417
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   418
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   419
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   420
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   421
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   422
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   423
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   424
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   425
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   426
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   427
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   428
 #ifndef CONSTANTS_H_
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   429
 #define CONSTANTS_H_
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   430
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   431
@@ -9,7 +39,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   432
 * and enumeration defined in the spec
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   433
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   434
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   435
- #define MANUFACTURER_ID \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   436
+#define PTP_VERSION_STRING "ptpdv2_2_0_0"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   437
+#define MANUFACTURER_ID \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   438
   "MaceG VanKempen;2.0.0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   439
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   440
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   441
@@ -17,21 +48,26 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   442
 #define DEFAULT_INBOUND_LATENCY      	0       /* in nsec */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   443
 #define DEFAULT_OUTBOUND_LATENCY     	0       /* in nsec */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   444
 #define DEFAULT_NO_RESET_CLOCK       	FALSE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   445
+#define DEFAULT_RESET_CLOCK_STARTUP_ONLY FALSE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   446
+#define DEFAULT_NO_ADJUST_CLOCK      FALSE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   447
 #define DEFAULT_DOMAIN_NUMBER        	0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   448
-#define DEFAULT_DELAY_MECHANISM      	E2E     // TODO
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   449
+#define DEFAULT_DELAY_MECHANISM      	E2E
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   450
 #define DEFAULT_AP                   	10
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   451
 #define DEFAULT_AI                   	1000
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   452
 #define DEFAULT_DELAY_S              	6
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   453
-#define DEFAULT_ANNOUNCE_INTERVAL    	1      /* 0 in 802.1AS */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   454
+#define DEFAULT_ANNOUNCE_INTERVAL    	2.0    /* 0 in 802.1AS */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   455
+#define LEAP_SECOND_PAUSE_PERIOD        2      /* how long before/after leap */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   456
+                                               /* second event we pause offset */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   457
+                                               /* calculation */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   458
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   459
 /* Master mode operates in ARB (UTC) timescale, without TAI+leap seconds */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   460
 #define DEFAULT_UTC_OFFSET           	0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   461
 #define DEFAULT_UTC_VALID            	FALSE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   462
-#define DEFAULT_PDELAYREQ_INTERVAL   	1      /* -4 in 802.1AS */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   463
+#define DEFAULT_LOG_PDELAYREQ_INTERVAL  1      /* -4 in 802.1AS */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   464
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   465
-#define DEFAULT_DELAYREQ_INTERVAL    	0      /* new value from page 237 of the standard */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   466
+#define DEFAULT_DELAYREQ_INTERVAL    	1.0    /* new value from page 237 of the standard */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   467
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   468
-#define DEFAULT_SYNC_INTERVAL        	0      /* -7 in 802.1AS */  /* from page 237 of the standard */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   469
+#define DEFAULT_SYNC_INTERVAL        	1.0    /* -7 in 802.1AS */  /* from page 237 of the standard */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   470
 /* number of announces we need to lose until a time out occurs. Thus it is 12 seconds */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   471
 #define DEFAULT_ANNOUNCE_RECEIPT_TIMEOUT 6     /* 3 by default */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   472
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   473
@@ -49,7 +85,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   474
 section 7.6.2.4, page 55:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   475
 248     Default. This clockClass shall be used if none of the other clockClass definitions apply.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   476
 13      Shall designate a clock that is synchronized to an application-specific source of time. The timescale distributed
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   477
-        shall be ARB. A clockClass 13 clock shall not be a slave to another clock in the domain. 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   478
+        shall be ARB. A clockClass 13 clock shall not be a slave to another clock in the domain.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   479
 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   480
 #define DEFAULT_CLOCK_CLASS		248
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   481
 #define DEFAULT_CLOCK_CLASS__APPLICATION_SPECIFIC_TIME_SOURCE	13
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   482
@@ -63,22 +99,34 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   483
 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   484
 #define DEFAULT_CLOCK_ACCURACY		0xFE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   485
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   486
-#define DEFAULT_PRIORITY1		128        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   487
-#define DEFAULT_PRIORITY2		128        /* page 238, default priority is the midpoint, to allow easy control of the BMC algorithm */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   488
+#define DEFAULT_PRIORITY1		248
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   489
+#define DEFAULT_PRIORITY2		248
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   490
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   491
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   492
-/* page 238:  Ï„, see 7.6.3.2: The default initialization value shall be 1.0 s.  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   493
-#define DEFAULT_CLOCK_VARIANCE 	        28768 /* To be determined in 802.1AS. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   494
-                                             
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   495
+#define DEFAULT_CLOCK_VARIANCE 	       -4000 /* To be determined in 802.1AS. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   496
+                                             /* We use the same value as in */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   497
+                                             /* ptpdv1. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   498
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   499
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   500
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   501
 #define DEFAULT_MAX_FOREIGN_RECORDS  	5
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   502
 #define DEFAULT_PARENTS_STATS			FALSE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   503
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   504
+/* Default time mode for master and slave modes */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   505
+#define DEFAULT_MASTER_TIME_MODE        TIME_SYSTEM
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   506
+#define DEFAULT_SLAVE_TIME_MODE         TIME_SYSTEM
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   507
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   508
+/* For time both, default system time update interval */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   509
+#define DEFAULT_SYSTEM_TIME_UPDATE_INTERVAL 1.0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   510
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   511
+/* We don't allow the time to be set to before 1/1/1971 because this almost */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   512
+/* certainly means something has gone very wrong */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   513
+#define UTC_TIME_VALID_MINIMUM          (31536000)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   514
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   515
 /* features, only change to refelect changes in implementation */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   516
 #define NUMBER_PORTS      	1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   517
-#define VERSION_PTP       	2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   518
-#define TWO_STEP_FLAG    	TRUE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   519
+#define VERSION_PTP_PROTOCOL	2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   520
+#define TWO_STEP_FLAG    	0x02
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   521
 #define BOUNDARY_CLOCK    	FALSE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   522
 #define SLAVE_ONLY		FALSE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   523
 #define NO_ADJUST		FALSE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   524
@@ -107,7 +155,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   525
  * \brief Domain Number (Table 2 in the spec)*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   526
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   527
 enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   528
-	DFLT_DOMAIN_NUMBER = 0, ALT1_DOMAIN_NUMBER, ALT2_DOMAIN_NUMBER, ALT3_DOMAIN_NUMBER
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   529
+  DFLT_DOMAIN_NUMBER = 0, ALT1_DOMAIN_NUMBER, ALT2_DOMAIN_NUMBER, ALT3_DOMAIN_NUMBER
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   530
 };
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   531
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   532
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   533
@@ -148,9 +196,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   534
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   535
   /* non-spec timers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   536
   OPERATOR_MESSAGES_TIMER,  /* used to limit the operator messages */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   537
-  TIMER_ARRAY_SIZE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   538
+  LEAP_SECOND_PENDING_TIMER, /**<\brief timer used for handling leap second operations */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   539
+  LEAP_SECOND_NOW_TIMER, /**<\brief Timer used to time moment of leap second */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   540
+  TIMER_ARRAY_SIZE  /* this one is non-spec */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   541
 };
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   542
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   543
+extern char *PTP_timer_dbg_string[];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   544
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   545
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   546
  * \brief PTP states
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   547
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   548
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/datatypes.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   549
--- a/src/datatypes.h	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   550
+++ b/src/datatypes.h	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   551
@@ -1,7 +1,37 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   552
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   553
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   554
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   555
+ * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   556
+ *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   557
+ * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   558
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   559
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   560
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   561
+ * Redistribution and use in source and binary forms, with or without
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   562
+ * modification, are permitted provided that the following conditions are
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   563
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   564
+ * 1. Redistributions of source code must retain the above copyright notice,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   565
+ *    this list of conditions and the following disclaimer.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   566
+ * 2. Redistributions in binary form must reproduce the above copyright
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   567
+ *    notice, this list of conditions and the following disclaimer in the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   568
+ *    documentation and/or other materials provided with the distribution.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   569
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   570
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   571
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   572
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   573
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   574
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   575
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   576
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   577
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   578
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   579
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   580
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   581
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   582
 #ifndef DATATYPES_H_
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   583
 #define DATATYPES_H_
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   584
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   585
-#include <stdio.h> 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   586
+#include <stdio.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   587
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   588
 /*Struct defined in spec*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   589
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   590
@@ -12,233 +42,241 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   591
 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   592
 * This header file defines structures defined by the spec,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   593
 * main program data structure, and all messages structures
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   594
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   595
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   596
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   597
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   598
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   599
 * \brief The TimeInterval type represents time intervals
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   600
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   601
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   602
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   603
-	Integer64 scaledNanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   604
+  Integer64 scaledNanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   605
 } TimeInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   606
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   607
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   608
 * \brief The Timestamp type represents a positive time with respect to the epoch
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   609
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   610
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   611
 typedef struct  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   612
-	UInteger48 secondsField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   613
-	UInteger32 nanosecondsField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   614
+  UInteger48 secondsField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   615
+  UInteger32 nanosecondsField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   616
 } Timestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   617
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   618
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   619
 * \brief The ClockIdentity type identifies a clock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   620
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   621
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   622
 typedef Octet ClockIdentity[CLOCK_IDENTITY_LENGTH];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   623
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   624
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   625
 * \brief The PortIdentity identifies a PTP port.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   626
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   627
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   628
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   629
-	ClockIdentity clockIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   630
-	UInteger16 portNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   631
+  ClockIdentity clockIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   632
+  UInteger16 portNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   633
 } PortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   634
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   635
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   636
 * \brief The PortAdress type represents the protocol address of a PTP port
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   637
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   638
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   639
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   640
-	Enumeration16 networkProtocol;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   641
-	UInteger16 adressLength;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   642
-	Octet* adressField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   643
+  Enumeration16 networkProtocol;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   644
+  UInteger16 adressLength;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   645
+  Octet* adressField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   646
 } PortAdress;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   647
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   648
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   649
 * \brief The ClockQuality represents the quality of a clock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   650
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   651
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   652
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   653
-	UInteger8 clockClass;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   654
-	Enumeration8 clockAccuracy;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   655
-	UInteger16 offsetScaledLogVariance;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   656
+  UInteger8 clockClass;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   657
+  Enumeration8 clockAccuracy;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   658
+  UInteger16 offsetScaledLogVariance;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   659
 } ClockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   660
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   661
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   662
 * \brief The TLV type represents TLV extension fields
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   663
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   664
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   665
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   666
-	Enumeration16 tlvType;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   667
-	UInteger16 lengthField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   668
-	Octet* valueField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   669
+  Enumeration16 tlvType;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   670
+  UInteger16 lengthField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   671
+  Octet* valueField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   672
 } TLV;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   673
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   674
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   675
 * \brief The PTPText data type is used to represent textual material in PTP messages
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   676
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   677
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   678
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   679
-	UInteger8 lengthField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   680
-	Octet* textField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   681
+  UInteger8 lengthField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   682
+  Octet* textField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   683
 } PTPText;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   684
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   685
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   686
 * \brief The FaultRecord type is used to construct fault logs
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   687
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   688
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   689
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   690
-	UInteger16 faultRecordLength;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   691
-	Timestamp faultTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   692
-	Enumeration8 severityCode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   693
-	PTPText faultName;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   694
-	PTPText faultValue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   695
-	PTPText faultDescription;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   696
+  UInteger16 faultRecordLength;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   697
+  Timestamp faultTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   698
+  Enumeration8 severityCode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   699
+  PTPText faultName;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   700
+  PTPText faultValue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   701
+  PTPText faultDescription;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   702
 } FaultRecord;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   703
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   704
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   705
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   706
 * \brief The common header for all PTP messages (Table 18 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   707
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   708
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   709
 /* Message header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   710
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   711
-	Nibble transportSpecific;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   712
-	Enumeration4 messageType;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   713
-	UInteger4 versionPTP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   714
-	UInteger16 messageLength;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   715
-	UInteger8 domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   716
-	Octet flagField[2];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   717
-	Integer64 correctionfield;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   718
-	PortIdentity sourcePortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   719
-	UInteger16 sequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   720
-	UInteger8 controlField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   721
-	Integer8 logMessageInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   722
+  Nibble transportSpecific;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   723
+  Enumeration4 messageType;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   724
+  UInteger4 versionPTP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   725
+  UInteger16 messageLength;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   726
+  UInteger8 domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   727
+  Octet flagField[2];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   728
+  Integer64 correctionfield;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   729
+  PortIdentity sourcePortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   730
+  UInteger16 sequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   731
+  UInteger8 controlField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   732
+  Integer8 logMessageInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   733
 } MsgHeader;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   734
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   735
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   736
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   737
 * \brief Announce message fields (Table 25 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   738
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   739
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   740
 /*Announce Message */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   741
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   742
-	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   743
-	Integer16 currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   744
-	UInteger8 grandmasterPriority1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   745
-	ClockQuality grandmasterClockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   746
-	UInteger8 grandmasterPriority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   747
-	ClockIdentity grandmasterIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   748
-	UInteger16 stepsRemoved;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   749
-	Enumeration8 timeSource;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   750
+  Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   751
+  Integer16 currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   752
+  UInteger8 grandmasterPriority1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   753
+  ClockQuality grandmasterClockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   754
+  UInteger8 grandmasterPriority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   755
+  ClockIdentity grandmasterIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   756
+  UInteger16 stepsRemoved;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   757
+  Enumeration8 timeSource;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   758
 }MsgAnnounce;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   759
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   760
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   761
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   762
 * \brief Sync message fields (Table 26 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   763
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   764
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   765
 /*Sync Message */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   766
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   767
-	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   768
+  Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   769
 }MsgSync;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   770
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   771
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   772
 * \brief DelayReq message fields (Table 26 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   773
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   774
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   775
 /*DelayReq Message */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   776
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   777
-	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   778
+  Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   779
 }MsgDelayReq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   780
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   781
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   782
 * \brief DelayResp message fields (Table 30 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   783
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   784
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   785
 /*delayResp Message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   786
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   787
-	Timestamp receiveTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   788
-	PortIdentity requestingPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   789
+  Timestamp receiveTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   790
+  PortIdentity requestingPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   791
 }MsgDelayResp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   792
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   793
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   794
 * \brief FollowUp message fields (Table 27 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   795
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   796
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   797
 /*Follow-up Message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   798
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   799
-	Timestamp preciseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   800
+  Timestamp preciseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   801
 }MsgFollowUp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   802
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   803
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   804
 * \brief PDelayReq message fields (Table 29 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   805
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   806
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   807
 /*PdelayReq Message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   808
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   809
-	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   810
+  Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   811
 }MsgPDelayReq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   812
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   813
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   814
 * \brief PDelayResp message fields (Table 30 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   815
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   816
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   817
 /*PdelayResp Message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   818
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   819
-	Timestamp requestReceiptTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   820
-	PortIdentity requestingPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   821
+  Timestamp requestReceiptTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   822
+  PortIdentity requestingPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   823
 }MsgPDelayResp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   824
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   825
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   826
 * \brief PDelayRespFollowUp message fields (Table 31 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   827
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   828
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   829
 /*PdelayRespFollowUp Message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   830
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   831
-	Timestamp responseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   832
-	PortIdentity requestingPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   833
+  Timestamp responseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   834
+  PortIdentity requestingPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   835
 }MsgPDelayRespFollowUp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   836
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   837
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   838
 * \brief Signaling message fields (Table 33 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   839
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   840
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   841
 /*Signaling Message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   842
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   843
-	PortIdentity targetPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   844
-	char* tlv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   845
+  PortIdentity targetPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   846
+  char* tlv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   847
 }MsgSignaling;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   848
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   849
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   850
 * \brief Management message fields (Table 37 of the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   851
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   852
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   853
 /*management Message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   854
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   855
-	PortIdentity targetPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   856
-	UInteger8 startingBoundaryHops;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   857
-	UInteger8 boundaryHops;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   858
-	Enumeration4 actionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   859
-	char* tlv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   860
+  PortIdentity targetPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   861
+  UInteger8 startingBoundaryHops;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   862
+  UInteger8 boundaryHops;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   863
+  Enumeration4 actionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   864
+  char* tlv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   865
 }MsgManagement;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   866
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   867
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   868
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   869
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   870
-* \brief Time structure to handle Linux time information
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   871
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   872
-typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   873
-	Integer32 seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   874
-	Integer32 nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   875
-} TimeInternal;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   876
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   877
-/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   878
 * \brief Structure used as a timer
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   879
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   880
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   881
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   882
-	Integer32 interval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   883
-	Integer32 left;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   884
-	Boolean expire;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   885
+  Integer32  interval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   886
+  Integer32  left;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   887
+  Boolean expire;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   888
 } IntervalTimer;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   889
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   890
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   891
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   892
 * \brief ForeignMasterRecord is used to manage foreign masters
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   893
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   894
+typedef struct
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   895
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   896
+  PortIdentity foreignMasterPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   897
+  UInteger16 foreignMasterAnnounceMessages;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   898
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   899
+  //This one is not in the spec
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   900
+  MsgAnnounce  announce;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   901
+  MsgHeader    header;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   902
+} ForeignMasterRecord;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   903
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   904
+/** 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   905
+ * \brief Structure used to collect statistics
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   906
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   907
 typedef struct
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   908
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   909
-	PortIdentity foreignMasterPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   910
-	UInteger16 foreignMasterAnnounceMessages;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   911
+  UInteger32  ts_sync_failures;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   912
+} Statistics;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   913
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   914
-	//This one is not in the spec
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   915
-	MsgAnnounce  announce;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   916
-	MsgHeader    header;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   917
-} ForeignMasterRecord;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   918
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   919
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   920
+*  \brief Timestamp method in use
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   921
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   922
+typedef enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   923
+  TS_METHOD_SYSTEM,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   924
+  TS_METHOD_SO_TIMESTAMPING,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   925
+  TS_METHOD_DRIVER_IOCTL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   926
+} TsMethod;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   927
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   928
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   929
  * \struct PtpClock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   930
@@ -246,241 +284,329 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   931
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   932
 /* main program data structure */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   933
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   934
-	/* Default data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   935
+  /* Default data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   936
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   937
-	/*Static members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   938
-	Boolean twoStepFlag;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   939
-	ClockIdentity clockIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   940
-	UInteger16 numberPorts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   941
+  /*Static members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   942
+  Boolean twoStepFlag;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   943
+  ClockIdentity clockIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   944
+  UInteger16 numberPorts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   945
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   946
-	/*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   947
-	ClockQuality clockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   948
+  /*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   949
+  ClockQuality clockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   950
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   951
-	/*Configurable members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   952
-	UInteger8 priority1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   953
-	UInteger8 priority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   954
-	UInteger8 domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   955
-	Boolean slaveOnly;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   956
+  /*Configurable members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   957
+  UInteger8 priority1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   958
+  UInteger8 priority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   959
+  UInteger8 domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   960
+  Boolean slaveOnly;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   961
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   962
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   963
-	/* Current data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   964
+  /* Current data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   965
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   966
-	/*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   967
-	UInteger16 stepsRemoved;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   968
-	TimeInternal offsetFromMaster;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   969
-	TimeInternal meanPathDelay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   970
+  /*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   971
+  UInteger16 stepsRemoved;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   972
+  TimeInternal offsetFromMaster;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   973
+  TimeInternal meanPathDelay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   974
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   975
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   976
-	/* Parent data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   977
+  /* Parent data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   978
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   979
-	/*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   980
-	PortIdentity parentPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   981
-	Boolean parentStats;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   982
-	UInteger16 observedParentOffsetScaledLogVariance;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   983
-	Integer32 observedParentClockPhaseChangeRate;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   984
-	ClockIdentity grandmasterIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   985
-	ClockQuality grandmasterClockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   986
-	UInteger8 grandmasterPriority1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   987
-	UInteger8 grandmasterPriority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   988
+  /*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   989
+  PortIdentity parentPortIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   990
+  Boolean parentStats;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   991
+  UInteger16 observedParentOffsetScaledLogVariance;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   992
+  Integer32 observedParentClockPhaseChangeRate;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   993
+  ClockIdentity grandmasterIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   994
+  ClockQuality grandmasterClockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   995
+  UInteger8 grandmasterPriority1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   996
+  UInteger8 grandmasterPriority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   997
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   998
-	/* Global time properties data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
   999
+  /* Global time properties data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1000
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1001
-	/*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1002
-	Integer16 currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1003
-	Boolean currentUtcOffsetValid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1004
-	Boolean leap59;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1005
-	Boolean leap61;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1006
-	Boolean timeTraceable;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1007
-	Boolean frequencyTraceable;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1008
-	Boolean ptpTimescale;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1009
-	Enumeration8 timeSource;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1010
+  /*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1011
+  Integer16 currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1012
+  Boolean currentUtcOffsetValid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1013
+  Boolean leap59;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1014
+  Boolean leap61;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1015
+  Boolean timeTraceable;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1016
+  Boolean frequencyTraceable;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1017
+  Boolean ptpTimescale;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1018
+  Boolean leapSecondInProgress;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1019
+  Boolean leapSecondPending;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1020
+  Enumeration8 timeSource;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1021
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1022
-	/* Port configuration data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1023
+  /* Port configuration data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1024
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1025
-	/*Static members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1026
-	PortIdentity portIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1027
+  /*Static members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1028
+  PortIdentity portIdentity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1029
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1030
-	/*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1031
-	Enumeration8 portState;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1032
-	Integer8 logMinDelayReqInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1033
-	TimeInternal peerMeanPathDelay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1034
- 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1035
-	/*Configurable members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1036
-	Integer8 logAnnounceInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1037
-	UInteger8 announceReceiptTimeout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1038
-	Integer8 logSyncInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1039
-	Enumeration8 delayMechanism;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1040
-	Integer8 logMinPdelayReqInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1041
-	UInteger4 versionNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1042
+  /*Dynamic members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1043
+  Enumeration8 portState;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1044
+  LongDouble minDelayReqInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1045
+  Integer8 logMinDelayReqInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1046
+  TimeInternal peerMeanPathDelay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1047
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1048
+  /*Configurable members*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1049
+  Integer8 logAnnounceInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1050
+  UInteger8 announceReceiptTimeout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1051
+  Integer8 logSyncInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1052
+  Enumeration8 delayMechanism;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1053
+  Integer8 logMinPdelayReqInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1054
+  UInteger4 versionNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1055
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1056
-	/* Foreign master data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1057
-	ForeignMasterRecord *foreign;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1058
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1059
-	/* Other things we need for the protocol */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1060
-	UInteger16 number_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1061
-	Integer16  max_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1062
-	Integer16  foreign_record_i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1063
-	Integer16  foreign_record_best;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1064
-	UInteger32 random_seed;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1065
-	Boolean  record_update;    /* should we run bmc() after receiving an announce message? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1066
+  /* Foreign master data set */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1067
+  ForeignMasterRecord *foreign;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1068
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1069
+  /* Other things we need for the protocol */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1070
+  UInteger16 number_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1071
+  Integer16  max_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1072
+  Integer16  foreign_record_i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1073
+  Integer16  foreign_record_best;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1074
+  UInteger32 random_seed;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1075
+  Boolean  record_update;    /* should we run bmc() after receiving an announce message? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1076
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1077
-	MsgHeader msgTmpHeader;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1078
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1079
-	union {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1080
-		MsgSync  sync;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1081
-		MsgFollowUp  follow;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1082
-		MsgDelayReq  req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1083
-		MsgDelayResp resp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1084
-		MsgPDelayReq  preq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1085
-		MsgPDelayResp  presp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1086
-		MsgPDelayRespFollowUp  prespfollow;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1087
-		MsgManagement  manage;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1088
-		MsgAnnounce  announce;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1089
-		MsgSignaling signaling;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1090
-	} msgTmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1091
+  MsgHeader msgTmpHeader;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1092
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1093
+  union {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1094
+    MsgSync  sync;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1095
+    MsgFollowUp  follow;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1096
+    MsgDelayReq  req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1097
+    MsgDelayResp resp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1098
+    MsgPDelayReq  preq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1099
+    MsgPDelayResp  presp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1100
+    MsgPDelayRespFollowUp  prespfollow;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1101
+    MsgManagement  manage;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1102
+    MsgAnnounce  announce;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1103
+    MsgSignaling signaling;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1104
+  } msgTmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1105
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1106
-	Octet msgObuf[PACKET_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1107
-	Octet msgIbuf[PACKET_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1108
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1109
-/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1110
-	20110630: These variables were deprecated in favor of the ones that appear in the stats log (delayMS and delaySM)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1111
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1112
-	TimeInternal  master_to_slave_delay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1113
-	TimeInternal  slave_to_master_delay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1114
+  Octet msgObuf[PACKET_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1115
+  Octet msgIbuf[PACKET_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1116
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1117
-	*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1118
-	Integer32 	observed_drift;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1119
+  TimeInternal  master_to_slave_delay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1120
+  TimeInternal  slave_to_master_delay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1121
+  LongDouble    observed_drift;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1122
+  LongDouble    frequency_adjustment;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1123
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1124
-	TimeInternal  pdelay_req_receive_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1125
-	TimeInternal  pdelay_req_send_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1126
-	TimeInternal  pdelay_resp_receive_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1127
-	TimeInternal  pdelay_resp_send_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1128
-	TimeInternal  sync_receive_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1129
-	TimeInternal  delay_req_send_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1130
-	TimeInternal  delay_req_receive_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1131
-	MsgHeader		PdelayReqHeader;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1132
-	MsgHeader		delayReqHeader;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1133
-	TimeInternal	pdelayMS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1134
-	TimeInternal	pdelaySM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1135
-	TimeInternal  delayMS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1136
-	TimeInternal	delaySM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1137
-	TimeInternal  lastSyncCorrectionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1138
-	TimeInternal  lastPdelayRespCorrectionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1139
+  TimeInternal  pdelay_req_receive_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1140
+  TimeInternal  pdelay_req_send_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1141
+  TimeInternal  pdelay_resp_receive_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1142
+  TimeInternal  pdelay_resp_send_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1143
+  TimeInternal  sync_receive_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1144
+  TimeInternal  delay_req_send_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1145
+  TimeInternal  delay_req_receive_time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1146
+  MsgHeader		PdelayReqHeader;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1147
+  MsgHeader		delayReqHeader;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1148
+  TimeInternal	pdelayMS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1149
+  TimeInternal	pdelaySM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1150
+  TimeInternal  delayMS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1151
+  TimeInternal	delaySM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1152
+  TimeInternal  lastSyncCorrectionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1153
+  TimeInternal  lastPdelayRespCorrectionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1154
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1155
+  /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1156
+  * TRUE when the clock is used to synchronize NIC and system time and
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1157
+  * the process is the PTP_MASTER. The offset and adjustment calculation
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1158
+  * is always "master (= NIC) to slave (= system time)" and PTP_SLAVEs
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1159
+  * update their system time, but the master needs to invert the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1160
+  * clock adjustment and control NIC time instead. This way
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1161
+  * the master's system time is propagated to slaves.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1162
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1163
+  Boolean nic_instead_of_system;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1164
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1165
+  /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1166
+  * Specifies the method for retrieving timestamps. Depending on the kernel
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1167
+  * version and operating mode, timestamping is done by either system
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1168
+  * timestamps made by the kernel,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1169
+  * queue, the socket error queue or via proprietary ioctl operations.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1170
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1171
+  TsMethod tsMethod;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1172
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1173
-	Boolean  sentPDelayReq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1174
-	UInteger16  sentPDelayReqSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1175
-	UInteger16  sentDelayReqSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1176
-	UInteger16  sentSyncSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1177
-	UInteger16  sentAnnounceSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1178
-	UInteger16  recvPDelayReqSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1179
-	UInteger16  recvSyncSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1180
-	UInteger16  recvPDelayRespSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1181
-	Boolean  waitingForFollow;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1182
-	Boolean  waitingForDelayResp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1183
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1184
+  /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1185
+  * a prefix to be inserted before messages about the clock:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1186
+  * may be empty, but not NULL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1187
+  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1188
+  * used to distinguish multiple active clock servos per process
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1189
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1190
+  const char *name;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1191
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1192
-	offset_from_master_filter  ofm_filt;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1193
-	one_way_delay_filter  owd_filt;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1194
+  Boolean  sentPDelayReq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1195
+  UInteger16  sentPDelayReqSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1196
+  UInteger16  sentDelayReqSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1197
+  UInteger16  sentSyncSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1198
+  UInteger16  sentAnnounceSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1199
+  UInteger16  recvPDelayReqSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1200
+  UInteger16  recvSyncSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1201
+  UInteger16  recvPDelayRespSequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1202
+  Boolean  waitingForFollow;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1203
+  Boolean  waitingForDelayResp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1204
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1205
-	Boolean message_activity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1206
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1207
-	IntervalTimer  itimer[TIMER_ARRAY_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1208
+  offset_from_master_filter  ofm_filt;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1209
+  one_way_delay_filter  owd_filt;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1210
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1211
-	NetPath netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1212
+  Boolean message_activity;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1213
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1214
-	/*Usefull to init network stuff*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1215
-	UInteger8 port_communication_technology;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1216
-	Octet port_uuid_field[PTP_UUID_LENGTH];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1217
+  IntervalTimer  itimer[TIMER_ARRAY_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1218
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1219
-	int reset_count;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1220
-	int current_init_clock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1221
-	int can_step_clock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1222
-	int warned_operator_slow_slewing;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1223
-	int warned_operator_fast_slewing;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1224
+  NetPath netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1225
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1226
-	char char_last_msg;                             /* representation of last message processed by servo */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1227
-	Boolean last_packet_was_sync;                   /* used to limit logging of Sync messages */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1228
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1229
-	int waiting_for_first_sync;                     /* we'll only start the delayReq timer after the first sync */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1230
-	int waiting_for_first_delayresp;                /* Just for information purposes */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1231
-	Boolean startup_in_progress;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1232
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1233
-#ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1234
-	Integer32 MasterAddr;                           // used for hybrid mode, when receiving announces
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1235
-	Integer32 LastSlaveAddr;                        // used for hybrid mode, when receiving delayreqs
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1236
-#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1237
+  /*Usefull to init network stuff*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1238
+  UInteger8 port_communication_technology;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1239
+  Octet port_uuid_field[PTP_UUID_LENGTH];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1240
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1241
+  int reset_count;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1242
+  int warned_operator_slow_slewing;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1243
+  int warned_operator_fast_slewing;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1244
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1245
+  char char_last_msg;  					/* representation of last message processed by servo */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1246
+  Boolean last_packet_was_sync;                   /* used to limit logging of Sync messages */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1247
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1248
+  int waiting_for_first_sync;				/* we'll only start the delayReq timer after the first sync */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1249
+  int waiting_for_first_delayresp;		/* Just for information purposes */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1250
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1251
+  Boolean offset_first_updated;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1252
+  Boolean clock_first_updated;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1253
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1254
+  Statistics statistics;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1255
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1256
 } PtpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1257
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1258
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1259
- * \struct RunTimeOpts
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1260
- * \brief Program options set at run-time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1261
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1262
+* \enum Time mode enumeration
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1263
+* \brief Time mode for PTP clock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1264
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1265
+typedef enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1266
+  /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1267
+  * Use and control system time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1268
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1269
+  TIME_SYSTEM,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1270
+  /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1271
+  * Use and control network interface time using Solarflare IOCTLs and
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1272
+  * net_tstamp.h API.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1273
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1274
+  TIME_NIC,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1275
+  /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1276
+  * A combination of PTP between NICs plus a local synchronization
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1277
+  * between NIC and system time:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1278
+  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1279
+  * - NIC time is controlled via PTP packets, main time seen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1280
+  *   by PTPd is the NIC time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1281
+  * - system_to_nic and nic_to_system delays are provided by
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1282
+  *   device driver on request
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1283
+  * - time.c adapts NIC time to system time on master and system time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1284
+  *   to NIC time on slaves by feeding these offsets into another
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1285
+  *   instance of the clock servo (as in TIME_SYSTEM)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1286
+  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1287
+  * The command line options only apply to one clock sync and
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1288
+  * the defaults are used for the other:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1289
+  * - NIC time: default values for clock control (adjust and reset)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1290
+  *   and servo (coefficients), configurable PTP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1291
+  * - system time: configurable clock control and servo, PTP options do
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1292
+  *   not apply
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1293
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1294
+  TIME_BOTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1295
+  /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1296
+  * Time used and controlled by PTP is the system time with hardware
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1297
+  * packet time stamping via Linux net_tstamp.h API or using driver
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1298
+  * proprietary IOCTLs.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1299
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1300
+  TIME_SYSTEM_LINUX_HW,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1301
+  /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1302
+  * Time used and controlled by PTP is the system time with software
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1303
+  * packet time stamping via standard Linux net_tstamp.h API.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1304
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1305
+  TIME_SYSTEM_LINUX_SW,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1306
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1307
+  TIME_MAX
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1308
+} TimeMode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1309
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1310
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1311
+* \enum Master slave mode enumeration
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1312
+* \brief Master/slave mode for PTP clock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1313
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1314
+typedef enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1315
+  PTP_MODE_NULL,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1316
+  PTP_MODE_MASTER_NO_NTP,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1317
+  PTP_MODE_MASTER_WITH_NTP,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1318
+  PTP_MODE_SLAVE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1319
+} MasterSlaveMode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1320
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1321
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1322
+* \struct RunTimeOpts
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1323
+* \brief Program options set at run-time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1324
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1325
 /* program options set at run-time */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1326
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1327
-	Integer8 announceInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1328
-	Integer8 announceReceiptTimeout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1329
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1330
-	Integer8 syncInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1331
-	ClockQuality clockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1332
-	UInteger8 priority1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1333
-	UInteger8 priority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1334
-	UInteger8 domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1335
+  LongDouble announceInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1336
+  Integer8 announceReceiptTimeout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1337
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1338
+  LongDouble syncInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1339
+  ClockQuality clockQuality;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1340
+  UInteger8 priority1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1341
+  UInteger8 priority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1342
+  UInteger8 domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1343
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1344
 	UInteger8 mcast_group_Number;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1345
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1346
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1347
 	Boolean	slaveOnly;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1348
-	Integer16 currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1349
-	Octet ifaceName[IFACE_NAME_LENGTH];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1350
-	Boolean	noResetClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1351
-	Integer32 maxReset; /* Maximum number of nanoseconds to reset */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1352
-	Integer32 maxDelay; /* Maximum number of nanoseconds of delay */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1353
-	Boolean	noAdjust;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1354
-	Boolean	displayStats;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1355
-	Boolean	csvStats;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1356
-	Boolean displayPackets;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1357
-	Octet unicastAddress[MAXHOSTNAMELEN];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1358
-	Integer32 ap, ai;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1359
-	Integer16 s;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1360
-	TimeInternal inboundLatency, outboundLatency;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1361
-	Integer16 max_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1362
-	Boolean ethernet_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1363
-	Enumeration8 delayMechanism;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1364
-	Boolean	offset_first_updated;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1365
-	char file[PATH_MAX];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1366
-	int logFd;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1367
-	Boolean useSysLog;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1368
-	int ttl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1369
-	char recordFile[PATH_MAX];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1370
-	FILE *recordFP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1371
+  Integer16 currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1372
+  Boolean currentUtcOffsetValid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1373
+  Octet ifaceName[IFACE_NAME_LENGTH];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1374
+  Boolean	noResetClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1375
+  Boolean resetClockStartupOnly;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1376
+  Integer32 maxReset; /* Maximum number of nanoseconds to reset */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1377
+  TimeInternal maxDelay; /* Maximum number of nanoseconds of delay */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1378
+  Boolean	noAdjust;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1379
+  Boolean	displayStats;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1380
+  Boolean verboseStats;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1381
+  Boolean	csvStats;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1382
+  Boolean displayPackets;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1383
+  Octet unicastAddress[MAXHOSTNAMELEN];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1384
+  Integer32 ap, ai;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1385
+  Integer16 s;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1386
+  TimeInternal inboundLatency, outboundLatency;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1387
+  Integer16 max_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1388
+  Boolean ethernet_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1389
+  Enumeration8 delayMechanism;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1390
+//  Boolean	offset_first_updated;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1391
+  char file[PATH_MAX];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1392
+  int logFd;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1393
+  Boolean useSysLog;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1394
+#ifndef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1395
+  int ttl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1396
+#else 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1397
+  uchar_t ttl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1398
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1399
+  char recordFile[PATH_MAX];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1400
+  FILE *recordFP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1401
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1402
-	int log_seconds_between_message;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1403
+  int log_seconds_between_message;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1404
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1405
-	Boolean ignore_daemon_lock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1406
-	Boolean do_IGMP_refresh;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1407
-	int nonDaemon;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1408
-	Boolean do_log_to_file;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1409
-	Boolean do_record_quality_file;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1410
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1411
-	int initial_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1412
-	int subsequent_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1413
+  Boolean ignore_daemon_lock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1414
+  Boolean do_IGMP_refresh;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1415
+  int nonDaemon;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1416
+  Boolean do_log_to_file;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1417
+  Boolean do_record_quality_file;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1418
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1419
+  LongDouble initial_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1420
+  int subsequent_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1421
 	Boolean ignore_delayreq_interval_master;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1422
-	Boolean syslog_startup_messages_also_to_stdout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1423
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1424
+  Boolean syslog_startup_messages_also_to_stdout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1425
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1426
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1427
 	int do_hybrid_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1428
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1429
-	int do_unicast_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1430
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1431
-#ifdef RUNTIME_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1432
-	int debug_level;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1433
-#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1434
+  TimeMode time_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1435
+  MasterSlaveMode master_slave_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1436
+  LongDouble system_time_update_interval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1437
+  int do_unicast_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1438
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1439
+  int debug_level;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1440
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1441
 } RunTimeOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1442
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1443
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/constants_dep.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1444
--- a/src/dep/constants_dep.h	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1445
+++ b/src/dep/constants_dep.h	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1446
@@ -1,3 +1,33 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1447
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1448
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1449
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1450
+ * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1451
+ *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1452
+ * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1453
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1454
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1455
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1456
+ * Redistribution and use in source and binary forms, with or without
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1457
+ * modification, are permitted provided that the following conditions are
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1458
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1459
+ * 1. Redistributions of source code must retain the above copyright notice,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1460
+ *    this list of conditions and the following disclaimer.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1461
+ * 2. Redistributions in binary form must reproduce the above copyright
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1462
+ *    notice, this list of conditions and the following disclaimer in the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1463
+ *    documentation and/or other materials provided with the distribution.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1464
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1465
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1466
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1467
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1468
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1469
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1470
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1471
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1472
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1473
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1474
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1475
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1476
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1477
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1478
 /* constants_dep.h */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1479
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1480
@@ -16,7 +46,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1481
 /* platform dependent */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1482
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1483
 #if !defined(linux) && !defined(__NetBSD__) && !defined(__FreeBSD__) && \
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1484
-  !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1485
+  !defined(__APPLE__) && !defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1486
 #error Not ported to this architecture, please update.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1487
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1488
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1489
@@ -38,7 +68,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1490
 #endif /* linux */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1491
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1492
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1493
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1494
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1495
 # include <sys/types.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1496
 # include <sys/socket.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1497
 # include <netinet/in.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1498
@@ -48,6 +78,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1499
 # if defined(__FreeBSD__) || defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1500
 #  include <net/ethernet.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1501
 #  include <sys/uio.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1502
+# elif defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1503
+#  include <sys/ethernet.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1504
+#  include <sys/uio.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1505
 # else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1506
 #  include <net/if_ether.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1507
 # endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1508
@@ -55,25 +88,35 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1509
 # define IFACE_NAME_LENGTH         IF_NAMESIZE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1510
 # define NET_ADDRESS_LENGTH        INET_ADDRSTRLEN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1511
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1512
-# define IFCONF_LENGTH 10
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1513
+# define IFCONF_LENGTH 20
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1514
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1515
 # define adjtimex ntp_adjtime
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1516
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1517
+#if !defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1518
 # include <machine/endian.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1519
 # if BYTE_ORDER == LITTLE_ENDIAN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1520
 #   define PTPD_LSBF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1521
 # elif BYTE_ORDER == BIG_ENDIAN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1522
 #   define PTPD_MSBF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1523
 # endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1524
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1525
+# if defined(__sparc__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1526
+#   define PTPD_MSBF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1527
+# else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1528
+#   define PTPD_LSBF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1529
+# endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1530
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1531
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1532
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1533
+#define SFC_FIRMWARE_VERSION_NUMBER_MIN 6039
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1534
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1535
 #define CLOCK_IDENTITY_LENGTH 8
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1536
-#define ADJ_FREQ_MAX  512000
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1537
+/* The system clock can handle frequency adjustments up to 100,000,000ppb */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1538
+#define ADJ_FREQ_MAX_SYSTEM  100000000.0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1539
+/* Our NIC can only handle frequency adjustments up to 1,000,000ppb */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1540
+#define ADJ_FREQ_MAX_NIC  1000000.0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1541
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1542
 /* UDP/IPv4 dependent */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1543
-#ifndef INADDR_LOOPBACK
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1544
-#define INADDR_LOOPBACK 0x7f000001UL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1545
-#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1546
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1547
 #define SUBDOMAIN_ADDRESS_LENGTH  4
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1548
 #define PORT_ADDRESS_LENGTH       2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1549
@@ -110,6 +153,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1550
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1551
 #define NANOSECONDS_MAX 999999999
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1552
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1553
+/* our own errno for failure to retrieve timestamp */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1554
+#define ENOTIMESTAMP  1000
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1555
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1556
 // limit operator messages to once every X seconds
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1557
 #define OPERATOR_MESSAGES_INTERVAL 300.0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1558
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/datatypes_dep.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1559
--- a/src/dep/datatypes_dep.h	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1560
+++ b/src/dep/datatypes_dep.h	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1561
@@ -1,12 +1,44 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1562
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1563
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1564
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1565
+ * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1566
+ *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1567
+ * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1568
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1569
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1570
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1571
+ * Redistribution and use in source and binary forms, with or without
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1572
+ * modification, are permitted provided that the following conditions are
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1573
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1574
+ * 1. Redistributions of source code must retain the above copyright notice,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1575
+ *    this list of conditions and the following disclaimer.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1576
+ * 2. Redistributions in binary form must reproduce the above copyright
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1577
+ *    notice, this list of conditions and the following disclaimer in the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1578
+ *    documentation and/or other materials provided with the distribution.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1579
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1580
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1581
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1582
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1583
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1584
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1585
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1586
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1587
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1588
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1589
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1590
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1591
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1592
 #ifndef DATATYPES_DEP_H_
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1593
 #define DATATYPES_DEP_H_
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1594
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1595
+#include <sys/ioctl.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1596
+#include <net/if.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1597
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1598
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1599
 *\file
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1600
 * \brief Implementation specific datatype
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1601
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1602
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1603
-/* FIXME: shouldn't uint32_t and friends be used here? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1604
 typedef enum {FALSE=0, TRUE} Boolean;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1605
 typedef char Octet;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1606
 typedef signed char Integer8;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1607
@@ -20,12 +52,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1608
 typedef unsigned char Enumeration4;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1609
 typedef unsigned char UInteger4;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1610
 typedef unsigned char Nibble;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1611
+typedef long double LongDouble;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1612
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1613
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1614
 * \brief Implementation specific of UInteger48 type
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1615
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1616
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1617
-	unsigned int lsb;     /* FIXME: shouldn't uint32_t and uint16_t be used here? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1618
+	unsigned int lsb;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1619
 	unsigned short msb;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1620
 } UInteger48;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1621
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1622
@@ -33,7 +66,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1623
 * \brief Implementation specific of Integer64 type
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1624
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1625
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1626
-	unsigned int lsb;     /* FIXME: shouldn't uint32_t and int32_t be used here? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1627
+	unsigned int lsb;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1628
 	int msb;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1629
 } Integer64;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1630
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1631
@@ -58,20 +91,48 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1632
   Integer32  s_exp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1633
 } one_way_delay_filter;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1634
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1635
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1636
+#define TX_STACK_SIZE 1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1637
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1638
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1639
+* \brief Time structure to handle Linux time information
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1640
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1641
+typedef struct TimeInternal {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1642
+  Integer32 seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1643
+  Integer32 nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1644
+} TimeInternal;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1645
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1646
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1647
+struct tx_item {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1648
+  int len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1649
+  TimeInternal ts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1650
+  unsigned char buf[PACKET_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1651
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1652
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1653
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1654
 * \brief Struct used to store network datas
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1655
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1656
 typedef struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1657
   Integer32 eventSock, generalSock, multicastAddr, peerMulticastAddr,unicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1658
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1659
+#if defined(linux) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1660
+  /** for further ioctl() calls on eventSock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1661
+  struct ifreq eventSockIFR;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1662
+#elif defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1663
+  Integer32 devFd;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1664
+  struct lifreq eventSockIFR;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1665
+  void	*ioctl_req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1666
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1667
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1668
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1669
+  /* @ioctl_timestamping Added support for hw based timestamping */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1670
+  struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1671
+    struct tx_item data[TX_STACK_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1672
+    int count;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1673
+  } tx_stack;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1674
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1675
   /* used by IGMP refresh */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1676
   struct in_addr interfaceAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1677
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1678
-#ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1679
-  /* used for Hybrid mode */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1680
-  Integer32 lastRecvAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1681
-#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1682
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1683
 } NetPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1684
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1685
 #endif /*DATATYPES_DEP_H_*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1686
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/msg.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1687
--- a/src/dep/msg.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1688
+++ b/src/dep/msg.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1689
@@ -1,4 +1,5 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1690
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1691
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1692
  * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1693
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1694
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1695
@@ -39,10 +40,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1696
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1697
 #include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1698
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1699
-#ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1700
-extern RunTimeOpts rtOpts; 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1701
-#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1702
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1703
 /*Unpack Header from IN buffer to msgTmpHeader field */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1704
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1705
 msgUnpackHeader(Octet * buf, MsgHeader * header)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1706
@@ -73,23 +70,34 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1707
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1708
 /*Pack header message into OUT buffer of ptpClock*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1709
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1710
-msgPackHeader(Octet * buf, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1711
+msgPackHeader(Octet * buf, PtpClock * ptpClock, unsigned int messageType)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1712
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1713
-	Nibble transport = 0x80;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1714
+	const UInteger8 transportSpecific = 0x00;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1715
+  UInteger8 octet0 = transportSpecific | (UInteger8)messageType;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1716
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1717
+	/* (spec annex D) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1718
+	*(UInteger8 *) (buf + 0) = octet0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1719
+	*(UInteger4 *) (buf + 1) = ptpClock->versionNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1720
+	*(UInteger8 *) (buf + 2) = 0; /* messageLength */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1721
+	*(UInteger8 *) (buf + 3) = 0; /* messageLength */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1722
+	*(UInteger8 *) (buf + 4) = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1723
+	*(UInteger8 *) (buf + 5) = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1724
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1725
-	/* (spec annex D) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1726
-	*(UInteger8 *) (buf + 0) = transport;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1727
-	*(UInteger4 *) (buf + 1) = ptpClock->versionNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1728
-	*(UInteger8 *) (buf + 4) = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1729
+	if (((messageType == SYNC) || (messageType == PDELAY_RESP)) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1730
+		(ptpClock->twoStepFlag)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1731
+		*(UInteger8 *) (buf + 6) = PTP_TWO_STEP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1732
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1733
+		*(UInteger8 *) (buf + 6) = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1734
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1735
+	*(UInteger8 *) (buf + 7) = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1736
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1737
-	/* TODO: this bit should have been active only for sync and PdelayResp */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1738
-	if (ptpClock->twoStepFlag)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1739
-		*(UInteger8 *) (buf + 6) = PTP_TWO_STEP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1740
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1741
-	memset((buf + 8), 0, 8);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1742
+	memset((buf + 8), 0, 12);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1743
 	memcpy((buf + 20), ptpClock->portIdentity.clockIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1744
 	       CLOCK_IDENTITY_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1745
 	*(UInteger16 *) (buf + 28) = flip16(ptpClock->portIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1746
+	*(UInteger8 *) (buf + 30) = 0; /* sequenceId */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1747
+	*(UInteger8 *) (buf + 31) = 0; /* sequenceId */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1748
+	*(UInteger8 *) (buf + 32) = 0; /* controlField */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1749
 	*(UInteger8 *) (buf + 33) = 0x7F;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1750
 	/* Default value(spec Table 24) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1751
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1752
@@ -100,13 +108,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1753
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1754
 msgPackSync(Octet * buf, Timestamp * originTimestamp, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1755
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1756
-	msgPackHeader(buf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1757
+	msgPackHeader(buf, ptpClock, SYNC);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1758
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1759
 	/* changes in header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1760
-	*(char *)(buf + 0) = *(char *)(buf + 0) & 0xF0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1761
-	/* RAZ messageType */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1762
-	*(char *)(buf + 0) = *(char *)(buf + 0) | 0x00;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1763
-	/* Table 19 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1764
 	*(UInteger16 *) (buf + 2) = flip16(SYNC_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1765
 	*(UInteger16 *) (buf + 30) = flip16(ptpClock->sentSyncSequenceId);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1766
 	*(UInteger8 *) (buf + 32) = 0x00;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1767
@@ -142,15 +146,26 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1768
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1769
 msgPackAnnounce(Octet * buf, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1770
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1771
-	msgPackHeader(buf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1772
+	UInteger16 tmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1773
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1774
+	msgPackHeader(buf, ptpClock, ANNOUNCE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1775
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1776
+	if (ptpClock->leap59) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1777
+		*(UInteger8 *) (buf + 7) |= 0x02;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1778
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1779
+	if (ptpClock->leap61) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1780
+		*(UInteger8 *) (buf + 7) |= 0x01;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1781
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1782
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1783
+	if (ptpClock->currentUtcOffsetValid)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1784
+		*(UInteger8 *) (buf + 7) |= 0x04;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1785
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1786
 	/* changes in header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1787
-	*(char *)(buf + 0) = *(char *)(buf + 0) & 0xF0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1788
-	/* RAZ messageType */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1789
-	*(char *)(buf + 0) = *(char *)(buf + 0) | 0x0B;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1790
 	/* Table 19 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1791
-	*(UInteger16 *) (buf + 2) = flip16(ANNOUNCE_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1792
+	/* *(UInteger16 *) (buf + 2) = flip16(ANNOUNCE_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1793
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1794
+	tmp = flip16(ANNOUNCE_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1795
+	memcpy((buf + 2), &tmp, sizeof(UInteger16));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1796
 	*(UInteger16 *) (buf + 30) = flip16(ptpClock->sentAnnounceSequenceId);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1797
 	*(UInteger8 *) (buf + 32) = 0x05;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1798
 	/* Table 23 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1799
@@ -166,7 +181,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1800
 		flip16(ptpClock->clockQuality.offsetScaledLogVariance);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1801
 	*(UInteger8 *) (buf + 52) = ptpClock->grandmasterPriority2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1802
 	memcpy((buf + 53), ptpClock->grandmasterIdentity, CLOCK_IDENTITY_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1803
-	*(UInteger16 *) (buf + 61) = flip16(ptpClock->stepsRemoved);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1804
+/*	*(UInteger16 *) (buf + 61) = flip16(ptpClock->stepsRemoved);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1805
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1806
+	tmp = flip16(ptpClock->stepsRemoved);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1807
+	memcpy((buf+61), &tmp, sizeof(UInteger16));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1808
 	*(Enumeration8 *) (buf + 63) = ptpClock->timeSource;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1809
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1810
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1811
@@ -174,6 +192,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1812
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1813
 msgUnpackAnnounce(Octet * buf, MsgAnnounce * announce)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1814
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1815
+	UInteger16 tmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1816
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1817
 	announce->originTimestamp.secondsField.msb = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1818
 		flip16(*(UInteger16 *) (buf + 34));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1819
 	announce->originTimestamp.secondsField.lsb = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1820
@@ -191,7 +211,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1821
 	announce->grandmasterPriority2 = *(UInteger8 *) (buf + 52);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1822
 	memcpy(announce->grandmasterIdentity, (buf + 53), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1823
 	       CLOCK_IDENTITY_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1824
-	announce->stepsRemoved = flip16(*(UInteger16 *) (buf + 61));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1825
+	memcpy(&tmp, (buf+61), sizeof(UInteger16));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1826
+	announce->stepsRemoved = flip16(tmp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1827
+	/*announce->stepsRemoved = flip16(*(UInteger16 *) (buf + 61));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1828
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1829
 	announce->timeSource = *(Enumeration8 *) (buf + 63);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1830
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1831
 #ifdef PTPD_DBG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1832
@@ -203,12 +226,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1833
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1834
 msgPackFollowUp(Octet * buf, Timestamp * preciseOriginTimestamp, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1835
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1836
-	msgPackHeader(buf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1837
+	msgPackHeader(buf, ptpClock, FOLLOW_UP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1838
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1839
 	/* changes in header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1840
-	*(char *)(buf + 0) = *(char *)(buf + 0) & 0xF0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1841
-	/* RAZ messageType */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1842
-	*(char *)(buf + 0) = *(char *)(buf + 0) | 0x08;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1843
 	/* Table 19 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1844
 	*(UInteger16 *) (buf + 2) = flip16(FOLLOW_UP_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1845
 	*(UInteger16 *) (buf + 30) = flip16(ptpClock->sentSyncSequenceId - 1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1846
@@ -248,13 +268,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1847
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1848
 msgPackPDelayReq(Octet * buf, Timestamp * originTimestamp, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1849
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1850
-	msgPackHeader(buf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1851
+	msgPackHeader(buf, ptpClock, PDELAY_REQ);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1852
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1853
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1854
 	/* changes in header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1855
-	*(char *)(buf + 0) = *(char *)(buf + 0) & 0xF0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1856
-	/* RAZ messageType */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1857
-	*(char *)(buf + 0) = *(char *)(buf + 0) | 0x02;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1858
 	/* Table 19 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1859
 	*(UInteger16 *) (buf + 2) = flip16(PDELAY_REQ_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1860
 	*(UInteger16 *) (buf + 30) = flip16(ptpClock->sentPDelayReqSequenceId);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1861
@@ -277,12 +294,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1862
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1863
 msgPackDelayReq(Octet * buf, Timestamp * originTimestamp, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1864
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1865
-	msgPackHeader(buf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1866
+	msgPackHeader(buf, ptpClock, DELAY_REQ);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1867
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1868
 	/* changes in header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1869
-	*(char *)(buf + 0) = *(char *)(buf + 0) & 0xF0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1870
-	/* RAZ messageType */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1871
-	*(char *)(buf + 0) = *(char *)(buf + 0) | 0x01;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1872
 	/* Table 19 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1873
 	*(UInteger16 *) (buf + 2) = flip16(DELAY_REQ_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1874
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1875
@@ -308,21 +322,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1876
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1877
 msgPackDelayResp(Octet * buf, MsgHeader * header, Timestamp * receiveTimestamp, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1878
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1879
-	msgPackHeader(buf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1880
+	msgPackHeader(buf, ptpClock, DELAY_RESP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1881
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1882
 	/* changes in header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1883
-	*(char *)(buf + 0) = *(char *)(buf + 0) & 0xF0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1884
-	/* RAZ messageType */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1885
-	*(char *)(buf + 0) = *(char *)(buf + 0) | 0x09;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1886
 	/* Table 19 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1887
 	*(UInteger16 *) (buf + 2) = flip16(DELAY_RESP_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1888
 	*(UInteger8 *) (buf + 4) = header->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1889
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1890
-#ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1891
-	if(rtOpts.do_hybrid_mode)    
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1892
-		*(char *)(buf + 6) |= PTP_UNICAST;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1893
-#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1894
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1895
 	memset((buf + 8), 0, 8);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1896
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1897
 	/* Copy correctionField of PdelayReqMessage */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1898
@@ -355,12 +360,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1899
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1900
 msgPackPDelayResp(Octet * buf, MsgHeader * header, Timestamp * requestReceiptTimestamp, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1901
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1902
-	msgPackHeader(buf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1903
+	msgPackHeader(buf, ptpClock, PDELAY_RESP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1904
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1905
 	/* changes in header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1906
-	*(char *)(buf + 0) = *(char *)(buf + 0) & 0xF0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1907
-	/* RAZ messageType */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1908
-	*(char *)(buf + 0) = *(char *)(buf + 0) | 0x03;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1909
 	/* Table 19 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1910
 	*(UInteger16 *) (buf + 2) = flip16(PDELAY_RESP_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1911
 	*(UInteger8 *) (buf + 4) = header->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1912
@@ -465,12 +467,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1913
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1914
 msgPackPDelayRespFollowUp(Octet * buf, MsgHeader * header, Timestamp * responseOriginTimestamp, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1915
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1916
-	msgPackHeader(buf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1917
+	msgPackHeader(buf, ptpClock, PDELAY_RESP_FOLLOW_UP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1918
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1919
 	/* changes in header */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1920
-	*(char *)(buf + 0) = *(char *)(buf + 0) & 0xF0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1921
-	/* RAZ messageType */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1922
-	*(char *)(buf + 0) = *(char *)(buf + 0) | 0x0A;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1923
 	/* Table 19 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1924
 	*(UInteger16 *) (buf + 2) = flip16(PDELAY_RESP_FOLLOW_UP_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1925
 	*(UInteger16 *) (buf + 30) = flip16(ptpClock->PdelayReqHeader.sequenceId);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1926
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/net.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1927
--- a/src/dep/net.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1928
+++ b/src/dep/net.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1929
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1930
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1931
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1932
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1933
  * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1934
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1935
  *                         Jan Breuer
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1936
@@ -37,6 +39,14 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1937
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1938
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1939
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1940
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1941
+#include <net/if_arp.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1942
+#include <signal.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1943
+#include "sfxge_ioctl.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1944
+#include <string.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1945
+extern void catch_alarm(int sig);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1946
+#endif /* __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1947
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1948
 #include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1949
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1950
 /* choose kernel-level nanoseconds or microseconds resolution on the client-side */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1951
@@ -44,6 +54,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1952
 #error kernel-level timestamps not detected
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1953
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1954
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1955
+/* Function that wraps up call to send message */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1956
+static int sendMessage(int sockfd, const void *buf, size_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1957
+                       const struct sockaddr *addr, socklen_t addrLen,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1958
+                       const char *messageType)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1959
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1960
+  int rc = sendto(sockfd, buf, length, 0, addr, addrLen);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1961
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1962
+  if (rc < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1963
+    DBG("error sending %s message, errno %d\n", messageType, errno);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1964
+    return errno;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1965
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1966
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1967
+  if (rc != length) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1968
+    DBG("error sending %s message, sent %d bytes, expected %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1969
+        messageType, rc, length);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1970
+    return EIO;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1971
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1972
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1973
+  return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1974
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1975
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1976
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1977
  * shutdown the IPv4 multicast for specific address
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1978
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1979
@@ -149,12 +180,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1980
 	return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1981
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1982
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1983
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1984
 /*Test if network layer is OK for PTP*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1985
 UInteger8 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1986
 lookupCommunicationTechnology(UInteger8 communicationTechnology)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1987
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1988
-#if defined(linux)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1989
+#if defined(linux) || defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1990
 	switch (communicationTechnology) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1991
 	case ARPHRD_ETHER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1992
 	case ARPHRD_EETHER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1993
@@ -164,170 +194,456 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1994
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1995
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1996
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1997
-#endif  /* defined(linux) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1998
+#endif  /* defined(linux) || defined (__sun)*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  1999
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2000
 	return PTP_DEFAULT;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2001
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2002
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2003
+#if defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2004
+/* Find the local network interfacei; For solaris use lifreq */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2005
+UInteger32 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2006
+findIface(Octet * ifaceName, UInteger8 * communicationTechnology,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2007
+    Octet * uuid, NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2008
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2009
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2010
+ /* depends on linux specific ioctls (see 'netdevice' man page) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2011
+ int i, flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2012
+ struct lifconf data;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2013
+ struct lifreq device[IFCONF_LENGTH];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2014
+ struct sockaddr_dl *sdl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2015
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2016
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2017
+  /* an interface specified */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2018
+    if (ifaceName[0] != '\0') {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2019
+    i = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2020
+    memcpy(device[i].lifr_name, ifaceName, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2021
+    sdl = (struct sockaddr_dl *)&device[i].lifr_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2022
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2023
+    if (ioctl(netPath->eventSock, SIOCGLIFHWADDR, &device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2024
+      DBGV("failed to get hardware address\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2025
+    else if ((*communicationTechnology = sdl->sdl_type) != 0x4)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2026
+      DBGV("unsupported communication technology (%d)\n", *communicationTechnology);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2027
+    else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2028
+      memcpy(uuid, sdl->sdl_data, PTP_UUID_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2029
+      clockIdentity_display(uuid);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2030
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2031
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2032
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2033
+    /* no iface specified */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2034
+    /* get list of network interfaces */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2035
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2036
+	data.lifc_family = AF_INET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2037
+	data.lifc_len = sizeof(device);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2038
+	data.lifc_req = device;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2039
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2040
+	memset(data.lifc_buf, 0, data.lifc_len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2041
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2042
+	flags = IFF_UP | IFF_RUNNING | IFF_MULTICAST;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2043
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2044
+    if (ioctl(netPath->eventSock, SIOCGLIFCONF, &data) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2045
+      PERROR("failed query network interfaces");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2046
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2047
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2048
+    if (data.lifc_len >= sizeof(device))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2049
+      DBG("device list may exceed allocated space\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2050
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2051
+    /* search through interfaces */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2052
+    for (i = 0; i < data.lifc_len / sizeof(device[0]); ++i) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2053
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2054
+    sdl = (struct sockaddr_dl *)&device[i].lifr_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2055
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2056
+      DBGV("%d %s %s\n", i, device[i].lifr_name,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2057
+          inet_ntoa(((struct sockaddr_in *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2058
+          &device[i].lifr_addr)->sin_addr));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2059
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2060
+      if (ioctl(netPath->eventSock, SIOCGLIFFLAGS, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2061
+		&device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2062
+        DBGV("failed to get device flags\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2063
+      else if ((device[i].lifr_flags & flags) != flags)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2064
+        DBGV("does not meet requirements"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2065
+            "(%08x, %08x)\n", device[i].lifr_flags,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2066
+            flags);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2067
+      else if (ioctl(netPath->eventSock, SIOCGLIFHWADDR, &device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2068
+        DBGV("failed to get hardware address\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2069
+      else if ((*communicationTechnology = sdl->sdl_type) != 0x4)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2070
+        DBGV("unsupported communication technology (%d)\n", *communicationTechnology);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2071
+      else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2072
+        DBGV("found interface (%s)\n", device[i].lifr_name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2073
+        memcpy(uuid, sdl->sdl_data, PTP_UUID_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2074
+        clockIdentity_display(uuid);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2075
+        memcpy(ifaceName, device[i].lifr_name, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2076
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2077
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2078
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2079
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2080
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2081
+  if (ifaceName[0] == '\0') {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2082
+    ERROR("failed to find a usable interface\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2083
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2084
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2085
+  if (ioctl(netPath->eventSock, SIOCGLIFADDR, &device[i]) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2086
+    PERROR("failed to get ip address");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2087
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2088
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2089
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2090
+  /* @ioctl_timestamping Added support for IOCTL based timestamping for older kernels */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2091
+  netPath->eventSockIFR = device[i];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2092
+  return ((struct sockaddr_in *)&device[i].lifr_addr)->sin_addr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2093
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2094
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2095
+#else /* __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2096
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2097
  /* Find the local network interface */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2098
 UInteger32 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2099
 findIface(Octet * ifaceName, UInteger8 * communicationTechnology,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2100
     Octet * uuid, NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2101
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2102
-#if defined(linux)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2103
+#if defined(linux) || defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2104
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2105
-	/* depends on linux specific ioctls (see 'netdevice' man page) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2106
-	int i, flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2107
-	struct ifconf data;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2108
-	struct ifreq device[IFCONF_LENGTH];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2109
+        /* depends on linux specific ioctls (see 'netdevice' man page) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2110
+        int i, flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2111
+        struct ifconf data;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2112
+        struct ifreq device[IFCONF_LENGTH];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2113
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2114
-	data.ifc_len = sizeof(device);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2115
-	data.ifc_req = device;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2116
+        data.ifc_len = sizeof(device);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2117
+        data.ifc_req = device;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2118
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2119
-	memset(data.ifc_buf, 0, data.ifc_len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2120
+  memset(data.ifc_buf, 0, data.ifc_len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2121
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2122
-	flags = IFF_UP | IFF_RUNNING | IFF_MULTICAST;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2123
+  flags = IFF_UP | IFF_RUNNING | IFF_MULTICAST;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2124
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2125
-	/* look for an interface if none specified */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2126
-	if (ifaceName[0] != '\0') {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2127
-		i = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2128
-		memcpy(device[i].ifr_name, ifaceName, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2129
+  /* an interface specified */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2130
+  if (ifaceName[0] != '\0') {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2131
+    i = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2132
+    memcpy(device[i].ifr_name, ifaceName, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2133
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2134
-		if (ioctl(netPath->eventSock, SIOCGIFHWADDR, &device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2135
-			DBGV("failed to get hardware address\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2136
-		else if ((*communicationTechnology = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2137
-			  lookupCommunicationTechnology(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2138
-				  device[i].ifr_hwaddr.sa_family)) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2139
-			 == PTP_DEFAULT)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2140
-			DBGV("unsupported communication technology (%d)\n", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2141
-			     *communicationTechnology);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2142
-		else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2143
-			memcpy(uuid, device[i].ifr_hwaddr.sa_data, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2144
-			       PTP_UUID_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2145
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2146
-		/* no iface specified */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2147
-		/* get list of network interfaces */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2148
-		if (ioctl(netPath->eventSock, SIOCGIFCONF, &data) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2149
-			PERROR("failed query network interfaces");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2150
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2151
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2152
-		if (data.ifc_len >= sizeof(device))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2153
-			DBG("device list may exceed allocated space\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2154
+    if (ioctl(netPath->eventSock, SIOCGIFHWADDR, &device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2155
+      DBGV("failed to get hardware address\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2156
+    else if ((*communicationTechnology =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2157
+        lookupCommunicationTechnology(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2158
+          device[i].ifr_hwaddr.sa_family)) == PTP_DEFAULT)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2159
+      DBGV("unsupported communication technology1 (%d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2160
+          *communicationTechnology);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2161
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2162
+      memcpy(uuid, device[i].ifr_hwaddr.sa_data, PTP_UUID_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2163
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2164
-		/* search through interfaces */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2165
-		for (i = 0; i < data.ifc_len / sizeof(device[0]); ++i) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2166
-			DBGV("%d %s %s\n", i, device[i].ifr_name, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2167
-			     inet_ntoa(((struct sockaddr_in *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2168
-					&device[i].ifr_addr)->sin_addr));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2169
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2170
+    /* no iface specified */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2171
+    /* get list of network interfaces */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2172
+    if (ioctl(netPath->eventSock, SIOCGIFCONF, &data) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2173
+      PERROR("failed query network interfaces");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2174
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2175
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2176
+    if (data.ifc_len >= sizeof(device))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2177
+      DBG("device list may exceed allocated space\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2178
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2179
-			if (ioctl(netPath->eventSock, SIOCGIFFLAGS, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2180
-				  &device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2181
-				DBGV("failed to get device flags\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2182
-			else if ((device[i].ifr_flags & flags) != flags)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2183
-				DBGV("does not meet requirements"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2184
-				     "(%08x, %08x)\n", device[i].ifr_flags, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2185
-				     flags);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2186
-			else if (ioctl(netPath->eventSock, SIOCGIFHWADDR, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2187
-				       &device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2188
-				DBGV("failed to get hardware address\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2189
-			else if ((*communicationTechnology = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2190
-				  lookupCommunicationTechnology(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2191
-					  device[i].ifr_hwaddr.sa_family)) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2192
-				 == PTP_DEFAULT)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2193
-				DBGV("unsupported communication technology"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2194
-				     "(%d)\n", *communicationTechnology);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2195
-			else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2196
-				DBGV("found interface (%s)\n", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2197
-				     device[i].ifr_name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2198
-				memcpy(uuid, device[i].ifr_hwaddr.sa_data, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2199
-				       PTP_UUID_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2200
-				memcpy(ifaceName, device[i].ifr_name, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2201
-				       IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2202
-				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2203
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2204
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2205
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2206
+    /* search through interfaces */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2207
+    for (i = 0; i < data.ifc_len / sizeof(device[0]); ++i) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2208
+      DBGV("%d %s %s\n", i, device[i].ifr_name,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2209
+          inet_ntoa(((struct sockaddr_in *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2210
+          &device[i].ifr_addr)->sin_addr));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2211
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2212
-	if (ifaceName[0] == '\0') {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2213
-		ERROR("failed to find a usable interface\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2214
-		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2215
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2216
-	if (ioctl(netPath->eventSock, SIOCGIFADDR, &device[i]) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2217
-		PERROR("failed to get ip address");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2218
-		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2219
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2220
-	return ((struct sockaddr_in *)&device[i].ifr_addr)->sin_addr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2221
+      if (ioctl(netPath->eventSock, SIOCGIFFLAGS, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2222
+		&device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2223
+        DBGV("failed to get device flags\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2224
+      else if ((device[i].ifr_flags & flags) != flags)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2225
+        DBGV("does not meet requirements"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2226
+            "(%08x, %08x)\n", device[i].ifr_flags,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2227
+            flags);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2228
+      else if (ioctl(netPath->eventSock, SIOCGIFHWADDR,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2229
+              &device[i]) < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2230
+        DBGV("failed to get hardware address\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2231
+      else if ((*communicationTechnology =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2232
+          lookupCommunicationTechnology(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2233
+            device[i].ifr_hwaddr.sa_family)) == PTP_DEFAULT)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2234
+        DBGV("unsupported communication technology2"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2235
+            "(%d)\n", *communicationTechnology);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2236
+      else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2237
+        DBGV("found interface (%s)\n", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2238
+		device[i].ifr_name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2239
+        memcpy(uuid, device[i].ifr_hwaddr.sa_data, PTP_UUID_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2240
+        memcpy(ifaceName, device[i].ifr_name, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2241
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2242
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2243
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2244
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2245
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2246
+  if (ifaceName[0] == '\0') {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2247
+    ERROR("failed to find a usable interface\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2248
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2249
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2250
+  if (ioctl(netPath->eventSock, SIOCGIFADDR, &device[i]) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2251
+    PERROR("failed to get ip address");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2252
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2253
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2254
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2255
+  /* @ioctl_timestamping Added support for IOCTL based timestamping for older kernels */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2256
+  netPath->eventSockIFR = device[i];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2257
+  return ((struct sockaddr_in *)&device[i].ifr_addr)->sin_addr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2258
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2259
 #else /* usually *BSD */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2260
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2261
-	struct ifaddrs *if_list, *ifv4, *ifh;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2262
+  struct ifaddrs *if_list, *ifv4, *ifh;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2263
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2264
-	if (getifaddrs(&if_list) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2265
-		PERROR("getifaddrs() failed");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2266
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2267
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2268
-	/* find an IPv4, multicast, UP interface, right name(if supplied) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2269
-	for (ifv4 = if_list; ifv4 != NULL; ifv4 = ifv4->ifa_next) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2270
-		if ((ifv4->ifa_flags & IFF_UP) == 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2271
-			continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2272
-		if ((ifv4->ifa_flags & IFF_RUNNING) == 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2273
-			continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2274
-		if ((ifv4->ifa_flags & IFF_LOOPBACK))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2275
-			continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2276
-		if ((ifv4->ifa_flags & IFF_MULTICAST) == 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2277
-			continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2278
-                /* must have IPv4 address */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2279
-		if (ifv4->ifa_addr->sa_family != AF_INET)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2280
-			continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2281
-		if (ifaceName[0] && strncmp(ifv4->ifa_name, ifaceName, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2282
-					    IF_NAMESIZE) != 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2283
-			continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2284
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2285
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2286
+  if (getifaddrs(&if_list) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2287
+    PERROR("getifaddrs() failed");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2288
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2289
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2290
+  /* find an IPv4, multicast, UP interface, right name(if supplied) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2291
+  for (ifv4 = if_list; ifv4 != NULL; ifv4 = ifv4->ifa_next) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2292
+    if ((ifv4->ifa_flags & IFF_UP) == 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2293
+      continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2294
+    if ((ifv4->ifa_flags & IFF_RUNNING) == 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2295
+      continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2296
+    if ((ifv4->ifa_flags & IFF_LOOPBACK))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2297
+      continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2298
+    if ((ifv4->ifa_flags & IFF_MULTICAST) == 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2299
+      continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2300
+    /* must have IPv4 address */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2301
+    if (ifv4->ifa_addr->sa_family != AF_INET)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2302
+      continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2303
+    if (ifaceName[0] && strncmp(ifv4->ifa_name, ifaceName, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2304
+			    IF_NAMESIZE) != 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2305
+      continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2306
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2307
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2308
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2309
-	if (ifv4 == NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2310
-		if (ifaceName[0]) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2311
-			ERROR("interface \"%s\" does not exist,"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2312
-			      "or is not appropriate\n", ifaceName);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2313
-			return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2314
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2315
-		ERROR("no suitable interfaces found!");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2316
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2317
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2318
-	/* find the AF_LINK info associated with the chosen interface */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2319
-	for (ifh = if_list; ifh != NULL; ifh = ifh->ifa_next) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2320
-		if (ifh->ifa_addr->sa_family != AF_LINK)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2321
-			continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2322
-		if (strncmp(ifv4->ifa_name, ifh->ifa_name, IF_NAMESIZE) == 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2323
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2324
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2325
+  if (ifv4 == NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2326
+    if (ifaceName[0]) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2327
+      ERROR("interface \"%s\" does not exist,"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2328
+            "or is not appropriate\n", ifaceName);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2329
+      return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2330
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2331
+    ERROR("no suitable interfaces found!");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2332
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2333
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2334
+  /* find the AF_LINK info associated with the chosen interface */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2335
+  for (ifh = if_list; ifh != NULL; ifh = ifh->ifa_next) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2336
+#ifndef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2337
+    if (ifh->ifa_addr->sa_family != AF_LINK)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2338
+      continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2339
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2340
+    if (strncmp(ifv4->ifa_name, ifh->ifa_name, IF_NAMESIZE) == 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2341
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2342
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2343
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2344
-	if (ifh == NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2345
-		ERROR("could not get hardware address for interface \"%s\"\n", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2346
-		      ifv4->ifa_name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2347
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2348
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2349
-	/* check that the interface TYPE is OK */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2350
-	if (((struct sockaddr_dl *)ifh->ifa_addr)->sdl_type != IFT_ETHER) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2351
-		ERROR("\"%s\" is not an ethernet interface!\n", ifh->ifa_name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2352
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2353
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2354
-	DBG("==> %s %s %s\n", ifv4->ifa_name,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2355
-	    inet_ntoa(((struct sockaddr_in *)ifv4->ifa_addr)->sin_addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2356
-	    ether_ntoa((struct ether_addr *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2357
-		       LLADDR((struct sockaddr_dl *)ifh->ifa_addr))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2358
-	    );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2359
+  if (ifh == NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2360
+    ERROR("could not get hardware address for interface \"%s\"\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2361
+          ifv4->ifa_name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2362
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2363
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2364
+  /* check that the interface TYPE is OK */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2365
+  if (((struct sockaddr_dl *)ifh->ifa_addr)->sdl_type != IFT_ETHER) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2366
+    ERROR("\"%s\" is not an ethernet interface!\n", ifh->ifa_name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2367
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2368
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2369
+  DBG("==> %s %s %s\n", ifv4->ifa_name,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2370
+      inet_ntoa(((struct sockaddr_in *)ifv4->ifa_addr)->sin_addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2371
+      ether_ntoa((struct ether_addr *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2372
+	      LLADDR((struct sockaddr_dl *)ifh->ifa_addr))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2373
+      );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2374
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2375
-	*communicationTechnology = PTP_ETHER;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2376
-	memcpy(ifaceName, ifh->ifa_name, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2377
-	memcpy(uuid, LLADDR((struct sockaddr_dl *)ifh->ifa_addr), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2378
-	       PTP_UUID_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2379
+  *communicationTechnology = PTP_ETHER;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2380
+  memcpy(ifaceName, ifh->ifa_name, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2381
+  memcpy(uuid, LLADDR((struct sockaddr_dl *)ifh->ifa_addr), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2382
+	PTP_UUID_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2383
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2384
-	return ((struct sockaddr_in *)ifv4->ifa_addr)->sin_addr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2385
+  return ((struct sockaddr_in *)ifv4->ifa_addr)->sin_addr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2386
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2387
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2388
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2389
+#endif /* __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2390
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2391
+/* @pdelay_req TODO timestamp is not being collected when PDELAY_REQ messages are */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2392
+/* sent. Collect the timestamp and throw it away for now */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2393
+static int txTimestamp(PtpClock *ptpClock, char *pdu, int pdulen, TimeMode timeMode, Boolean keep)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2394
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2395
+  TimeInternal ts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2396
+  int haveTs = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2397
+  int matchedPkt = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2398
+  NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2399
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2400
+  DUMP("PDU", pdu, pdulen);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2401
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2402
+  switch (ptpClock->tsMethod) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2403
+    case TS_METHOD_SYSTEM:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2404
+      /* Time stamp will appear on the multicast loopback. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2405
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2406
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2407
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2408
+    case TS_METHOD_DRIVER_IOCTL:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2409
+      /* fast path: get send time stamp directly */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2410
+      haveTs = getSendTime(&ts, timeMode, netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2411
+      if(haveTs) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2412
+        DBGV("got send time stamp in first attempt\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2413
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2414
+        /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2415
+         * need to wait for it: need to check system time, counting
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2416
+         * the number of nanoSleep()s is too inaccurate because it
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2417
+         * each call sleeps much longer than requested
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2418
+         */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2419
+        TimeInternal start, now;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2420
+        timerNow(&start);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2421
+        while(TRUE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2422
+          TimeInternal delayAfterPacketSend;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2423
+          delayAfterPacketSend.seconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2424
+          delayAfterPacketSend.nanoseconds = 1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2425
+          nanoSleep(&delayAfterPacketSend);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2426
+          haveTs = getSendTime(&ts, timeMode, netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2427
+          timerNow(&now);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2428
+          subTime(&now, &now, &start);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2429
+          /* 0.1 seconds is the maximum we wait... */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2430
+          if(haveTs || now.seconds >= 1 || now.nanoseconds >= 100000000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2431
+            DBGV("%s send time stamp after %d.%09ds\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2432
+                 haveTs ? "got" : "failed to get",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2433
+                 now.seconds, now.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2434
+            break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2435
+          }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2436
+        }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2437
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2438
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2439
+      if(haveTs) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2440
+        /* TODO can we match the packet in this case? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2441
+        matchedPkt = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2442
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2443
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2444
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2445
+#ifndef  __sun /* Do not compile if __sun as we don't support non-ioctl method yet */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2446
+    case TS_METHOD_SO_TIMESTAMPING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2447
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2448
+      struct cmsghdr *cmsg;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2449
+      struct iovec vec[1];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2450
+      struct msghdr msg;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2451
+      struct sock_extended_err *err;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2452
+      struct timespec *tmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2453
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2454
+      int cnt, level, type;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2455
+      char control[512];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2456
+      unsigned char buf[PACKET_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2457
+      const char *ts_text;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2458
+      
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2459
+      vec[0].iov_base = buf;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2460
+      vec[0].iov_len = sizeof(buf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2461
+      memset(&msg, 0, sizeof(msg));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2462
+      msg.msg_iov = vec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2463
+      msg.msg_iovlen = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2464
+      msg.msg_control = control;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2465
+      msg.msg_controllen = sizeof(control);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2466
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2467
+      /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2468
+       * need to wait for it: need to check system time, counting
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2469
+       * the number of nanoSleep()s is too inaccurate because it
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2470
+       * each call sleeps much longer than requested
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2471
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2472
+      TimeInternal start, now;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2473
+      timerNow(&start);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2474
+      while((cnt = recvmsg(netPath->eventSock, &msg, MSG_ERRQUEUE)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2475
+        if ((errno == EAGAIN) || (errno == EINTR)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2476
+          TimeInternal delay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2477
+          delay.seconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2478
+          delay.nanoseconds = 1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2479
+          nanoSleep(&delay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2480
+          timerNow(&now);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2481
+          subTime(&now, &now, &start);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2482
+          /* 0.1 second is the maximum we wait... */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2483
+          if(now.seconds >= 1 || now.nanoseconds >= 100000000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2484
+            DBGV("Failed to get send time stamp after %d.%09ds\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2485
+                 now.seconds, now.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2486
+            return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2487
+          }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2488
+        } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2489
+          ERROR("recvmsg failed: %s\n", strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2490
+          return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2491
+        }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2492
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2493
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2494
+      if (cnt < pdulen) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2495
+        ERROR("recvmsg returned only %d of %d bytes\n", cnt, pdulen);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2496
+        return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2497
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2498
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2499
+      DUMP("cmsg all", buf, cnt);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2500
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2501
+      for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2502
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2503
+        level = cmsg->cmsg_level;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2504
+        type  = cmsg->cmsg_type;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2505
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2506
+        DUMP("cmsg", cmsg, cmsg->cmsg_len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2507
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2508
+        if (SOL_SOCKET == level && SO_TIMESTAMPING == type) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2509
+          if (cmsg->cmsg_len < sizeof(*tmp)*3) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2510
+            ERROR("received short so_timestamping\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2511
+            return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2512
+          }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2513
+          /* array of three time stamps: software, HW, raw HW */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2514
+          tmp = (struct timespec*)CMSG_DATA(cmsg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2515
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2516
+          switch (timeMode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2517
+            case TIME_SYSTEM_LINUX_SW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2518
+              /* Desired timestamp is first in array */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2519
+              ts_text = "SW SYS";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2520
+              break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2521
+            case TIME_SYSTEM_LINUX_HW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2522
+              /* Desired timestamp is second in array */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2523
+              ts_text = "HW SYS";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2524
+              tmp++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2525
+            break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2526
+            case TIME_NIC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2527
+            case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2528
+              /* Desired timestamp is third in array */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2529
+              ts_text = "HW RAW";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2530
+              tmp += 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2531
+              break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2532
+            default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2533
+              ERROR("Invalid case in switch %d\n", timeMode);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2534
+              break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2535
+          }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2536
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2537
+          if (tmp->tv_sec && tmp->tv_nsec) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2538
+            DBG("%s Tx TIMESTAMP: %d.%09d\n", ts_text, tmp->tv_sec, tmp->tv_nsec);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2539
+            ts.seconds = tmp->tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2540
+            ts.nanoseconds = tmp->tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2541
+            haveTs = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2542
+          }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2543
+        } else if (IPPROTO_IP == level && IP_RECVERR == type) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2544
+          err = (struct sock_extended_err*)CMSG_DATA(cmsg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2545
+          if (err->ee_errno == ENOMSG &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2546
+              err->ee_origin == SO_EE_ORIGIN_TIMESTAMPING &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2547
+              !memcmp(pdu, buf + cnt - pdulen, pdulen)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2548
+            matchedPkt = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2549
+          }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2550
+        }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2551
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2552
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2553
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2554
+#endif /* ifndef __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2555
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2556
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2557
+      ERROR("!!! txTimestamp() Unexpected time mode %d\n", timeMode);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2558
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2559
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2560
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2561
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2562
+  if (!haveTs || !matchedPkt) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2563
+    return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2564
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2565
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2566
+  if (keep) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2567
+    /* Push packet onto stack. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2568
+    int index = netPath->tx_stack.count;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2569
+    if (TX_STACK_SIZE == index) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2570
+      ERROR("out of stack space\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2571
+      return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2572
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2573
+    memcpy(netPath->tx_stack.data[index].buf, pdu, pdulen);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2574
+    netPath->tx_stack.data[index].len = pdulen;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2575
+    netPath->tx_stack.data[index].ts = ts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2576
+    netPath->tx_stack.count++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2577
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2578
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2579
+  return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2580
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2581
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2582
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2583
  * Init the multcast for specific IPv4 address
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2584
@@ -390,7 +706,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2585
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2586
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2587
 	/* Init Peer multicast IP address */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2588
-	memcpy(addrStr, PEER_PTP_DOMAIN_ADDRESS, NET_ADDRESS_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2589
+	strncpy(addrStr, PEER_PTP_DOMAIN_ADDRESS, NET_ADDRESS_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2590
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2591
 	if (!inet_aton(addrStr, &netAddr)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2592
 		ERROR("failed to encode multi-cast address: %s\n", addrStr);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2593
@@ -413,9 +729,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2594
  * @return TRUE if successful
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2595
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2596
 Boolean 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2597
-netInitTimestamping(NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2598
+netInitTimestamping(NetPath * netPath, Boolean useSystemTimeStamps)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2599
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2600
-	int val = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2601
+	int val = useSystemTimeStamps;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2602
 	Boolean result = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2603
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2604
 #if defined(SO_TIMESTAMPNS) /* Linux, Apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2605
@@ -457,70 +773,76 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2606
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2607
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2608
  * start all of the UDP stuff 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2609
- * must specify 'subdomainName', and optionally 'ifaceName', 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2610
+ * must specify 'subdomainName', and optionally 'ifaceName',
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2611
  * if not then pass ifaceName == "" 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2612
- * on socket options, see the 'socket(7)' and 'ip' man pages 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2613
+ * on socket options, see the 'socket(7)' and 'ip' man pages
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2614
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2615
  * @param netPath 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2616
- * @param rtOpts 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2617
+ * @param rtOpts
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2618
  * @param ptpClock 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2619
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2620
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2621
  * @return TRUE if successful
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2622
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2623
-Boolean 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2624
+Boolean
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2625
 netInit(NetPath * netPath, RunTimeOpts * rtOpts, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2626
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2627
-	int temp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2628
-	struct in_addr interfaceAddr, netAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2629
-	struct sockaddr_in addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2630
+  int temp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2631
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2632
+  uchar_t temp_char;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2633
+  char devpath[MAXLINKNAMELEN];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2634
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2635
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2636
-	DBG("netInit\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2637
+  struct in_addr interfaceAddr, netAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2638
+  struct sockaddr_in addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2639
+  Boolean useSystemTimeStamps = (rtOpts->time_mode == TIME_SYSTEM);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2640
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2641
-	/* open sockets */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2642
-	if ((netPath->eventSock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2643
-	    || (netPath->generalSock = socket(PF_INET, SOCK_DGRAM, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2644
-					      IPPROTO_UDP)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2645
-		PERROR("failed to initalize sockets");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2646
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2647
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2648
-	/* find a network interface */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2649
-	if (!(interfaceAddr.s_addr = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2650
-	      findIface(rtOpts->ifaceName, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2651
-			&ptpClock->port_communication_technology,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2652
-			ptpClock->port_uuid_field, netPath)))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2653
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2654
+  DBG("netInit\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2655
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2656
-	/* save interface address for IGMP refresh */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2657
-	netPath->interfaceAddr = interfaceAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2658
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2659
-	DBG("Local IP address used : %s \n", inet_ntoa(interfaceAddr));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2660
+  /* open sockets */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2661
+  if ((netPath->eventSock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2662
+      || (netPath->generalSock = socket(PF_INET, SOCK_DGRAM,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2663
+		      IPPROTO_UDP)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2664
+    PERROR("failed to initalize sockets");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2665
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2666
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2667
+  /* find a network interface */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2668
+  if (!(interfaceAddr.s_addr =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2669
+        findIface(rtOpts->ifaceName,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2670
+      &ptpClock->port_communication_technology,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2671
+      ptpClock->port_uuid_field, netPath)))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2672
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2673
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2674
-	temp = 1;			/* allow address reuse */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2675
-	if (setsockopt(netPath->eventSock, SOL_SOCKET, SO_REUSEADDR, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2676
-		       &temp, sizeof(int)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2677
-	    || setsockopt(netPath->generalSock, SOL_SOCKET, SO_REUSEADDR, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2678
-			  &temp, sizeof(int)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2679
-		DBG("failed to set socket reuse\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2680
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2681
-	/* bind sockets */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2682
-	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2683
-	 * need INADDR_ANY to allow receipt of multi-cast and uni-cast
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2684
-	 * messages
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2685
-	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2686
-	addr.sin_family = AF_INET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2687
-	addr.sin_addr.s_addr = htonl(INADDR_ANY);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2688
-	addr.sin_port = htons(PTP_EVENT_PORT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2689
-	if (bind(netPath->eventSock, (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2690
-		 sizeof(struct sockaddr_in)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2691
-		PERROR("failed to bind event socket");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2692
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2693
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2694
-	addr.sin_port = htons(PTP_GENERAL_PORT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2695
-	if (bind(netPath->generalSock, (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2696
-		 sizeof(struct sockaddr_in)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2697
-		PERROR("failed to bind general socket");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2698
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2699
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2700
+  /* save interface address for IGMP refresh */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2701
+  netPath->interfaceAddr = interfaceAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2702
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2703
+  DBG("Local IP address used : %s \n", inet_ntoa(interfaceAddr));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2704
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2705
+  temp = 1;			/* allow address reuse */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2706
+  if (setsockopt(netPath->eventSock, SOL_SOCKET, SO_REUSEADDR,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2707
+			  &temp, sizeof(int)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2708
+      || setsockopt(netPath->generalSock, SOL_SOCKET, SO_REUSEADDR, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2709
+	      &temp, sizeof(int)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2710
+    DBG("failed to set socket reuse\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2711
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2712
+  /* bind sockets */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2713
+  /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2714
+  * need INADDR_ANY to allow receipt of multi-cast and uni-cast
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2715
+  * messages
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2716
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2717
+  addr.sin_family = AF_INET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2718
+  addr.sin_addr.s_addr = htonl(INADDR_ANY);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2719
+  addr.sin_port = htons(PTP_EVENT_PORT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2720
+  if (bind(netPath->eventSock, (struct sockaddr *)&addr,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2721
+    sizeof(struct sockaddr_in)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2722
+    PERROR("failed to bind event socket");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2723
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2724
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2725
+  addr.sin_port = htons(PTP_GENERAL_PORT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2726
+  if (bind(netPath->generalSock, (struct sockaddr *)&addr,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2727
+    sizeof(struct sockaddr_in)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2728
+    PERROR("failed to bind general socket");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2729
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2730
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2731
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2732
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2733
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2734
@@ -545,111 +867,256 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2735
 		PERROR("failed to call SO_BINDTODEVICE on the interface");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2736
 		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2737
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2738
+#endif  /* linux */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2739
+#endif  /* USE_BINDTODEVICE */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2740
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2741
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2742
+  /* send a uni-cast address if specified (useful for testing) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2743
+  if (rtOpts->unicastAddress[0]) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2744
+    /* Attempt a DNS lookup first. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2745
+    struct hostent *host;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2746
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2747
+    host = gethostbyname(rtOpts->unicastAddress);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2748
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2749
+    host = gethostbyname2(rtOpts->unicastAddress, AF_INET);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2750
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2751
-#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2752
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2753
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2754
-	/* send a uni-cast address if specified (useful for testing) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2755
-	if (rtOpts->unicastAddress[0]) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2756
-		/* Attempt a DNS lookup first. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2757
-		struct hostent *host;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2758
-		host = gethostbyname2(rtOpts->unicastAddress, AF_INET);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2759
-                if (host != NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2760
-			if (host->h_length != 4) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2761
-				PERROR("unicast host resolved to non ipv4"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2762
-				       "address");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2763
-				return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2764
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2765
-			netPath->unicastAddr = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2766
-				*(uint32_t *)host->h_addr_list[0];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2767
-		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2768
-			/* Maybe it's a dotted quad. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2769
-			if (!inet_aton(rtOpts->unicastAddress, &netAddr)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2770
-				ERROR("failed to encode uni-cast address: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2771
-				      rtOpts->unicastAddress);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2772
-				return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2773
-				netPath->unicastAddr = netAddr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2774
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2775
-                }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2776
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2777
-                netPath->unicastAddr = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2778
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2779
+    if (host != NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2780
+      if (host->h_length != 4) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2781
+        PERROR("unicast host resolved to non ipv4"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2782
+              "address");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2783
+        return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2784
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2785
+      netPath->unicastAddr =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2786
+	      *(uint32_t *)host->h_addr_list[0];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2787
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2788
+      /* Maybe it's a dotted quad. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2789
+      if (!inet_aton(rtOpts->unicastAddress, &netAddr)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2790
+        ERROR("failed to encode uni-cast address: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2791
+              rtOpts->unicastAddress);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2792
+        return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2793
+        netPath->unicastAddr = netAddr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2794
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2795
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2796
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2797
+    netPath->unicastAddr = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2798
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2799
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2800
 	/* init UDP Multicast on both Default and Pear addresses */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2801
 	if (!netInitMulticast(netPath, rtOpts)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2802
 		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2803
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2804
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2805
-	/* set socket time-to-live to 1 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2806
+  /* set socket time-to-live to 1 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2807
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2808
-	if (setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_TTL, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2809
-		       &rtOpts->ttl, sizeof(int)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2810
-	    || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_TTL, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2811
-			  &rtOpts->ttl, sizeof(int)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2812
-		PERROR("failed to set the multi-cast time-to-live");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2813
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2814
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2815
+  if (setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_TTL,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2816
+          &rtOpts->ttl, sizeof(rtOpts->ttl)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2817
+      || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_TTL,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2818
+        &rtOpts->ttl, sizeof(rtOpts->ttl)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2819
+    PERROR("failed to set the multi-cast time-to-live");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2820
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2821
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2822
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2823
-	/* enable loopback */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2824
-	temp = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2825
+#ifndef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2826
+  /* enable loopback */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2827
+  temp = useSystemTimeStamps;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2828
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2829
 	DBG("Going to set IP_MULTICAST_LOOP with %d \n", temp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2830
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2831
-	if (setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_LOOP, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2832
-		       &temp, sizeof(int)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2833
-	    || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_LOOP, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2834
-			  &temp, sizeof(int)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2835
-		PERROR("failed to enable multi-cast loopback");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2836
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2837
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2838
+  if (setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_LOOP,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2839
+          &temp, sizeof(int)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2840
+      || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_LOOP,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2841
+        &temp, sizeof(int)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2842
+    PERROR("failed to enable multi-cast loopback");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2843
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2844
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2845
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2846
+  /* enable loopback */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2847
+  /* On Solaris, the IP_MULTICAST_LOOP takes uchar_t as data */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2848
+  temp_char = useSystemTimeStamps;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2849
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2850
+  DBG("Going to set IP_MULTICAST_LOOP with %d \n", temp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2851
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2852
+  if (setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_LOOP,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2853
+          &temp_char, sizeof(temp_char)) < 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2854
+      || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_LOOP,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2855
+        &temp_char, sizeof(temp_char)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2856
+    PERROR("failed to enable multi-cast loopback");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2857
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2858
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2859
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2860
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2861
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2862
+  /* Open a socket for hw assist IOCTLs only if we need it */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2863
+  if (rtOpts->time_mode == TIME_BOTH || rtOpts->time_mode == TIME_NIC) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2864
+       /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2865
+        * On Solaris, we cannot use netPath->eventSock to send ioctl to 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2866
+        * NIC driver as eventSock is a datagram socket. In the plumbed
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2867
+        * network stack, ip module act as a driver which means ip will
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2868
+        * not pass unknown ioctl down. So, we create a new fd to be
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2869
+        * used for ioctls to NIC.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2870
+        */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2871
+       snprintf(devpath, sizeof(devpath), "/dev/net/%s", rtOpts->ifaceName); 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2872
+       if ((netPath->devFd = open(devpath, O_RDWR)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2873
+               PERROR("failed to open device %s\n", devpath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2874
+               return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2875
+       } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2876
+               DBG("open()ed %s\n", devpath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2877
+       }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2878
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2879
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2880
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2881
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2882
 	/* make timestamps available through recvmsg() */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2883
-	if (!netInitTimestamping(netPath)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2884
+	if (!netInitTimestamping(netPath, useSystemTimeStamps)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2885
 		ERROR("failed to enable receive time stamps");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2886
 		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2887
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2888
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2889
-	return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2890
+  return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2891
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2892
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2893
 /*Check if data have been received*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2894
-int 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2895
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2896
 netSelect(TimeInternal * timeout, NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2897
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2898
-	int ret, nfds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2899
-	fd_set readfds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2900
-	struct timeval tv, *tv_ptr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2901
+  int ret, nfds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2902
+  fd_set readfds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2903
+  struct timespec tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2904
+  const struct timespec *tv_ptr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2905
+  sigset_t ignore_sigs;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2906
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2907
-	if (timeout < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2908
-		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2909
+  if (netPath->tx_stack.count)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2910
+    return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2911
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2912
-	FD_ZERO(&readfds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2913
-	FD_SET(netPath->eventSock, &readfds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2914
-	FD_SET(netPath->generalSock, &readfds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2915
+  FD_ZERO(&readfds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2916
+  FD_SET(netPath->eventSock, &readfds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2917
+  FD_SET(netPath->generalSock, &readfds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2918
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2919
-	if (timeout) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2920
-		tv.tv_sec = timeout->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2921
-		tv.tv_usec = timeout->nanoseconds / 1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2922
-		tv_ptr = &tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2923
-	} else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2924
-		tv_ptr = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2925
+  if (timeout) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2926
+    tv.tv_sec = timeout->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2927
+    tv.tv_nsec = timeout->nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2928
+    tv_ptr = &tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2929
+  } else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2930
+    tv_ptr = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2931
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2932
-	if (netPath->eventSock > netPath->generalSock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2933
-		nfds = netPath->eventSock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2934
-	else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2935
-		nfds = netPath->generalSock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2936
+  if (netPath->eventSock > netPath->generalSock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2937
+    nfds = netPath->eventSock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2938
+  else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2939
+    nfds = netPath->generalSock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2940
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2941
-	ret = select(nfds + 1, &readfds, 0, 0, tv_ptr) > 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2942
+  ret = pselect(nfds + 1, &readfds, 0, 0, tv_ptr, &ignore_sigs) > 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2943
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2944
-	if (ret < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2945
-		if (errno == EAGAIN || errno == EINTR)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2946
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2947
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2948
-	return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2949
+  if (ret < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2950
+    if (errno == EAGAIN || errno == EINTR)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2951
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2952
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2953
+  return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2954
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2955
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2956
+#ifdef linux
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2957
+/* Used to get receive timestamps when in the SYSTEM  LINUX_HW or LINUX_SW time modes */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2958
+static int do_rx_timestamping(struct msghdr *msg, TimeInternal *time, RunTimeOpts *rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2959
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2960
+    struct cmsghdr *cm;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2961
+    struct timeval *tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2962
+    Boolean have_time = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2963
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2964
+    /* @ioctl_timestamping As v1 code, added bool to break out of loop on discovery for ts. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2965
+    for (cm = CMSG_FIRSTHDR(msg); !have_time && cm != NULL; cm = CMSG_NXTHDR(msg, cm)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2966
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2967
+        struct timespec *stamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2968
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2969
+        DUMP("CM", cm, cm->cmsg_len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2970
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2971
+        if (cm->cmsg_level != SOL_SOCKET)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2972
+            continue;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2973
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2974
+        switch (cm->cmsg_type) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2975
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2976
+        case SCM_TIMESTAMP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2977
+            tv = (struct timeval *)CMSG_DATA(cm);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2978
+            if(cm->cmsg_len < sizeof(*tv))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2979
+            {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2980
+                ERROR("received short SCM_TIMESTAMP (%d/%d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2981
+                      cm->cmsg_len, sizeof(*tv));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2982
+                return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2983
+            }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2984
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2985
+            time->seconds = tv->tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2986
+            time->nanoseconds = tv->tv_usec*1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2987
+            have_time = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2988
+            break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2989
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2990
+#ifdef SO_TIMESTAMPNS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2991
+        case SCM_TIMESTAMPNS:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2992
+            stamp = (struct timespec *)CMSG_DATA(cm);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2993
+            if(cm->cmsg_len < sizeof(*stamp))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2994
+            {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2995
+                ERROR("received short SCM_TIMESTAMPNS (%d/%d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2996
+                      cm->cmsg_len, sizeof(*stamp));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2997
+                return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2998
+            }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  2999
+            time->seconds = stamp->tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3000
+            time->nanoseconds = stamp->tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3001
+            have_time = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3002
+            break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3003
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3004
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3005
+        case SO_TIMESTAMPING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3006
+        {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3007
+            const char *ts_text;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3008
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3009
+            /* array of three time stamps: software, HW, raw HW */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3010
+            stamp = (struct timespec*)CMSG_DATA(cm);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3011
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3012
+            if (cm->cmsg_len < sizeof(*stamp)*3) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3013
+                ERROR("received short SO_TIMESTAMPING (%d/%d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3014
+                cm->cmsg_len, (int)sizeof(*stamp)*3);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3015
+                return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3016
+            }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3017
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3018
+            switch (rtOpts->time_mode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3019
+                case TIME_SYSTEM_LINUX_SW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3020
+                    /* Desired timestamp is first in array */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3021
+                    ts_text = "SW SYS";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3022
+                    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3023
+                case TIME_SYSTEM_LINUX_HW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3024
+                    /* Desired timestamp is second in array */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3025
+                    ts_text = "HW SYS";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3026
+                    stamp++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3027
+                    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3028
+                case TIME_NIC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3029
+                case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3030
+                    /* Desired timestamp is third in array */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3031
+                    ts_text = "HW RAW";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3032
+                    stamp += 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3033
+                    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3034
+                default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3035
+                    ERROR("Invalid case in switch %d\n", rtOpts->time_mode);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3036
+                    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3037
+            }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3038
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3039
+            if (stamp->tv_sec && stamp->tv_nsec) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3040
+                DBG2("%s Rx TIMESTAMP %d.%09d\n", ts_text, stamp->tv_sec, stamp->tv_nsec);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3041
+                time->seconds = stamp->tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3042
+                time->nanoseconds = stamp->tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3043
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3044
+                have_time = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3045
+            }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3046
+        }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3047
+            break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3048
+        }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3049
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3050
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3051
+    if (!have_time) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3052
+        DBG("no receive time stamp\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3053
+        return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3054
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3055
+    DBG("kernel recv time stamp %us %dns\n", time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3056
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3057
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3058
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3059
+#endif /* linux */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3060
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3061
 /** 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3062
  * store received data from network to "buf" , get and store the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3063
@@ -668,16 +1135,17 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3064
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3065
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3066
 ssize_t 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3067
-netRecvEvent(Octet * buf, TimeInternal * time, NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3068
+netRecvEvent(Octet * buf, TimeInternal * time, PtpClock *ptpClock, RunTimeOpts *rtOpts, Boolean *loopedBackTx)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3069
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3070
 	ssize_t ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3071
 	struct msghdr msg;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3072
 	struct iovec vec[1];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3073
 	struct sockaddr_in from_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3074
+	NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3075
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3076
 	union {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3077
 		struct cmsghdr cm;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3078
-		char	control[CMSG_SPACE(sizeof(struct timeval))];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3079
+		char	control[512];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3080
 	}     cmsg_un;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3081
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3082
 	struct cmsghdr *cmsg;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3083
@@ -690,10 +1158,25 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3084
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3085
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3086
 #if defined(SO_TIMESTAMP)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3087
-	struct timeval * tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3088
+	struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3089
+	struct timeval * tv1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3090
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3091
 	Boolean timestampValid = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3092
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3093
+  /* Pop packet from stack. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3094
+  if (netPath->tx_stack.count) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3095
+    int index = netPath->tx_stack.count - 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3096
+    ret = netPath->tx_stack.data[index].len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3097
+    memcpy(buf, netPath->tx_stack.data[index].buf, ret);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3098
+    time->seconds = netPath->tx_stack.data[index].ts.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3099
+    time->nanoseconds = netPath->tx_stack.data[index].ts.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3100
+    netPath->tx_stack.count--;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3101
+    DBGV("netRecvEvent: ts from stack %d bytes\n", ret);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3102
+    *loopedBackTx = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3103
+    return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3104
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3105
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3106
+	*loopedBackTx = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3107
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3108
 	vec[0].iov_base = buf;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3109
 	vec[0].iov_len = PACKET_SIZE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3110
@@ -735,10 +1218,19 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3111
 	netPath->lastRecvAddr = from_addr.sin_addr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3112
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3113
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3114
+  /* If we are collecting timestamps using the driver IOCTL method, we
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3115
+   * need to wait until we've decoded the header before processing the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3116
+   * timestamps. For other methods, call do_rx_timestamping().
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3117
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3118
+  if (ptpClock->tsMethod == TS_METHOD_DRIVER_IOCTL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3119
+    return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3120
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3121
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3122
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3123
+#ifdef linux
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3124
+  return (do_rx_timestamping(&msg, time, rtOpts) == 0)? ret: 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3125
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3126
 	if (msg.msg_controllen <= 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3127
-		ERROR("received short ancillary data (%ld/%ld)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3128
+		ERROR("netRecvEvent: received short ancillary data (%ld/%ld)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3129
 		    (long)msg.msg_controllen, (long)sizeof(cmsg_un.control));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3130
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3131
 		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3132
@@ -772,9 +1264,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3133
 			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3134
 #if defined(SO_TIMESTAMP)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3135
 			if(cmsg->cmsg_type == SCM_TIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3136
-				tv = (struct timeval *)CMSG_DATA(cmsg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3137
-				time->seconds = tv->tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3138
-				time->nanoseconds = tv->tv_usec * 1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3139
+				tv1 = (struct timeval *)CMSG_DATA(cmsg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3140
+				/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3141
+				 * tv->sec is 8 byte field, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3142
+				 * tv may not be 8 byte aligned.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3143
+				 * Use memcpy();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3144
+				 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3145
+				 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3146
+				memcpy(&tv, tv1, sizeof(struct timeval));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3147
+				time->seconds = tv.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3148
+				time->nanoseconds = tv.tv_usec * 1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3149
 				timestampValid = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3150
 				DBGV("kernel MICRO recv time stamp %us %dns\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3151
 				     time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3152
@@ -795,6 +1294,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3153
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3154
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3155
 	return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3156
+#endif /* ifdef linux */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3157
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3158
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3159
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3160
@@ -811,13 +1311,34 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3161
  * @return 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3162
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3163
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3164
+ssize_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3165
+netRecvGeneral_old(Octet * buf, TimeInternal * time, NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3166
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3167
+  ssize_t ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3168
+  struct sockaddr_in from_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3169
+  socklen_t addr_len = sizeof(struct sockaddr_in);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3170
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3171
+  ret = recvfrom(netPath->generalSock, buf, PACKET_SIZE, MSG_DONTWAIT,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3172
+          (struct sockaddr *)&from_addr, &addr_len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3173
+  if (ret <= 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3174
+    if (errno == EAGAIN || errno == EINTR)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3175
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3176
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3177
+    return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3178
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3179
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3180
+  DBGV("netRecvGeneral: rxed %d bytes\n", ret);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3181
+  return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3182
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3183
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3184
 ssize_t 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3185
-netRecvGeneral(Octet * buf, TimeInternal * time, NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3186
+netRecvGeneral(Octet * buf, TimeInternal * time,  PtpClock *ptpClock, RunTimeOpts *rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3187
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3188
 	ssize_t ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3189
 	struct msghdr msg;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3190
 	struct iovec vec[1];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3191
 	struct sockaddr_in from_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3192
+	NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3193
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3194
 	union {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3195
 		struct cmsghdr cm;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3196
@@ -825,7 +1346,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3197
 	}     cmsg_un;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3198
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3199
 	struct cmsghdr *cmsg;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3200
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3201
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3202
 #if defined(SO_TIMESTAMPNS)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3203
 	struct timespec * ts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3204
 #elif defined(SO_BINTIME)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3205
@@ -834,7 +1355,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3206
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3207
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3208
 #if defined(SO_TIMESTAMP)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3209
-	struct timeval * tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3210
+	struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3211
+	struct timeval * tv1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3212
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3213
 	Boolean timestampValid = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3214
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3215
@@ -880,11 +1402,18 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3216
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3217
 	netPath->lastRecvAddr = from_addr.sin_addr.s_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3218
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3219
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3220
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3221
+  /* If we are collecting timestamps using the driver IOCTL method, we
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3222
+   * need to wait until we've decoded the header before processing the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3223
+   * timestamps. For other methods, call do_rx_timestamping().
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3224
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3225
+  if (ptpClock->tsMethod == TS_METHOD_DRIVER_IOCTL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3226
+    return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3227
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3228
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3229
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3230
 	if (msg.msg_controllen <= 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3231
-		ERROR("received short ancillary data (%ld/%ld)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3232
+		ERROR("netRecvGeneral : received short ancillary data (%ld/%ld)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3233
 		      (long)msg.msg_controllen, (long)sizeof(cmsg_un.control));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3234
 		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3235
 		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3236
@@ -918,9 +1447,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3237
 			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3238
 #if defined(SO_TIMESTAMP)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3239
 			if(cmsg->cmsg_type == SCM_TIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3240
-				tv = (struct timeval *)CMSG_DATA(cmsg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3241
-				time->seconds = tv->tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3242
-				time->nanoseconds = tv->tv_usec * 1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3243
+				tv1 = (struct timeval *)CMSG_DATA(cmsg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3244
+				memcpy(&tv, tv1, sizeof (struct timeval));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3245
+				time->seconds = tv.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3246
+				time->nanoseconds = tv.tv_usec * 1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3247
 				timestampValid = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3248
 				DBGV("kernel MICRO recv time stamp %us %dns\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3249
 				     time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3250
@@ -955,11 +1485,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3251
 ///
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3252
 /// TODO: merge these 2 functions into one
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3253
 ///
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3254
-ssize_t 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3255
-netSendEvent(Octet * buf, UInteger16 length, NetPath * netPath, Integer32 alt_dst)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3256
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3257
+netSendEvent(Octet * buf, UInteger16 length, PtpClock *ptpClock, RunTimeOpts *rtOpts, Integer32 alt_dst)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3258
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3259
-	ssize_t ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3260
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3261
 	struct sockaddr_in addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3262
+	NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3263
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3264
 	addr.sin_family = AF_INET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3265
 	addr.sin_port = htons(PTP_EVENT_PORT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3266
@@ -971,75 +1502,71 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3267
 			addr.sin_addr.s_addr = alt_dst;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3268
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3269
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3270
-		ret = sendto(netPath->eventSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3271
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3272
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3273
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3274
-			DBG("error sending uni-cast event message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3275
-		/* 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3276
+		ret = sendMessage(netPath->eventSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3277
+                      (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3278
+                      "unicast event");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3279
+		if (ret == 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3280
+		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3281
 		 * Need to forcibly loop back the packet since
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3282
-		 * we are not using multicast. 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3283
+		 * we are not using multicast.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3284
 		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3285
 		addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3286
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3287
-		ret = sendto(netPath->eventSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3288
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3289
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3290
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3291
-			DBG("error looping back uni-cast event message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3292
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3293
+		ret = sendMessage(netPath->eventSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3294
+                        (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3295
+                        "loopback unicast event");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3296
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3297
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3298
 		addr.sin_addr.s_addr = netPath->multicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3299
+    
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3300
+		ret = sendMessage(netPath->eventSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3301
+                      (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3302
+                      "multicast event");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3303
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3304
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3305
-		ret = sendto(netPath->eventSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3306
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3307
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3308
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3309
-			DBG("error sending multi-cast event message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3310
+	if (ret == 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3311
+		if (txTimestamp(ptpClock, (char *)buf, length, rtOpts->time_mode, TRUE) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3312
+			ERROR("txTimestamp failed\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3313
+			ret = ENOTIMESTAMP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3314
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3315
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3316
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3317
 	return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3318
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3319
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3320
-ssize_t 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3321
+int 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3322
 netSendGeneral(Octet * buf, UInteger16 length, NetPath * netPath, Integer32 alt_dst)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3323
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3324
-	ssize_t ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3325
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3326
 	struct sockaddr_in addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3327
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3328
 	addr.sin_family = AF_INET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3329
 	addr.sin_port = htons(PTP_GENERAL_PORT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3330
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3331
 	if(netPath->unicastAddr || alt_dst ){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3332
-	if (netPath->unicastAddr) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3333
-		addr.sin_addr.s_addr = netPath->unicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3334
+		if (netPath->unicastAddr) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3335
+			addr.sin_addr.s_addr = netPath->unicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3336
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3337
 			addr.sin_addr.s_addr = alt_dst;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3338
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3339
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3340
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3341
-		ret = sendto(netPath->generalSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3342
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3343
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3344
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3345
-			DBG("error sending uni-cast general message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3346
+		ret = sendMessage(netPath->eventSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3347
+                      (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3348
+                      "unicast general");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3349
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3350
 		addr.sin_addr.s_addr = netPath->multicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3351
+		ret = sendMessage(netPath->generalSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3352
+                      (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3353
+                      "multicast general");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3354
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3355
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3356
-		ret = sendto(netPath->generalSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3357
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3358
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3359
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3360
-			DBG("error sending multi-cast general message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3361
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3362
 	return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3363
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3364
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3365
-ssize_t 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3366
+int 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3367
 netSendPeerGeneral(Octet * buf, UInteger16 length, NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3368
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3369
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3370
-	ssize_t ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3371
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3372
 	struct sockaddr_in addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3373
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3374
 	addr.sin_family = AF_INET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3375
@@ -1048,64 +1575,52 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3376
 	if (netPath->unicastAddr) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3377
 		addr.sin_addr.s_addr = netPath->unicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3378
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3379
-		ret = sendto(netPath->generalSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3380
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3381
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3382
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3383
-			DBG("error sending uni-cast general message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3384
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3385
+		ret = sendMessage(netPath->eventSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3386
+                      (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3387
+                      "unicast general");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3388
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3389
 		addr.sin_addr.s_addr = netPath->peerMulticastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3390
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3391
-		ret = sendto(netPath->generalSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3392
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3393
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3394
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3395
-			DBG("error sending multi-cast general message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3396
+		ret = sendMessage(netPath->generalSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3397
+                      (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3398
+                      "multicast general");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3399
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3400
 	return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3401
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3402
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3403
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3404
-ssize_t 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3405
-netSendPeerEvent(Octet * buf, UInteger16 length, NetPath * netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3406
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3407
+netSendPeerEvent(Octet * buf, UInteger16 length, PtpClock * ptpClock, RunTimeOpts * rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3408
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3409
-	ssize_t ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3410
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3411
 	struct sockaddr_in addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3412
+	NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3413
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3414
 	addr.sin_family = AF_INET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3415
 	addr.sin_port = htons(PTP_EVENT_PORT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3416
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3417
 	if (netPath->unicastAddr) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3418
 		addr.sin_addr.s_addr = netPath->unicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3419
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3420
-		ret = sendto(netPath->eventSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3421
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3422
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3423
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3424
-			DBG("error sending uni-cast event message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3425
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3426
-		/* 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3427
-		 * Need to forcibly loop back the packet since
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3428
-		 * we are not using multicast. 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3429
-		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3430
-		addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3431
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3432
-		ret = sendto(netPath->eventSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3433
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3434
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3435
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3436
-			DBG("error looping back uni-cast event message\n");			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3437
+		ret = sendMessage(netPath->eventSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3438
+                      (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3439
+                      "unicast event");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3440
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3441
 		addr.sin_addr.s_addr = netPath->peerMulticastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3442
+		ret = sendMessage(netPath->eventSock, buf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3443
+                      (struct sockaddr *)&addr, sizeof(addr),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3444
+                      "multicast event");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3445
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3446
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3447
-		ret = sendto(netPath->eventSock, buf, length, 0, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3448
-			     (struct sockaddr *)&addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3449
-			     sizeof(struct sockaddr_in));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3450
-		if (ret <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3451
-			DBG("error sending multi-cast event message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3452
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3453
-	return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3454
+  /* @pdelay_req TODO timestamp is not being collected when PDELAY_REQ messages */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3455
+  /* are sent. Collect the timestamp and throw it away for now */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3456
+  if (ret == 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3457
+    if (txTimestamp(ptpClock, buf, length, rtOpts->time_mode, FALSE) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3458
+      ERROR("txTimestamp failed\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3459
+      ret = ENOTIMESTAMP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3460
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3461
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3462
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3463
+  return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3464
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3465
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3466
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3467
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/ptpd_dep.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3468
--- a/src/dep/ptpd_dep.h	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3469
+++ b/src/dep/ptpd_dep.h	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3470
@@ -1,9 +1,39 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3471
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3472
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3473
+ * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3474
+ *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3475
+ * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3476
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3477
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3478
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3479
+ * Redistribution and use in source and binary forms, with or without
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3480
+ * modification, are permitted provided that the following conditions are
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3481
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3482
+ * 1. Redistributions of source code must retain the above copyright notice,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3483
+ *    this list of conditions and the following disclaimer.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3484
+ * 2. Redistributions in binary form must reproduce the above copyright
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3485
+ *    notice, this list of conditions and the following disclaimer in the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3486
+ *    documentation and/or other materials provided with the distribution.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3487
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3488
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3489
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3490
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3491
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3492
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3493
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3494
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3495
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3496
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3497
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3498
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3499
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3500
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3501
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3502
  * @file   ptpd_dep.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3503
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3504
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3505
  * @brief  External definitions for inclusion elsewhere.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3506
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3507
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3508
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3509
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3510
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3511
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3512
 #ifndef PTPD_DEP_H_
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3513
@@ -43,12 +73,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3514
 #define EMERGENCY(x, ...) message(LOG_EMERG, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3515
 #define ALERT(x, ...)     message(LOG_ALERT, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3516
 #define CRITICAL(x, ...)  message(LOG_CRIT, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3517
-#define ERROR(x, ...)  message(LOG_ERR, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3518
+#define ERROR(x, ...)     message(LOG_ERR, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3519
 #define PERROR(x, ...)    message(LOG_ERR, x "      (strerror: %m)\n", ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3520
 #define WARNING(x, ...)   message(LOG_WARNING, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3521
-#define NOTIFY(x, ...) message(LOG_NOTICE, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3522
+#define NOTIFY(x, ...)    message(LOG_NOTICE, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3523
 #define NOTICE(x, ...)    message(LOG_NOTICE, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3524
-#define INFO(x, ...)   message(LOG_INFO, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3525
+#define INFO(x, ...)      message(LOG_INFO, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3526
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3527
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3528
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3529
@@ -90,7 +120,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3530
 #undef PTPD_DBG2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3531
 #define PTPD_DBG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3532
 #define PTPD_DBG2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3533
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3534
 #define DBGV(x, ...) message(LOG_DEBUGV, x, ##__VA_ARGS__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3535
 #else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3536
 #define DBGV(x, ...)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3537
@@ -116,6 +145,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3538
 #define DBG(x, ...)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3539
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3540
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3541
+#ifdef PTPD_DUMP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3542
+#define DUMP(text, addr, len) dump(text, addr, len)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3543
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3544
+#define DUMP(text, addr, len)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3545
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3546
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3547
 /** \}*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3548
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3549
 /** \name Endian corrections*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3550
@@ -179,7 +214,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3551
 void msgUnpackManagement(Octet * buf,MsgManagement*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3552
 UInteger8 msgUnloadManagement(Octet * buf,MsgManagement*,PtpClock*,RunTimeOpts*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3553
 void msgUnpackManagementPayload(Octet *buf, MsgManagement *manage);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3554
-void msgPackHeader(Octet * buf,PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3555
+void msgPackHeader(Octet * buf,PtpClock*,unsigned int);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3556
 void msgPackAnnounce(Octet * buf,PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3557
 void msgPackSync(Octet * buf,Timestamp*,PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3558
 void msgPackFollowUp(Octet * buf,Timestamp*,PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3559
@@ -211,13 +246,14 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3560
 Boolean netInit(NetPath*,RunTimeOpts*,PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3561
 Boolean netShutdown(NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3562
 int netSelect(TimeInternal*,NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3563
-ssize_t netRecvEvent(Octet*,TimeInternal*,NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3564
-ssize_t netRecvGeneral(Octet*,TimeInternal*,NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3565
-ssize_t netSendEvent(Octet*,UInteger16,NetPath*, Integer32 );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3566
-ssize_t netSendGeneral(Octet*,UInteger16,NetPath*, Integer32 );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3567
-ssize_t netSendPeerGeneral(Octet*,UInteger16,NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3568
-ssize_t netSendPeerEvent(Octet*,UInteger16,NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3569
+ssize_t netRecvEvent(Octet*,TimeInternal*,PtpClock*,RunTimeOpts*,Boolean*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3570
+ssize_t netRecvGeneral(Octet*,TimeInternal*,PtpClock *, RunTimeOpts *);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3571
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3572
+/* These functions all return 0 for success or an errno in the case of failure */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3573
+int netSendEvent(Octet*,UInteger16,PtpClock*,RunTimeOpts*,Integer32);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3574
+int netSendGeneral(Octet*,UInteger16,NetPath*,Integer32);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3575
+int netSendPeerGeneral(Octet*,UInteger16,NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3576
+int netSendPeerEvent(Octet*,UInteger16,PtpClock*,RunTimeOpts*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3577
 Boolean netRefreshIGMP(NetPath *, RunTimeOpts *, PtpClock *);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3578
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3579
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3580
@@ -234,7 +270,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3581
   offset_from_master_filter*,RunTimeOpts*,PtpClock*,TimeInternal*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3582
 void updateClock(RunTimeOpts*,PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3583
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3584
-void servo_perform_clock_step(RunTimeOpts * rtOpts, PtpClock * ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3585
+void servo_perform_clock_step(RunTimeOpts * rtOpts, PtpClock * ptpClock, TimeInternal*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3586
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3587
 /** \}*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3588
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3589
@@ -267,19 +303,110 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3590
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3591
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3592
 void message(int priority, const char *format, ...);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3593
+void dump(const char *text, void *addr, int len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3594
 void displayStats(RunTimeOpts *rtOpts, PtpClock *ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3595
 Boolean nanoSleep(TimeInternal*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3596
-void getTime(TimeInternal*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3597
-void setTime(TimeInternal*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3598
 double getRand(void);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3599
-Boolean adjFreq(Integer32);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3600
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3601
 void recordSync(RunTimeOpts * rtOpts, UInteger16 sequenceId, TimeInternal * time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3602
+/** \}*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3603
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3604
+/** \name time.c (Unix API dependent)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3605
+ * -Timing system API*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3606
+ /**\{*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3607
+Boolean initTime(RunTimeOpts*, PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3608
+void shutdownTime(PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3609
+void getTime(TimeInternal*, TimeMode, PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3610
+void setTime(TimeInternal*, TimeMode, PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3611
+void syncSystemWithNIC(RunTimeOpts *rtOpts, PtpClock *ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3612
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3613
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3614
+ * Adjusts the time, ideally by varying the clock rate.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3615
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3616
+ * @param adj      frequency adjustment: a time source which supports that ignores the offset
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3617
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3618
+void adjTime(LongDouble adj, TimeMode timeMode, PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3619
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3620
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3621
+ * Adjusts the time by shifting the clock.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3622
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3623
+ * @param offset   this value must be substracted from clock (might be negative)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3624
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3625
+void adjTimeOffset(TimeInternal *offset, TimeMode timeMode, PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3626
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3627
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3628
+ * Adjusts the time by shifting the clock to insert a leap second
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3629
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3630
+void adjTimeInsertLeapSecond(TimeMode timeMode, RunTimeOpts*, PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3631
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3632
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3633
+ * Adjusts the time by shifting the clock to delete a leap second
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3634
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3635
+void adjTimeDeleteLeapSecond(TimeMode timeMode, RunTimeOpts*, PtpClock*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3636
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3637
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3638
+ * Gets the time when the latest outgoing packet left the host.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3639
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3640
+ * There is no way to identify the packet the time stamp belongs to,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3641
+ * so this must be called after sending each packet until the time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3642
+ * stamp for the packet is available. This can be some (hopefully
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3643
+ * small) time after the packet was passed to the IP stack.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3644
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3645
+ * There is no mechanism either to determine packet loss and thus a
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3646
+ * time stamp which never becomes available.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3647
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3648
+ * @todo Can such packet loss occur?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3649
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3650
+ * Does not work with TIME_SYSTEM.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3651
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3652
+ * @retval sendTimeStamp    set to the time when the packet left the host
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3653
+ * @return TRUE if the time stamp was available
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3654
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3655
+Boolean getSendTime(TimeInternal *sendTimeStamp, TimeMode, NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3656
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3657
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3658
+ * Gets the time when the packet identified by the given attributes
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3659
+ * was received by the host.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3660
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3661
+ * Because the arrival of packets is out of the control of PTPd, the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3662
+ * time stamping must support unique identification of which time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3663
+ * stamp belongs to which packet.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3664
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3665
+ * Due to packet loss in the receive queue, there can be time stamps
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3666
+ * without IP packets. getReceiveTime() automatically discards stale
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3667
+ * time stamps, including the ones that where returned by
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3668
+ * getReceiveTime(). This implies that there is not guarantee that
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3669
+ * calling getReceiveTime() more than once for the same packet
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3670
+ * will always return a result.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3671
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3672
+ * Due to hardware limitations only one time stamp might be stored
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3673
+ * until queried by the NIC driver; this can lead to packets without
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3674
+ * time stamp. This needs to be handled by the caller of
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3675
+ * getReceiveTime(), for example by ignoring the packet.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3676
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3677
+ * Does not work with TIME_SYSTEM.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3678
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3679
+ * @retval recvTimeStamp    set to the time when the packet entered the host, if available
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3680
+ * @return TRUE if the time stamp was available
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3681
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3682
+Boolean getReceiveTime(TimeInternal *recvTimeStamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3683
+                       ClockIdentity clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3684
+                       UInteger16 sequenceId, TimeMode, NetPath*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3685
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3686
+long get_current_tickrate(void);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3687
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3688
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3689
 #if defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3690
 void 	adjTime(Integer32);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3691
 #endif /* __APPLE__ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3692
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3693
+#if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3694
+void setTimexFlags(int flags, Boolean quiet);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3695
+void unsetTimexFlags(int flags, Boolean quiet);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3696
+int getTimexFlags(void);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3697
+Boolean checkTimexFlags(int flags);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3698
+#endif /* apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3699
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3700
 /** \}*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3701
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3702
 /** \name timer.c (Unix API dependent)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3703
@@ -297,6 +424,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3704
 void timerStart_random(UInteger16 index, float interval, IntervalTimer * itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3705
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3706
 Boolean timerExpired(UInteger16,IntervalTimer*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3707
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3708
+/** gets the current system time */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3709
+void timerNow(TimeInternal*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3710
 /** \}*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3711
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3712
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3713
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/servo.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3714
--- a/src/dep/servo.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3715
+++ b/src/dep/servo.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3716
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3717
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3718
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3719
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3720
  * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3721
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3722
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3723
@@ -69,8 +71,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3724
 #if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3725
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3726
 	if (!rtOpts->noAdjust)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3727
-		adjFreq(0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3728
-	ptpClock->observed_drift = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3729
+		adjTime(0, rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3730
+	ptpClock->observed_drift = 0.0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3731
 #endif /* apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3732
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3733
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3734
@@ -85,10 +87,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3735
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3736
 	ptpClock->ofm_filt.y           = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3737
 	ptpClock->ofm_filt.nsec_prev   = -1; /* AKB: -1 used for non-valid nsec time */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3738
-	ptpClock->ofm_filt.nsec_prev   = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3739
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3740
 	ptpClock->owd_filt.s_exp       = 0;  /* clears one-way delay filter */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3741
-	rtOpts->offset_first_updated   = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3742
+	ptpClock->offset_first_updated   = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3743
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3744
 	ptpClock->char_last_msg='I';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3745
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3746
@@ -105,6 +105,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3747
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3748
 updateDelay(one_way_delay_filter * owd_filt, RunTimeOpts * rtOpts, PtpClock * ptpClock, TimeInternal * correctionField)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3749
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3750
+	/* updates paused, leap second pending - do nothing */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3751
+        if(ptpClock->leapSecondInProgress)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3752
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3753
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3754
 	/* todo: do all intermediate calculations on temp vars */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3755
 	TimeInternal prev_meanPathDelay = ptpClock->meanPathDelay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3756
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3757
@@ -121,31 +125,41 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3758
 	/* calc 'slave_to_master_delay' */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3759
 	subTime(&slave_to_master_delay, &ptpClock->delay_req_receive_time, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3760
 		&ptpClock->delay_req_send_time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3761
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3762
+/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3763
 	if (slave_to_master_delay.nanoseconds < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3764
-		INFO("updateDelay aborted, delay %d is negative",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3765
+		INFO("updateDelay aborted, delay %d is negative\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3766
 		     slave_to_master_delay.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3767
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3768
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3769
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3770
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3771
-	if (rtOpts->maxDelay) { /* If maxDelay is 0 then it's OFF */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3772
-		if (slave_to_master_delay.seconds && rtOpts->maxDelay) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3773
+	/* If maxDelay is 0 then it's OFF */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3774
+	if ((rtOpts->maxDelay.seconds || rtOpts->maxDelay.nanoseconds) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3775
+	    ptpClock->offset_first_updated) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3776
+		if (slave_to_master_delay.seconds) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3777
 			INFO("updateDelay aborted, delay greater than 1"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3778
-			     " second.");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3779
+			     " second.\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3780
 			msgDump(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3781
 				goto display;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3782
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3783
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3784
-		if (slave_to_master_delay.nanoseconds > rtOpts->maxDelay) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3785
-			INFO("updateDelay aborted, delay %d greater than "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3786
-			     "administratively set maximum %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3787
-			     slave_to_master_delay.nanoseconds, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3788
-			     rtOpts->maxDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3789
+		/* Get scalar versions of the the slave to master delay and
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3790
+		 * max delay */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3791
+		int64_t s_to_m_delay = internalTime_to_scalar(&slave_to_master_delay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3792
+		int64_t max_delay = internalTime_to_scalar(&rtOpts->maxDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3793
+		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3794
+		if ((s_to_m_delay > max_delay) ||
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3795
+		    (s_to_m_delay < -max_delay)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3796
+			INFO("updateDelay aborted, s->m delay %d.%09d greater than "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3797
+			     "administratively set maximum %d.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3798
+			     slave_to_master_delay.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3799
+			     slave_to_master_delay.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3800
+			     rtOpts->maxDelay.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3801
+			     rtOpts->maxDelay.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3802
 			msgDump(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3803
 				goto display;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3804
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3805
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3806
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3807
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3808
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3809
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3810
 	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3811
@@ -153,7 +167,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3812
 	 *   - update the global delaySM variable
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3813
 	 *   - calculate a new filtered MPD
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3814
 	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3815
-	if (rtOpts->offset_first_updated) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3816
+	if (ptpClock->offset_first_updated) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3817
 		Integer16 s;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3818
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3819
 		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3820
@@ -313,6 +327,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3821
 updateOffset(TimeInternal * send_time, TimeInternal * recv_time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3822
     offset_from_master_filter * ofm_filt, RunTimeOpts * rtOpts, PtpClock * ptpClock, TimeInternal * correctionField)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3823
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3824
+	DBGV("UTCOffset: %d, %d | leap 59: %d |  leap61: %d\n", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3825
+	     ptpClock->currentUtcOffsetValid, ptpClock->currentUtcOffset,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3826
+	     ptpClock->leap59, ptpClock->leap61);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3827
+        /* updates paused, leap second pending - do nothing */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3828
+        if(ptpClock->leapSecondInProgress)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3829
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3830
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3831
 	DBGV("==> updateOffset\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3832
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3833
@@ -322,19 +342,24 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3834
 	/* calc 'master_to_slave_delay' */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3835
 	subTime(&master_to_slave_delay, recv_time, send_time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3836
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3837
-	if (rtOpts->maxDelay) { /* If maxDelay is 0 then it's OFF */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3838
-		if (master_to_slave_delay.seconds && rtOpts->maxDelay) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3839
-			INFO("updateOffset aborted, delay greater than 1"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3840
-			     " second.");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3841
-			msgDump(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3842
-			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3843
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3844
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3845
-		if (master_to_slave_delay.nanoseconds > rtOpts->maxDelay) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3846
-			INFO("updateOffset aborted, delay %d greater than "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3847
-			     "administratively set maximum %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3848
-			     master_to_slave_delay.nanoseconds, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3849
-			     rtOpts->maxDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3850
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3851
+	/* If maxDelay is 0 then it's OFF */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3852
+	if ((rtOpts->maxDelay.seconds || rtOpts->maxDelay.nanoseconds) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3853
+	    ptpClock->offset_first_updated) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3854
+		/* Get scalar versions of the the slave to master delay and
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3855
+		 * max delay */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3856
+		int64_t m_to_s_delay = internalTime_to_scalar(&master_to_slave_delay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3857
+		int64_t max_delay = internalTime_to_scalar(&rtOpts->maxDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3858
+		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3859
+		if ((m_to_s_delay > max_delay) ||
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3860
+		    (m_to_s_delay < -max_delay)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3861
+			INFO("updateDelay aborted, m->s delay %d.%09d greater than "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3862
+			     "administratively set maximum %d.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3863
+			     master_to_slave_delay.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3864
+			     master_to_slave_delay.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3865
+			     rtOpts->maxDelay.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3866
+			     rtOpts->maxDelay.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3867
 			msgDump(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3868
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3869
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3870
@@ -344,6 +369,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3871
 	ptpClock->char_last_msg='S';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3872
 	ptpClock->last_packet_was_sync = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3873
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3874
+	DBGV("send_time = %d.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3875
+	     send_time->seconds, send_time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3876
+	DBGV("recv_time = %d.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3877
+             recv_time->seconds, recv_time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3878
+	DBGV("master_to_slave_delay = %d.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3879
+	     master_to_slave_delay.seconds, master_to_slave_delay.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3880
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3881
 	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3882
 	 * The packet has passed basic checks, so we'll:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3883
 	 *   - update the global delayMS variable
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3884
@@ -355,14 +387,21 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3885
 	/* Take care about correctionField */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3886
 	subTime(&ptpClock->delayMS,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3887
 		&ptpClock->delayMS, correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3888
+	DBGV("delayMS = %d.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3889
+	     ptpClock->delayMS.seconds, ptpClock->delayMS.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3890
+	DBGV("correctionField = %d.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3891
+	     correctionField->seconds, correctionField->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3892
+	DBGV("meanPathDelay = %d.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3893
+	     ptpClock->meanPathDelay.seconds, ptpClock->meanPathDelay.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3894
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3895
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3896
+	DBGV("updateOffset: delayMechanism = %d\n", ptpClock->delayMechanism);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3897
 	/* update 'offsetFromMaster' */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3898
 	if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3899
 		subTime(&ptpClock->offsetFromMaster, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3900
 			&ptpClock->delayMS, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3901
 			&ptpClock->peerMeanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3902
-	} else if (ptpClock->delayMechanism == E2E) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3903
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3904
 		/* (End to End mode) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3905
 		subTime(&ptpClock->offsetFromMaster, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3906
 			&ptpClock->delayMS, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3907
@@ -372,13 +411,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3908
 	if (ptpClock->offsetFromMaster.seconds) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3909
 		/* cannot filter with secs, clear filter */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3910
 		ofm_filt->nsec_prev = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3911
-		rtOpts->offset_first_updated = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3912
+		ptpClock->offset_first_updated = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3913
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3914
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3915
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3916
 	/* filter 'offsetFromMaster' */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3917
-	ofm_filt->y = ptpClock->offsetFromMaster.nanoseconds / 2 + 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3918
-		ofm_filt->nsec_prev / 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3919
+	/* The time is normalised so the nanoseconds will be less than 10^9. Improve
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3920
+	 * accuracy of calculation by doing division after addition. Add 1 to get correct
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3921
+	 * rounding.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3922
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3923
+	ofm_filt->y = (ptpClock->offsetFromMaster.nanoseconds + ofm_filt->nsec_prev + 1) / 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3924
 	ofm_filt->nsec_prev = ptpClock->offsetFromMaster.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3925
 	ptpClock->offsetFromMaster.nanoseconds = ofm_filt->y;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3926
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3927
@@ -388,41 +430,44 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3928
 	 * Offset must have been computed at least one time before 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3929
 	 * computing end to end delay
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3930
 	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3931
-		rtOpts->offset_first_updated = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3932
+		ptpClock->offset_first_updated = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3933
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3934
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3935
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3936
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3937
-void servo_perform_clock_step(RunTimeOpts * rtOpts, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3938
+void servo_perform_clock_step(RunTimeOpts * rtOpts, PtpClock * ptpClock, TimeInternal *offset)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3939
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3940
 	if(rtOpts->noAdjust){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3941
 		WARNING("     Clock step blocked because of option -t\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3942
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3943
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3944
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3945
-	TimeInternal timeTmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3946
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3947
-	getTime(&timeTmp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3948
-	subTime(&timeTmp, &timeTmp, &ptpClock->offsetFromMaster);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3949
+	WARNING("performing hard frequency reset, by setting frequency to zero\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3950
+	/* In our driver, stepping the time also has the effect of setting the frequency */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3951
+	/* adjustment to zero. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3952
+	 adjTimeOffset(offset, rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3953
+	ptpClock->observed_drift = 0.0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3954
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3955
-	WARNING("     Performing hard frequency reset, by setting frequency to zero\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3956
-	adjFreq(0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3957
-	ptpClock->observed_drift = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3958
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3959
-	setTime(&timeTmp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3960
 	initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3961
-	toState(PTP_FAULTY, rtOpts, ptpClock);		/* make a full protocol reset */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3962
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3963
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3964
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3965
-void warn_operator_fast_slewing(RunTimeOpts * rtOpts, PtpClock * ptpClock, Integer32 adj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3966
+void warn_operator_fast_slewing(RunTimeOpts * rtOpts, PtpClock * ptpClock, LongDouble adj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3967
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3968
-	if(ptpClock->warned_operator_fast_slewing == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3969
-		if ((adj >= ADJ_FREQ_MAX) || ((adj <= -ADJ_FREQ_MAX))){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3970
+	LongDouble max_adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3971
+	if ((rtOpts->time_mode == TIME_NIC) || (rtOpts->time_mode == TIME_BOTH))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3972
+		max_adj = ADJ_FREQ_MAX_NIC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3973
+	else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3974
+		max_adj = ADJ_FREQ_MAX_SYSTEM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3975
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3976
+	if ((adj >= max_adj) || (adj <= -max_adj)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3977
+		if(ptpClock->warned_operator_fast_slewing == 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3978
 			ptpClock->warned_operator_fast_slewing = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3979
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3980
 			NOTICE("Servo: Going to slew the clock with the maximum frequency adjustment\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3981
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3982
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3983
+		ptpClock->warned_operator_fast_slewing = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3984
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3985
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3986
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3987
@@ -436,9 +481,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3988
 		/* rule of thumb: at tick rate 10000, slewing at the maximum speed took 0.5ms per second */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3989
 		float estimated = (((abs(ptpClock->offsetFromMaster.seconds)) + 0.0) * 2.0 * 1000.0 / 3600.0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3990
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3991
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3992
-		ALERT("Servo: %d seconds offset detected, will take %.1f hours to slew\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3993
+		// we don't want to arrive early 1s in an expiration opening, so all consoles get a message when the time is 1s off.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3994
+		ALERT("Servo: %d.%09d seconds offset detected, will take %.1f hours to slew\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3995
 			ptpClock->offsetFromMaster.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3996
+			ptpClock->offsetFromMaster.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3997
 			estimated
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3998
 		);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  3999
 		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4000
@@ -447,22 +493,25 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4001
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4002
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4003
 /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4004
- * this is a wrapper around adjFreq to abstract extra operations
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4005
+ * this is a wrapper around adjTime to abstract extra operations
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4006
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4007
-void adjFreq_wrapper(RunTimeOpts * rtOpts, PtpClock * ptpClock, Integer32 adj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4008
+void adjTime_wrapper(RunTimeOpts * rtOpts, PtpClock * ptpClock, LongDouble adj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4009
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4010
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4011
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4012
    
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4013
 	if (rtOpts->noAdjust){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4014
-		DBGV("adjFreq2: noAdjust on, returning\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4015
+		DBGV("adjTime_wrapper: noAdjust on, returning\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4016
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4017
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4018
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4019
+	// go back to only sending delayreq after first sync
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4020
+	// otherwise we lose the first sync always
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4021
+	// test all combinations
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4022
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4023
 	// call original adjtime
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4024
-	DBG2("     adjFreq2: call adjfreq to %d us \n", adj / DBG_UNIT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4025
-	adjFreq(adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4026
+	DBG2("     adjTime_wrapper: call adjTime to %d \n", adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4027
+	adjTime(adj, rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4028
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4029
 	warn_operator_fast_slewing(rtOpts, ptpClock, adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4030
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4031
@@ -475,8 +524,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4032
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4033
 updateClock(RunTimeOpts * rtOpts, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4034
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4035
-	Integer32 adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4036
-	//TimeInternal timeTmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4037
+    LongDouble adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4038
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4039
+	/* updates paused, leap second pending - do nothing */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4040
+        if(ptpClock->leapSecondInProgress)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4041
+            return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4042
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4043
 	DBGV("==> updateClock\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4044
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4045
@@ -514,26 +566,31 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4046
 		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4047
 		 * noAdjust     = cannot do any change to clock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4048
 		 * noResetClock = if can change the clock, can we also step it?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4049
+		 * resetClockOnlyOnce = can only step clock on first update
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4050
 		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4051
 		if (!rtOpts->noAdjust) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4052
 			/* */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4053
-			if (!rtOpts->noResetClock) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4054
+			if (!rtOpts->noResetClock &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4055
+			    (!rtOpts->resetClockStartupOnly || !ptpClock->clock_first_updated)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4056
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4057
-				servo_perform_clock_step(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4058
+				servo_perform_clock_step(rtOpts, ptpClock, &ptpClock->offsetFromMaster);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4059
 			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4060
 				/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4061
 				 * potential problem:    "-1.1" is   a) -1:0.1 or b) -1:-0.1?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4062
 				 * if this code is right it implies the second case
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4063
 				 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4064
 #if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4065
-				adj = ptpClock->offsetFromMaster.nanoseconds
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4066
-					> 0 ? ADJ_FREQ_MAX : -ADJ_FREQ_MAX;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4067
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4068
-				// does this hurt when the clock gets close to zero again?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4069
-				ptpClock->observed_drift = adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4070
+				LongDouble max_adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4071
+				if ((rtOpts->time_mode == TIME_NIC) || (rtOpts->time_mode == TIME_BOTH))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4072
+					max_adj = ADJ_FREQ_MAX_NIC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4073
+				else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4074
+					max_adj = ADJ_FREQ_MAX_SYSTEM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4075
+				
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4076
+				adj = (ptpClock->offsetFromMaster.nanoseconds > 0.0)?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4077
+					max_adj : -max_adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4078
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4079
 				warn_operator_slow_slewing(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4080
-				adjFreq_wrapper(rtOpts, ptpClock, -adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4081
+				adjTime_wrapper(rtOpts, ptpClock, -adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4082
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4083
 				/* its not clear how the APPLE case works for large jumps */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4084
 #endif /* __APPLE__ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4085
@@ -541,14 +598,18 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4086
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4087
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4088
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4089
+		LongDouble max_adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4090
 		/* these variables contain the actual ai and ap to be used below */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4091
 		Integer32 ap = rtOpts->ap;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4092
 		Integer32 ai = rtOpts->ai;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4093
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4094
+		/* Clear the slow slewing warning so that it will be re-issued if
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4095
+		 * another large offset occurs */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4096
+		ptpClock->warned_operator_slow_slewing = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4097
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4098
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4099
 		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4100
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4101
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4102
 		/* the PI controller */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4103
 		/* Offset from master is less than one second.  Use the the PI controller
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4104
 		 * to adjust the time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4105
@@ -561,44 +622,48 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4106
 			ai = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4107
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4108
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4109
+		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4110
+		 *  optional new PI controller, with better accuracy with HW-timestamps:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4111
+		 *  http://sourceforge.net/tracker/?func=detail&aid=2995791&group_id=139814&atid=744632
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4112
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4113
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4114
 		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4115
 		/* the accumulator for the I component */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4116
 		// original PI servo
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4117
 		ptpClock->observed_drift += 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4118
-			ptpClock->offsetFromMaster.nanoseconds / ai;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4119
+			(LongDouble)ptpClock->offsetFromMaster.nanoseconds / (LongDouble)ai;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4120
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4121
-		// ADJ_FREQ_MAX: 512 000
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4122
+		if ((rtOpts->time_mode == TIME_NIC) || (rtOpts->time_mode == TIME_BOTH))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4123
+			max_adj = ADJ_FREQ_MAX_NIC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4124
+		else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4125
+			max_adj = ADJ_FREQ_MAX_SYSTEM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4126
+		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4127
+		/* clamp the accumulator to ADJ_FREQ_MAX for sanity */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4128
+		if (ptpClock->observed_drift > max_adj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4129
+			ptpClock->observed_drift = max_adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4130
+		else if (ptpClock->observed_drift < -max_adj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4131
+			ptpClock->observed_drift = -max_adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4132
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4133
-		/* clamp the accumulator to ADJ_FREQ_MAX for sanity */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4134
-		if (ptpClock->observed_drift > ADJ_FREQ_MAX)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4135
-			ptpClock->observed_drift = ADJ_FREQ_MAX;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4136
-		else if (ptpClock->observed_drift < -ADJ_FREQ_MAX)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4137
-			ptpClock->observed_drift = -ADJ_FREQ_MAX;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4138
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4139
-		adj = ptpClock->offsetFromMaster.nanoseconds / ap +
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4140
+		adj = (LongDouble)ptpClock->offsetFromMaster.nanoseconds / (LongDouble)ap +
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4141
 			ptpClock->observed_drift;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4142
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4143
-		DBG("     Observed_drift with AI component: %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4144
-			ptpClock->observed_drift  );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4145
+		DBG("     Observed_drift with AI component: %Lf\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4146
+			 ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4147
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4148
-		DBG("     After PI: Adj: %d   Drift: %d   OFM %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4149
+		DBG("     After PI: Adj: %Lf   Drift: %Lf   OFM %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4150
 			adj, ptpClock->observed_drift , ptpClock->offsetFromMaster.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4151
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4152
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4153
-		DBG2("     Observed_drift with AI component: %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4154
-			ptpClock->observed_drift / DBG_UNIT );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4155
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4156
-		DBG2("     After PI: Adj: %d   Drift: %d   OFM %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4157
-			adj, ptpClock->observed_drift / DBG_UNIT, ptpClock->offsetFromMaster.nanoseconds / DBG_UNIT);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4158
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4159
 #if defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4160
-			adjTime(ptpClock->offsetFromMaster.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4161
+			adjTime((LongDouble)ptpClock->offsetFromMaster.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4162
 #else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4163
-		adjFreq_wrapper(rtOpts, ptpClock, -adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4164
+		adjTime_wrapper(rtOpts, ptpClock, -adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4165
 #endif /* __APPLE__ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4166
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4167
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4168
+	/* If we get here, the clock has been updated. Used to enable syncing of
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4169
+	 * second servo in time both mode.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4170
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4171
+	ptpClock->clock_first_updated = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4172
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4173
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4174
 display:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4175
@@ -625,6 +690,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4176
 	DBGV("offset from master:      %10ds %11dns\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4177
 	    ptpClock->offsetFromMaster.seconds, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4178
 	    ptpClock->offsetFromMaster.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4179
-	DBGV("observed drift:          %10d\n", ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4180
+	DBGV("observed drift:          %Lf\n", ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4181
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4182
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4183
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/sfxge_ioctl.h
2214
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4184
--- /dev/null	Fri Nov 14 16:18:09 2014
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4185
+++ b/src/dep/sfxge_ioctl.h	Fri Nov 14 12:20:13 2014
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4186
@@ -0,0 +1,136 @@
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4187
+/*-
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4188
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4189
+ * Copyright (c) 2005-2006 Fen Systems Ltd.
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4190
+ * Copyright (c) 2006-2012 Solarflare Communications Inc
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4191
+ *                         9501 Jeronimo Road, Suite 250,
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4192
+ *                         Irvine, CA 92618, USA
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4193
+ *
2214
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4194
+ * All Rights Reserved
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4195
+ * 
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4196
+ * Redistribution and use in source and binary forms, with or without
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4197
+ * modification, are permitted provided that the following conditions are
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4198
+ * met:
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4199
+ * 1. Redistributions of source code must retain the above copyright notice,
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4200
+ *    this list of conditions and the following disclaimer.
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4201
+ * 2. Redistributions in binary form must reproduce the above copyright
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4202
+ *    notice, this list of conditions and the following disclaimer in the
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4203
+ *    documentation and/or other materials provided with the distribution.
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4204
+ * 
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4205
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4206
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4207
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4208
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4209
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4210
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4211
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4212
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4213
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4214
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
c98efe8be94e 20023476 sfxge_ioctl.h license is incorrect
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 1580
diff changeset
  4215
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4216
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4217
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4218
+#ifndef SFXGE_IOCTL_H
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4219
+#define SFXGE_IOCTL_H
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4220
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4221
+#include <sys/sockio.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4222
+#define __u8	uint8_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4223
+#define __u16   uint16_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4224
+#define __u32   uint32_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4225
+#define __u64   uint64_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4226
+#define __s8	int8_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4227
+#define __s16	int16_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4228
+#define __s32	int32_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4229
+#define __s64	int64_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4230
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4231
+#define SFXGE_IOC	('S' << 24 | 'F' << 16 | 'C' << 8)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4232
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4233
+#define SFXGE_TS_INIT		(SFXGE_IOC | 0x12)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4234
+#define SFXGE_TS_READ		(SFXGE_IOC | 0x13)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4235
+#define SFXGE_TS_SETTIME	(SFXGE_IOC | 0x14)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4236
+#define SFXGE_TS_ADJTIME	(SFXGE_IOC | 0x15)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4237
+#define SFXGE_TS_SYNC		(SFXGE_IOC | 0x16)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4238
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4239
+#define	SFXGE_DRV_VERSION1	1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4240
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4241
+/* PTP support for NIC time disciplining ************************************/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4242
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4243
+struct sfxge_timespec {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4244
+	int64_t tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4245
+	int32_t	tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4246
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4247
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4248
+/* Initialise timestamping, like SIOCHWTSTAMP *******************************/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4249
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4250
+enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4251
+      	HWTSTAMP_TX_OFF,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4252
+	HWTSTAMP_TX_ON,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4253
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4254
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4255
+enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4256
+      	HWTSTAMP_FILTER_NONE,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4257
+	HWTSTAMP_FILTER_ALL,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4258
+	HWTSTAMP_FILTER_SOME,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4259
+	HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4260
+	HWTSTAMP_FILTER_PTP_V1_L4_SYNC,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4261
+	HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4262
+	HWTSTAMP_FILTER_PTP_V2_L4_EVENT,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4263
+	HWTSTAMP_FILTER_PTP_V2_L4_SYNC,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4264
+	HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4265
+	HWTSTAMP_FILTER_PTP_V2_L2_EVENT,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4266
+	HWTSTAMP_FILTER_PTP_V2_L2_SYNC,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4267
+	HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4268
+	HWTSTAMP_FILTER_PTP_V2_EVENT,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4269
+	HWTSTAMP_FILTER_PTP_V2_SYNC,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4270
+	HWTSTAMP_FILTER_PTP_V2_DELAY_REQ,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4271
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4272
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4273
+struct sfxge_hwtstamp_config {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4274
+	uint32_t drv_version;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4275
+	uint32_t flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4276
+	uint32_t tx_type;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4277
+	uint32_t rx_filter;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4278
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4279
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4280
+/* Read any transmit or receive timestamps since the last call **************/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4281
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4282
+struct sfxge_ts_read {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4283
+	uint32_t tx_valid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4284
+	struct sfxge_timespec tx_ts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4285
+	struct sfxge_timespec tx_ts_hw;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4286
+	uint32_t rx_valid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4287
+	struct sfxge_timespec rx_ts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4288
+	struct sfxge_timespec rx_ts_hw;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4289
+	uint8_t uuid [6];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4290
+	uint8_t seqid [2];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4291
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4292
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4293
+struct sfxge_ts_settime {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4294
+        struct sfxge_timespec ts; /* In and out */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4295
+        uint32_t iswrite;          /* 1 == write, 0 == read (only) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4296
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4297
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4298
+struct sfxge_ts_adjtime {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4299
+        int64_t adjustment;       /* Parts per billion, In and out */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4300
+        uint32_t iswrite;          /* 1 == write, 0 == read (only) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4301
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4302
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4303
+struct sfxge_ts_sync {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4304
+        struct sfxge_timespec ts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4305
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4306
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4307
+union sfxge_ioctl_data {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4308
+	struct sfxge_hwtstamp_config ts_init;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4309
+	struct sfxge_ts_read ts_read;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4310
+	struct sfxge_ts_settime ts_settime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4311
+	struct sfxge_ts_adjtime ts_adjtime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4312
+	struct sfxge_ts_sync ts_sync;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4313
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4314
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4315
+struct sfxge_sock_ioctl {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4316
+	uint32_t cmd;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4317
+	uint16_t reserved;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4318
+	union sfxge_ioctl_data u;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4319
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4320
+#endif /* SFXGE_IOCTL_H */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4321
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4322
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4323
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/startup.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4324
--- a/src/dep/startup.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4325
+++ b/src/dep/startup.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4326
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4327
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4328
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4329
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4330
  * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4331
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4332
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4333
@@ -39,6 +41,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4334
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4335
 #include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4336
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4337
+PtpClock *ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4338
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4339
 /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4340
  * valgrind 3.5.0 currently reports no errors (last check: 20110512)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4341
  * valgrind 3.4.1 lacks an adjtimex handler
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4342
@@ -70,6 +74,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4343
 volatile sig_atomic_t	 sighup_received  = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4344
 volatile sig_atomic_t	 sigusr1_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4345
 volatile sig_atomic_t	 sigusr2_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4346
+#ifdef DBG_SIGRTMIN_LEAP_SECOND
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4347
+volatile sig_atomic_t	 sigrtmin0_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4348
+volatile sig_atomic_t	 sigrtmin1_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4349
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4350
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4351
 /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4352
  * Function to catch signals asynchronously.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4353
@@ -79,31 +87,38 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4354
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4355
 void catch_signals(int sig)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4356
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4357
-	switch (sig) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4358
-	case SIGINT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4359
+  switch (sig) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4360
+  case SIGINT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4361
 		sigint_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4362
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4363
-	case SIGTERM:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4364
+  case SIGTERM:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4365
 		sigterm_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4366
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4367
-	case SIGHUP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4368
-		sighup_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4369
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4370
-	case SIGUSR1:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4371
-		sigusr1_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4372
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4373
-	case SIGUSR2:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4374
-		sigusr2_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4375
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4376
-	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4377
-		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4378
-		 * TODO: should all other signals be catched, and handled as SIGINT?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4379
-		 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4380
-		 * Reason: currently, all other signals are just uncatched, and the OS kills us.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4381
-		 * The difference is that we could then close the open files properly.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4382
-		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4383
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4384
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4385
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4386
+  case SIGHUP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4387
+    sighup_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4388
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4389
+  case SIGUSR1:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4390
+    sigusr1_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4391
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4392
+  case SIGUSR2:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4393
+    sigusr2_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4394
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4395
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4396
+#ifdef DBG_SIGRTMIN_LEAP_SECOND
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4397
+    if (sig == SIGRTMIN + 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4398
+      sigrtmin0_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4399
+    else if (sig == SIGRTMIN + 1)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4400
+      sigrtmin1_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4401
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4402
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4403
+      /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4404
+       * TODO: should all other signals be catched, and handled as SIGINT?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4405
+       *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4406
+       * Reason: currently, all other signals are just uncatched, and the OS kills us.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4407
+       * The difference is that we could then close the open files properly.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4408
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4409
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4410
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4411
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4412
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4413
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4414
@@ -119,12 +134,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4415
 	exit(0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4416
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4417
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4418
-/** 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4419
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4420
  * Signal handler for HUP which tells us to swap the log file.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4421
  * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4422
  * @param sig 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4423
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4424
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4425
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4426
 do_signal_sighup(RunTimeOpts * rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4427
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4428
 	if(rtOpts->do_record_quality_file)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4429
@@ -135,7 +150,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4430
 		if(!logToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4431
 			NOTIFY("SIGHUP logToFile failed\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4432
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4433
-	NOTIFY("I've been SIGHUP'd\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4434
+  NOTIFY("I've been SIGHUP'd\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4435
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4436
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4437
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4438
@@ -146,10 +161,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4439
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4440
 check_signals(RunTimeOpts * rtOpts, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4441
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4442
-	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4443
-	 * note:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4444
-	 * alarm signals are handled in a similar way in dep/timer.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4445
-	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4446
+  /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4447
+  * note:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4448
+  * alarm signals are handled in a similar way in dep/timer.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4449
+  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4450
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4451
 	if(sigint_received || sigterm_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4452
 		do_signal_close(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4453
@@ -158,42 +173,80 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4454
 	if(sighup_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4455
 		do_signal_sighup(rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4456
 	sighup_received=0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4457
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4458
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4459
+  if(sigusr1_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4460
+    WARNING("SigUSR1 received, manually stepping clock to current known OFM\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4461
+    /* If the time mode is time both then step the NIC clock and system clock.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4462
+     * Do the time both clock first because this requires the clock to be stepped
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4463
+     * by the sum of the two servo's current offset and the offset is cleared by
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4464
+     * the clock step process */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4465
+    if (rtOpts->time_mode == TIME_BOTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4466
+      TimeInternal offset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4467
+      extern PtpClock *G_timeBothClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4468
+      extern RunTimeOpts *G_timeBothRtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4469
+      addTime(&offset, &ptpClock->offsetFromMaster, &G_timeBothClock->offsetFromMaster);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4470
+      servo_perform_clock_step(G_timeBothRtOpts, G_timeBothClock, &offset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4471
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4472
+    servo_perform_clock_step(rtOpts, ptpClock, &ptpClock->offsetFromMaster);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4473
+  sigusr1_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4474
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4475
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4476
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4477
+#ifdef DBG_SIGUSR2_CHANGE_DOMAIN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4478
+  if(sigusr2_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4479
+    /* swap domain numbers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4480
+    static int prev_domain;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4481
+    static int first_time = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4482
+    if(first_time){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4483
+      first_time = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4484
+      prev_domain = ptpClock->domainNumber + 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4485
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4486
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4487
+    int  temp = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4488
+    ptpClock->domainNumber = prev_domain;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4489
+    prev_domain = temp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4490
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4491
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4492
+    // propagate new choice as the run-time option
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4493
+    rtOpts->domainNumber = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4494
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4495
+    WARNING("SigUSR2 received. PTP_Domain is now %d  (saved: %d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4496
+      ptpClock->domainNumber,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4497
+      prev_domain
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4498
+    );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4499
+  sigusr2_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4500
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4501
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4502
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4503
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4504
+#ifdef DBG_SIGRTMIN_LEAP_SECOND
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4505
+	if (sigrtmin0_received && (rtOpts->master_slave_mode != PTP_MODE_SLAVE)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4506
+		ptpClock->leap61 = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4507
+		ptpClock->leap59 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4508
+		timerStop(LEAP_SECOND_NOW_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4509
+		timerStart(LEAP_SECOND_NOW_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4510
+			   secondsToMidnight() + (float)ptpClock->currentUtcOffset,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4511
+			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4512
+		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4513
+		INFO("Signalling leap second 61 at end of current day\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4514
+		sigrtmin0_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4515
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4516
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4517
-	if(sigusr1_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4518
-		WARNING("SigUSR1 received, manually stepping clock to current known OFM\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4519
-		servo_perform_clock_step(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4520
-	sigusr1_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4521
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4522
+	if (sigrtmin1_received && (rtOpts->master_slave_mode != PTP_MODE_SLAVE)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4523
+		ptpClock->leap59 = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4524
+		ptpClock->leap61 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4525
+		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4526
+		timerStop(LEAP_SECOND_NOW_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4527
+		timerStart(LEAP_SECOND_NOW_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4528
+			   secondsToMidnight() + (float)ptpClock->currentUtcOffset - 1.0,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4529
+			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4530
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4531
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4532
-#ifdef DBG_SIGUSR2_CHANGE_DOMAIN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4533
-	if(sigusr2_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4534
-		/* swap domain numbers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4535
-		static int prev_domain;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4536
-		static int first_time = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4537
-		if(first_time){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4538
-			first_time = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4539
-			prev_domain = ptpClock->domainNumber + 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4540
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4541
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4542
-		int  temp = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4543
-		ptpClock->domainNumber = prev_domain;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4544
-		prev_domain = temp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4545
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4546
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4547
-		// propagate new choice as the run-time option
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4548
-		rtOpts->domainNumber = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4549
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4550
-		WARNING("SigUSR2 received. PTP_Domain is now %d  (saved: %d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4551
-			ptpClock->domainNumber,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4552
-			prev_domain
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4553
-		);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4554
-		sigusr2_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4555
+		INFO("Signalling leap second 59 at end of current day\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4556
+		sigrtmin1_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4557
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4558
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4559
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4560
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4561
 #ifdef DBG_SIGUSR2_CHANGE_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4562
 #ifdef RUNTIME_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4563
 	if(sigusr2_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4564
@@ -242,8 +295,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4565
 #include <sys/stat.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4566
 #include <libgen.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4567
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4568
-#define LOCKFILE "/var/run/kernel_clock"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4569
-#define LOCKMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4570
+#define LOCKFILE "/system/volatile/ptpd.pid"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4571
+#define LOCKMODE (S_IRUSR|S_IWUSR)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4572
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4573
 int global_lock_fd;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4574
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4575
@@ -261,6 +314,31 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4576
 	return(fcntl(fd, F_SETLK, &fl));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4577
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4578
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4579
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4580
+get_owner_lockfile(int fd)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4581
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4582
+	struct flock fl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4583
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4584
+	fl.l_type = F_WRLCK;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4585
+	fl.l_start = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4586
+	fl.l_whence = SEEK_SET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4587
+	fl.l_len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4588
+	if (fcntl(fd, F_GETLK, &fl) == 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4589
+		return(fl.l_pid);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4590
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4591
+	return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4592
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4593
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4594
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4595
+unlockfile(int fd) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4596
+	struct flock fl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4597
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4598
+	fl.l_type = F_UNLCK;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4599
+	fl.l_start = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4600
+	fl.l_whence = SEEK_SET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4601
+	fl.l_len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4602
+	return(fcntl(fd, F_SETLK, &fl));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4603
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4604
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4605
 /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4606
  * a discussion where the lock file should reside: http://rute.2038bug.com/node38.html.gz#SECTION003859000000000000000
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4607
@@ -268,33 +346,37 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4608
 int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4609
 daemon_already_running(void)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4610
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4611
-	char    buf[16];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4612
+  char    buf[16];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4613
+  int lpid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4614
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4615
 	INFO("  Info:    Going to check lock %s\n", LOCKFILE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4616
-	global_lock_fd = open(LOCKFILE, O_RDWR|O_CREAT, LOCKMODE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4617
-	if (global_lock_fd < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4618
-		syslog(LOG_ERR, "can't open %s: %s", LOCKFILE, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4619
-		PERROR("can't open %s: %s", LOCKFILE, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4620
-		exit(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4621
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4622
-	if (lockfile(global_lock_fd) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4623
-		if (errno == EACCES || errno == EAGAIN) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4624
-			close(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4625
-			return(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4626
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4627
-		syslog(LOG_ERR, "can't lock %s: %s", LOCKFILE, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4628
-		PERROR("can't lock %s: %s", LOCKFILE, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4629
-		return(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4630
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4631
-	ftruncate(global_lock_fd, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4632
-	sprintf(buf, "%ld\n", (long)getpid());
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4633
-	write(global_lock_fd, buf, strlen(buf)+1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4634
-	return(0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4635
+  global_lock_fd = open(LOCKFILE, O_RDWR|O_CREAT, LOCKMODE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4636
+  if (global_lock_fd < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4637
+    syslog(LOG_ERR, "can't open %s: %s", LOCKFILE, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4638
+    PERROR("can't open %s: %s", LOCKFILE, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4639
+    //ptpdShutdown(FALSE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4640
+    exit(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4641
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4642
+  if (lockfile(global_lock_fd) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4643
+    if (errno == EACCES || errno == EAGAIN) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4644
+	lpid = get_owner_lockfile(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4645
+	syslog(LOG_ERR, "%s locked by %d", LOCKFILE, lpid);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4646
+	PERROR("%s locked by %d", LOCKFILE, lpid);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4647
+      close(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4648
+      return(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4649
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4650
+    syslog(LOG_ERR, "can't lock %s: %s", LOCKFILE, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4651
+    PERROR("can't lock %s: %s", LOCKFILE, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4652
+    return(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4653
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4654
+  ftruncate(global_lock_fd, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4655
+  sprintf(buf, "%ld\n", (long)getpid());
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4656
+  write(global_lock_fd, buf, strlen(buf)+1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4657
+  return(0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4658
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4659
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4660
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4661
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4662
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4663
 int query_shell(char *command, char *answer, int answer_size);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4664
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4665
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4666
@@ -310,14 +392,17 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4667
 	char command[BUF_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4668
 	char answer[BUF_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4669
 	int matches;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4670
+	int mypid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4671
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4672
-	snprintf(command, BUF_SIZE - 1, "pgrep -x %s | wc -l", name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4673
+	mypid = getpid();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4674
+	snprintf(command, BUF_SIZE - 1, "pgrep -x %s | grep -v %d | wc -l", name, mypid);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4675
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4676
 	if( query_shell(command, answer, BUF_SIZE) < 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4677
 		return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4678
 	};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4679
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4680
 	sscanf(answer, "%d", &matches);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4681
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4682
 	return (matches);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4683
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4684
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4685
@@ -333,32 +418,32 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4686
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4687
 int query_shell(char *command, char *answer, int answer_size)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4688
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4689
-	int status;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4690
-	FILE *fp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4691
+  int status;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4692
+  FILE *fp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4693
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4694
 	// clear previous answer
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4695
 	answer[0] = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4696
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4697
 	fp = popen(command, "r");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4698
-	if (fp == NULL){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4699
+  if (fp == NULL){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4700
 		PERROR("can't call  %s", command);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4701
-		return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4702
-	};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4703
+    return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4704
+  };
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4705
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4706
 	// get first line of popen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4707
 	fgets(answer, answer_size - 1, fp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4708
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4709
 	DBG2("Query_shell: _%s_ -> _%s_\n", command, answer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4710
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4711
-	status = pclose(fp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4712
-	if (status == -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4713
-		PERROR("can't call pclose() ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4714
-		return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4715
-	} 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4716
+  status = pclose(fp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4717
+  if (status == -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4718
+    PERROR("can't call pclose() ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4719
+    return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4720
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4721
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4722
-	/* from Man page:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4723
-	     Use macros described under wait() to inspect `status' in order
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4724
-	     to determine success/failure of command executed by popen() */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4725
+  /* from Man page:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4726
+      Use macros described under wait() to inspect `status' in order
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4727
+      to determine success/failure of command executed by popen() */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4728
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4729
 	return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4730
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4731
@@ -375,38 +460,38 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4732
 int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4733
 check_parallel_daemons(char *name, int expected, int strict, RunTimeOpts * rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4734
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4735
-	int matches = pgrep_matches(name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4736
+  int matches = pgrep_matches(name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4737
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4738
-	if(matches == expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4739
-		if(!expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4740
-			INFO(       "  Info:    No %s daemons detected in parallel (as expected)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4741
-				name );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4742
-		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4743
-			INFO(       "  Info:    %d %s daemons detected in parallel (as expected)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4744
-				matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4745
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4746
-		return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4747
+  if(matches == expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4748
+	if(!expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4749
+		INFO(       "  Info:    No %s daemons detected in parallel (as expected)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4750
+			name );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4751
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4752
-		if(strict){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4753
-			if(expected == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4754
-				ERROR(  "  Error:   %d %s daemon(s) detected in parallel, but we were not expecting any. Exiting.\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4755
-				   matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4756
-			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4757
-				ERROR(  "  Error:   %d %s daemon(s) detected in parallel, but we were expecting %d. Exiting.\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4758
-				   matches, name, expected);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4759
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4760
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4761
-		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4762
-			if(!expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4763
-				WARNING("  Warning: %d %s daemon(s) detected in parallel, but we were expected none. Continuing anyway.\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4764
-				   matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4765
-			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4766
-				WARNING("  Warning: %d %s daemon(s) detected in parallel, but we were expecting %d. Continuing anyway.\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4767
-				   matches, name, expected);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4768
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4769
-			return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4770
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4771
+		INFO(       "  Info:    %d %s daemons detected in parallel (as expected)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4772
+			matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4773
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4774
+    return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4775
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4776
+    if(strict){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4777
+	if(expected == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4778
+		ERROR(  "  Error:   %d %s daemon(s) detected in parallel, but we were not expecting any. Exiting.\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4779
+		    matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4780
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4781
+		ERROR(  "  Error:   %d %s daemon(s) detected in parallel, but we were expecting %d. Exiting.\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4782
+          matches, name, expected);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4783
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4784
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4785
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4786
+	if(!expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4787
+		WARNING("  Warning: %d %s daemon(s) detected in parallel, but we were expected none. Continuing anyway.\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4788
+		   matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4789
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4790
+		WARNING("  Warning: %d %s daemon(s) detected in parallel, but we were expecting %d. Continuing anyway.\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4791
+            matches, name, expected);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4792
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4793
+      return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4794
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4795
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4796
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4797
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4798
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4799
@@ -417,28 +502,28 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4800
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4801
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4802
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4803
-/** 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4804
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4805
  * Log output to a file
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4806
  * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4807
  * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4808
  * @return True if success, False if failure
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4809
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4810
-int 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4811
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4812
 logToFile(RunTimeOpts * rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4813
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4814
 	if(rtOpts->logFd != -1)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4815
 		close(rtOpts->logFd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4816
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4817
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4818
-	/* We new append the file instead of replacing it. Also use mask 644 instead of 444 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4819
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4820
+  /* We new append the file instead of replacing it. Also use mask 644 instead of 444 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4821
 	if((rtOpts->logFd = open(rtOpts->file, O_CREAT | O_APPEND | O_RDWR, 0644 )) != -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4822
 		dup2(rtOpts->logFd, STDOUT_FILENO);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4823
 		dup2(rtOpts->logFd, STDERR_FILENO);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4824
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4825
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4826
 	return rtOpts->logFd != -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4827
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4828
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4829
-/** 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4830
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4831
  * Record quality data for later correlation
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4832
  * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4833
  * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4834
@@ -451,63 +536,82 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4835
 		fclose(rtOpts->recordFP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4836
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4837
 	if ((rtOpts->recordFP = fopen(rtOpts->recordFile, "w")) == NULL)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4838
-		PERROR("could not open sync recording file");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4839
-	else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4840
+    PERROR("could not open sync recording file");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4841
+  else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4842
 		setlinebuf(rtOpts->recordFP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4843
 	return (rtOpts->recordFP != NULL);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4844
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4845
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4846
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4847
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4848
 ptpdShutdown(PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4849
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4850
-	netShutdown(&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4851
+  shutdownTime(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4852
+  netShutdown(&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4853
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4854
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4855
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4856
 	free(ptpClock->foreign);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4857
 	free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4858
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4859
-	/* properly clean lockfile (eventough new deaemons can adquire the lock after we die) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4860
-	close(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4861
-	unlink(LOCKFILE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4862
+#if 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4863
+  /* Don't call free if we are in the context of the signal handler */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4864
+  if (!inSigHandler) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4865
+    free(ptpClock->foreign);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4866
+    free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4867
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4868
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4869
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4870
+  /* properly clean lockfile (even though new deaemons can acquire the lock after we die) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4871
+  close(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4872
+  unlink(LOCKFILE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4873
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4874
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4875
 void dump_command_line_parameters(int argc, char **argv)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4876
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4877
 	//
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4878
 	int i = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4879
-	char sbuf[1000];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4880
-	char *st = sbuf;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4881
-	int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4882
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4883
-	*st = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4884
-	for(i=0; i < argc; i++){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4885
-		len += snprintf(sbuf + len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4886
-					     sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4887
-					     "%s ", argv[i]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4888
+  char sbuf[1000];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4889
+  char *st = sbuf;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4890
+  int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4891
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4892
+  *st = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4893
+  for(i=0; i < argc; i++){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4894
+    if (len >= sizeof(sbuf)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4895
+      ERROR("command line too long, %d\n", len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4896
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4897
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4898
+      len += snprintf(sbuf + len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4899
+		      sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4900
+		      "%s ", argv[i]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4901
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4902
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4903
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4904
+  INFO("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4905
+  INFO("Starting ptpd daemon with parameters:      %s\n", sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4906
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4907
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4908
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4909
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4910
+display_short_help(char *msg, Boolean error)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4911
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4912
+	char *ermsg;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4913
+	if (error) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4914
+		ermsg = "ERROR";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4915
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4916
+		ermsg = "";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4917
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4918
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4919
-	INFO("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4920
-	INFO("Starting ptpd2 daemon with parameters:      %s\n", sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4921
-}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4922
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4923
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4924
-void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4925
-display_short_help(char *error)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4926
-{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4927
 	printf(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4928
-			//"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4929
-			"ptpd2:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4930
-			"   -gGW          Protocol mode (slave/master with ntp/master without ntp)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4931
+			"ptpd:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4932
+			"   -gW          Protocol mode (slave/master)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4933
 			"   -b <dev>      Interface to use\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4934
 			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4935
 			"   -cC  -DVfS    Console / verbose console;     Dump stats / Interval / Output file / no Syslog\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4936
 			"   -uU           Unicast/Hybrid mode\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4937
 			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4938
 			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4939
-			"   -hHB           Summary / Complete help file / run-time debug level\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4940
+			"   -?HB           Summary / Complete help file / run-time debug level\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4941
 			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4942
-			"ERROR: %s\n\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4943
-			error
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4944
+			"%s %s\n\n", ermsg, msg
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4945
 		);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4946
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4947
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4948
@@ -517,166 +621,188 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4949
 ptpdStartup(int argc, char **argv, Integer16 * ret, RunTimeOpts * rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4950
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4951
 	PtpClock * ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4952
-	int c, noclose = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4953
-	int mode_selected = 0;		// 1: slave / 2: master, with ntp / 3: master without ntp
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4954
+  int c, noclose = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4955
+  int mode_selected = 0;		// 1: slave / 2: master, with ntp / 3: master without ntp
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4956
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4957
-	int ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4958
-	int ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4959
-	int ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4960
-	int ptp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4961
+  int ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4962
+  int ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4963
+  int ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4964
+  int ptp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4965
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4966
-	dump_command_line_parameters(argc, argv);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4967
+  Boolean time_mode_specified = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4968
+  TimeMode default_time_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4969
+  Boolean use_hardware_assist = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4970
+  Boolean is_error;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4971
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4972
-	const char *getopt_string = "HgGWb:cCf:ST:dDPR:xO:tM:a:w:u:Uehzl:o:i:I:n:N:y:m:v:r:s:p:q:Y:BjLV:";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4973
+  dump_command_line_parameters(argc, argv);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4974
+/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4975
+#ifdef PTPD_FULL_OPTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4976
+  const char *getopt_string = "HcSdDEPf:R:X:B:txjO:M:a:w:b:l:T:u:o:i:n:y:m:v:r:s:p:q:Y:LZgGWK";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4977
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4978
+  const char *getopt_string = "HcSdDEPf:R:X:B:txjM:a:w:b:l:T:o:i:n:y:m:v:r:s:p:q:Y:LZgGWK";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4979
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4980
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4981
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4982
-	/* parse command line arguments */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4983
-	while ((c = getopt(argc, argv, getopt_string)) != -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4984
-		switch (c) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4985
-		case '?':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4986
-			printf("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4987
-			display_short_help("Please input correct parameters (use -H for complete help file)");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4988
-			*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4989
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4990
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4991
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4992
-		case 'H':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4993
-			printf(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4994
-				"\nUsage:  ptpv2d [OPTION]\n\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4995
-				"Ptpv2d runs on UDP/IP , E2E mode by default\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4996
+   const char *getopt_string = "?HgGWb:cCf:ST:dDPR:xO:tM:a:w:u:ehzl:o:i:n:N:y:m:v:r:s:p:q:Y:BjLV:XZK";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4997
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4998
+  /* parse command line arguments */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4999
+  while ((c = getopt(argc, argv, getopt_string)) != -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5000
+    switch (c) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5001
+    case '?':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5002
+      if (optopt == '?') {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5003
+	      is_error = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5004
+	      *ret = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5005
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5006
+	      is_error = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5007
+	      *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5008
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5009
+      printf("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5010
+      display_short_help("Please input correct parameters (use -H for complete help file)", is_error);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5011
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5012
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5013
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5014
+    case 'H':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5015
+      printf(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5016
+				"\nUsage:  ptpd [OPTION]\n\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5017
+				"ptpd runs on UDP/IP , E2E mode by default\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5018
+        "\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5019
+#define GETOPT_START_OF_OPTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5020
+	"-H                show detailed help page\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5021
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5022
-#define GETOPT_START_OF_OPTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5023
-				"-H                show detailed help page\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5024
+        "Mode selection (one option is always required):\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5025
+        "-g                run as slave only\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5026
+        "-W                run as a Master _without_ NTP (reverts to client when inactive)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5027
+        "-b NAME           bind PTP to network interface NAME\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5028
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5029
-				"Mode selection (one option is always required):\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5030
-				"-g                run as slave only\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5031
-				"-G                run as a Master _with_ NTP  (implies -t -L)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5032
-				"-W                run as a Master _without_ NTP (reverts to client when inactive)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5033
-				"-b NAME           bind PTP to network interface NAME\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5034
+	"Options:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5035
+	"-c                run in command line (non-daemon) mode (implies -D)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5036
+	"-C                verbose non-daemon mode: implies -c -S -D -V 0, disables -f\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5037
+	"-f FILE           send output to FILE (implies -D)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5038
+        "-S                DON'T send messages to syslog\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5039
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5040
-				"Options:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5041
-				"-c                run in command line (non-daemon) mode (implies -D)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5042
-				"-C                verbose non-daemon mode: implies -c -S -D -V 0, disables -f\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5043
-				"-f FILE           send output to FILE (implies -D)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5044
-				"-S                DON'T send messages to syslog\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5045
+        "-T NUMBER         set multicast time to live\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5046
+	"-d                display stats (per received packet, see also -V)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5047
+	"-D                display stats in .csv format (per received packet, see also -V)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5048
+	"-P                display each received packet in detail\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5049
+	"-R FILE           record data about sync packets in a seperate file\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5050
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5051
-				"-T NUMBER         set multicast time to live\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5052
-				"-d                display stats (per received packet, see also -V)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5053
-				"-D                display stats in .csv format (per received packet, see also -V)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5054
-				"-P                display each received packet in detail\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5055
-				"-R FILE           record data about sync packets in a seperate file\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5056
+	"-x                do not reset the clock if off by more than one second\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5057
+	"-O NUMBER         do not reset the clock if offset is more than NUMBER nanoseconds\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5058
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5059
+	"-t                do not make any changes to the system clock\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5060
+	"-M NUMBER         do not accept delay values of more than NUMBER nanoseconds\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5061
+	"-a 10,1000        specify clock servo Proportional and Integral attenuations\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5062
+	"-w NUMBER         specify one way delay filter stiffness\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5063
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5064
-				"-x                do not reset the clock if off by more than one second\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5065
-				"-O NUMBER         do not reset the clock if offset is more than NUMBER nanoseconds\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5066
+	"-K                use PTP hardware in network interface. Exit if\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5067
+	"                  PTP hardware is not usable or available.\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5068
+	"-u ADDRESS        Unicast mode: send all messages in unicast to ADDRESS\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5069
+	"-U                Hybrid  mode: send DELAY messages in unicast\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5070
+	"                    This causes all delayReq messages to be sent in unicast to the\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5071
+	"                    IP address of the Master (taken from the last announce received).\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5072
+	"                    For masters, it replyes the delayResp to the IP address of the client\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5073
+	"                    (from the corresponding delayReq message).\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5074
+	"                    All other messages are send in multicast\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5075
+				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5076
+	"-e                run in ethernet mode (level2) \n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5077
+	"-h                run in End to End mode \n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5078
+	"-z                run in Peer-delay mode\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5079
+	"-l NUMBER,NUMBER  specify inbound, outbound latency in nsec.\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5080
+	"                    (Use this to compensate the time it takes to send and recv\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5081
+	"                    messages via sockets)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5082
+			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5083
+	"-o NUMBER         specify current UTC offset\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5084
+	"-i NUMBER         specify PTP domain number (between 0-3)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5085
+	"-I NUMBER         specify Mcast group (between 0-3, emulates PTPv1 group selection)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5086
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5087
-				"-t                do not make any changes to the system clock\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5088
-				"-M NUMBER         do not accept delay values of more than NUMBER nanoseconds\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5089
-				"-a 10,1000        specify clock servo Proportional and Integral attenuations\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5090
-				"-w NUMBER         specify one way delay filter stiffness\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5091
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5092
-				"-u ADDRESS        Unicast mode: send all messages in unicast to ADDRESS\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5093
-				"-U                Hybrid  mode: send DELAY messages in unicast\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5094
-				"                    This causes all delayReq messages to be sent in unicast to the\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5095
-				"                    IP address of the Master (taken from the last announce received).\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5096
-				"                    For masters, it replyes the delayResp to the IP address of the client\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5097
-				"                    (from the corresponding delayReq message).\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5098
-				"                    All other messages are send in multicast\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5099
+	"-n NUMBER         specify announce interval in seconds\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5100
+	"-N NUMBER         specify announce receipt TO (number of lost announces to timeout)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5101
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5102
+       	"-y NUMBER         specify sync interval in seconds\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5103
+	"-m NUMBER         specify max number of foreign master records\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5104
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5105
-				"-e                run in ethernet mode (level2) \n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5106
-				"-h                run in End to End mode \n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5107
-				"-z                run in Peer-delay mode\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5108
-				"-l NUMBER,NUMBER  specify inbound, outbound latency in nsec.\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5109
-				"                    (Use this to compensate the time it takes to send and recv\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5110
-				"                    messages via sockets)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5111
+        "-v NUMBER         Master mode: specify system clock Allen variance\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5112
+        "-r NUMBER         Master mode: specify system clock accuracy\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5113
+        "-s NUMBER         Master mode: specify system clock class\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5114
+        "-p NUMBER         Master mode: specify priority1 attribute\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5115
+        "-q NUMBER         Master mode: specify priority2 attribute\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5116
+		"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5117
+		"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5118
+	"-Y 0[,0]          Initial and Master_Overide delayreq intervals\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5119
+	"                     desc: the first 2^ number is the rate the slave sends delayReq\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5120
+	"                     When the first answer is received, the master value is used (unless the\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5121
+	"                     second number was also given)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5122
+		"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5123
+	"-B                Enable debug messages (if compiled-in). Multiple invocations to more debug\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5124
+		"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5125
+	"Compatibility Options (to restore previous default behaviour):\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5126
+	"-j                Do not refresh the IGMP Multicast menbership at each protol reset\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5127
+	"-L                Allow multiple instances (ignore lock and other daemons)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5128
+	"-V 0              Seconds between log messages (0: all messages)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5129
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5130
-				"-o NUMBER         specify current UTC offset\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5131
-				"-i NUMBER         specify PTP domain number (between 0-3)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5132
-				"-I NUMBER         specify Mcast group (between 0-3, emulates PTPv1 group selection)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5133
-				
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5134
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5135
-				"-n NUMBER         specify announce interval in 2^NUMBER sec\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5136
-				"-N NUMBER         specify announce receipt TO (number of lost announces to timeout)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5137
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5138
-				"-y NUMBER         specify sync interval in 2^NUMBER sec\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5139
-				"-m NUMBER         specify max number of foreign master records\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5140
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5141
-				"-v NUMBER         Master mode: specify system clock Allen variance\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5142
-				"-r NUMBER         Master mode: specify system clock accuracy\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5143
-				"-s NUMBER         Master mode: specify system clock class\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5144
-				"-p NUMBER         Master mode: specify priority1 attribute\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5145
-				"-q NUMBER         Master mode: specify priority2 attribute\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5146
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5147
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5148
-				"-Y 0[,0]          Initial and Master_Overide delayreq intervals\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5149
-				"                     desc: the first 2^ number is the rate the slave sends delayReq\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5150
-				"                     When the first answer is received, the master value is used (unless the\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5151
-				"                     second number was also given)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5152
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5153
-				"-B                Enable debug messages (if compiled-in). Multiple invocations to more debug\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5154
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5155
-				"Compatibility Options (to restore previous default behaviour):\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5156
-				"-j                Do not refresh the IGMP Multicast menbership at each protol reset\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5157
-				"-L                Allow multiple instances (ignore lock and other daemons)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5158
-				"-V 0              Seconds between log messages (0: all messages)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5159
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5160
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5161
+	"-Z                ignore delayReq interval given by Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5162
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5163
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5164
 #define GETOPT_END_OF_OPTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5165
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5166
-				"Possible internal states:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5167
-				"  init:        INITIALIZING\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5168
-				"  flt:         FAULTY\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5169
-				"  lstn_init:   LISTENING (first time)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5170
-				"  lstn_reset:  LISTENING (non first time)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5171
-				"  pass:        INACTIVE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5172
-				"  uncl:        UNCALIBRATED\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5173
-				"  slv:         SLAVE\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5174
-				"  pmst:        PRE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5175
-				"  mst:         ACTIVE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5176
-				"  dsbl:        DISABLED\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5177
-				"  ?:           UNKNOWN state\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5178
+	"Possible internal states:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5179
+	"  init:        INITIALIZING\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5180
+	"  flt:         FAULTY\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5181
+	"  lstn_init:   LISTENING (first time)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5182
+	"  lstn_reset:  LISTENING (non first time)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5183
+	"  pass:        INACTIVE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5184
+	"  uncl:        UNCALIBRATED\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5185
+	"  slv:         SLAVE\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5186
+	"  pmst:        PRE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5187
+	"  mst:         ACTIVE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5188
+	"  dsbl:        DISABLED\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5189
+	"  ?:           UNKNOWN state\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5190
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5191
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5192
+			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5193
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5194
-				"Signals synchronous behaviour:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5195
-				"  SIGHUP         Re-open statistics log (specified with -f)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5196
-				"  SIGUSR1        Manually step clock to current OFM value (overides -x, but honors -t)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5197
-				"  SIGUSR2        swap domain between current and current + 1 (useful for testing)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5198
-				"  SIGUSR2        cycle run-time debug level (requires RUNTIME_DEBUG)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5199
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5200
-				"  SIGINT|TERM    close file, remove lock file, and clean exit\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5201
-				"  SIGKILL|STOP   force an unclean exit\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5202
-				
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5203
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5204
-				"BMC Algorithm defaults:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5205
-				"  Software:   P1(128) > Class(13|248) > Accuracy(\"unk\"/0xFE)   > Variance(61536) > P2(128)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5206
+        "Signals synchronous behaviour:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5207
+	"  SIGHUP         Re-open statistics log (specified with -f)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5208
+	"  SIGUSR1        Manually step clock to current OFM value (overides -x, but honors -t)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5209
+	"  SIGUSR2        swap domain between current and current + 1 (useful for testing)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5210
+	"  SIGUSR2        cycle run-time debug level (requires RUNTIME_DEBUG)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5211
+#ifdef DBG_SIGRTMIN_LEAP_SECOND
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5212
+	"  SIGRTMIN       Master: signal a leap second 61 at the end of the current UTC day\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5213
+	"  SIGRTMIN+1     Master- signal a leap second 59 at the end of the current UTC day\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5214
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5215
+        "\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5216
+        "  SIGINT|TERM    close file, remove lock file, and clean exit\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5217
+        "  SIGKILL|STOP   force an unclean exit\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5218
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5219
-											 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5220
-				/*  "-k NUMBER,NUMBER  send a management message of key, record, then exit\n" implemented later.. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5221
-			    "\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5222
-			    );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5223
-			*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5224
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5225
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5226
+        "\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5227
+        "BMC Algorithm defaults:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5228
+        "  Software:   P1(248) > Class(13|248) > Accuracy(\"unk\"/0xFE)   > Variance(61536) > P2(0)\n\nptpd version %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5229
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5230
-		case 'c':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5231
-			rtOpts->nonDaemon = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5232
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5233
+        PTP_VERSION_STRING
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5234
+        );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5235
+      *ret = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5236
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5237
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5238
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5239
+    case 'c':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5240
+      rtOpts->nonDaemon = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5241
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5242
 			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5243
-		case 'C':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5244
-			rtOpts->nonDaemon = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5245
+    case 'C':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5246
+	rtOpts->nonDaemon = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5247
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5248
-			rtOpts->useSysLog    = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5249
-			rtOpts->syslog_startup_messages_also_to_stdout = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5250
-			rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5251
-			rtOpts->csvStats     = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5252
-			rtOpts->log_seconds_between_message = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5253
-			rtOpts->do_log_to_file = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5254
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5255
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5256
-		case 'S':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5257
-			rtOpts->useSysLog = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5258
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5259
+	rtOpts->useSysLog    = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5260
+	rtOpts->syslog_startup_messages_also_to_stdout = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5261
+	rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5262
+	rtOpts->csvStats     = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5263
+	rtOpts->log_seconds_between_message = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5264
+	rtOpts->do_log_to_file = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5265
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5266
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5267
+    case 'S':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5268
+      rtOpts->useSysLog = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5269
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5270
 		case 'T':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5271
 			rtOpts->ttl = atoi(optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5272
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5273
@@ -697,74 +823,101 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5274
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5275
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5276
 			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5277
-		case 'd':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5278
-			rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5279
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5280
-		case 'D':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5281
-			rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5282
-			rtOpts->csvStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5283
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5284
-		case 'P':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5285
-			rtOpts->displayPackets = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5286
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5287
+    case 'd':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5288
+      rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5289
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5290
+    case 'D':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5291
+      rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5292
+      rtOpts->verboseStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5293
+      rtOpts->csvStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5294
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5295
+    case 'P':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5296
+      rtOpts->displayPackets = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5297
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5298
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5299
-		case 'R':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5300
-			/* this option handling is now after the arguments processing (to show the help in case of -?) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5301
-			strncpy(rtOpts->recordFile, optarg, PATH_MAX);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5302
-			rtOpts->do_record_quality_file = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5303
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5304
+    case 'R':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5305
+      /* this option handling is now after the arguments processing (to show the help in case of -?) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5306
+      strncpy(rtOpts->recordFile, optarg, PATH_MAX);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5307
+      rtOpts->do_record_quality_file = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5308
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5309
+    case 'X':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5310
+      if(!strcasecmp(optarg, "nic"))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5311
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5312
+        rtOpts->time_mode = TIME_NIC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5313
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5314
+      else if(!strcasecmp(optarg, "system"))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5315
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5316
+        rtOpts->time_mode = TIME_SYSTEM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5317
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5318
+      else if(!strcasecmp(optarg, "both"))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5319
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5320
+        rtOpts->time_mode = TIME_BOTH;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5321
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5322
+      else if(!strcasecmp(optarg, "linux_hw"))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5323
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5324
+        rtOpts->time_mode = TIME_SYSTEM_LINUX_HW;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5325
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5326
+      else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5327
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5328
+        ERROR("unsupported -z clock '%s'.\n", optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5329
+        *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5330
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5331
+      /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5332
+      * Set a flag to control whether to indicate that we don't need
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5333
+      * to set the default time mode.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5334
+      */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5335
+      time_mode_specified = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5336
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5337
+    case 'x':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5338
+      rtOpts->noResetClock = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5339
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5340
+    case 'O':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5341
+      rtOpts->maxReset = atoi(optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5342
+      if (rtOpts->maxReset > 1000000000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5343
+        ERROR("Use -x to prevent jumps of more"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5344
+              " than one second.");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5345
+        *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5346
+        return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5347
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5348
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5349
+    case 'M':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5350
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5351
+      long double max_delay = strtod(optarg, NULL);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5352
+      rtOpts->maxDelay.seconds = (Integer32)floor(max_delay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5353
+      rtOpts->maxDelay.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5354
+        (Integer32)round((max_delay - rtOpts->maxDelay.seconds) * 1000000000.0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5355
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5356
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5357
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5358
+    case 't':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5359
+	rtOpts->noAdjust = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5360
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5361
+    case 'a':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5362
+      rtOpts->ap = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5363
+      if (optarg[0])
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5364
+        rtOpts->ai = strtol(optarg + 1, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5365
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5366
+    case 'w':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5367
+      rtOpts->s = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5368
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5369
+    case 'b':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5370
+      memset(rtOpts->ifaceName, 0, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5371
+      strncpy(rtOpts->ifaceName, optarg, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5372
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5373
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5374
+    case 'u':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5375
+			rtOpts->do_unicast_mode = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5376
+      strncpy(rtOpts->unicastAddress, optarg,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5377
+		      MAXHOSTNAMELEN);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5378
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5379
-		case 'x':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5380
-			rtOpts->noResetClock = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5381
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5382
-		case 'O':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5383
-			rtOpts->maxReset = atoi(optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5384
-			if (rtOpts->maxReset > 1000000000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5385
-				ERROR("Use -x to prevent jumps of more"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5386
-				       " than one second.");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5387
-				*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5388
-				return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5389
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5390
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5391
-		case 'M':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5392
-			rtOpts->maxDelay = atoi(optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5393
-			if (rtOpts->maxDelay > 1000000000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5394
-				ERROR("Use -x to prevent jumps of more"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5395
-				       " than one second.");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5396
-				*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5397
-				return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5398
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5399
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5400
-		case 't':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5401
-			rtOpts->noAdjust = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5402
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5403
-		case 'a':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5404
-			rtOpts->ap = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5405
-			if (optarg[0])
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5406
-				rtOpts->ai = strtol(optarg + 1, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5407
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5408
-		case 'w':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5409
-			rtOpts->s = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5410
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5411
-		case 'b':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5412
-			memset(rtOpts->ifaceName, 0, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5413
-			strncpy(rtOpts->ifaceName, optarg, IFACE_NAME_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5414
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5415
+	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5416
+	 * FIXME: some code still relies on checking if this variable is filled. Upgrade this to do_unicast_mode
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5417
+	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5418
+	 * E.g.:  netSendEvent(Octet * buf, UInteger16 length, NetPath * netPath, Integer32 alt_dst)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5419
+	 *  if(netPath->unicastAddr || alt_dst ) ...
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5420
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5421
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5422
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5423
-		case 'u':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5424
-			rtOpts->do_unicast_mode = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5425
-			strncpy(rtOpts->unicastAddress, optarg, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5426
-				MAXHOSTNAMELEN);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5427
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5428
-			/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5429
-			 * FIXME: some code still relies on checking if this variable is filled. Upgrade this to do_unicast_mode
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5430
-			 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5431
-			 * E.g.:  netSendEvent(Octet * buf, UInteger16 length, NetPath * netPath, Integer32 alt_dst)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5432
-			 *  if(netPath->unicastAddr || alt_dst ){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5433
-			 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5434
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5435
-			 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5436
 		case 'U':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5437
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5438
 			rtOpts->do_hybrid_mode = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5439
@@ -773,174 +926,244 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5440
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5441
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5442
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5443
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5444
-		case 'l':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5445
-			rtOpts->inboundLatency.nanoseconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5446
-				strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5447
-			if (optarg[0])
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5448
-				rtOpts->outboundLatency.nanoseconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5449
-					strtol(optarg + 1, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5450
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5451
-		case 'o':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5452
-			rtOpts->currentUtcOffset = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5453
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5454
-		case 'i':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5455
-			rtOpts->domainNumber = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5456
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5457
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5458
-		case 'I':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5459
+    case 'l':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5460
+      rtOpts->inboundLatency.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5461
+	      strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5462
+      if (optarg[0])
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5463
+        rtOpts->outboundLatency.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5464
+		strtol(optarg + 1, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5465
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5466
+    case 'o':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5467
+      rtOpts->currentUtcOffset = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5468
+      rtOpts->currentUtcOffsetValid = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5469
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5470
+    case 'i':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5471
+      rtOpts->domainNumber = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5472
+      if (rtOpts->domainNumber > 3) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5473
+	ERROR(" Please provide an integer between 0 to 3 with -i\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5474
+	*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5475
+	return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5476
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5477
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5478
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5479
+	case 'I':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5480
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5481
-			rtOpts->mcast_group_Number = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5482
+	rtOpts->mcast_group_Number = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5483
+	if (rtOpts->mcast_group_Number > 3) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5484
+		ERROR(" Please provide an integer between 0 to 3 with -I\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5485
+		*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5486
+		return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5487
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5488
 #else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5489
-			INFO("Multicast group selection not enabled. Please compile with PTP_EXPERIMENTAL\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5490
+	INFO("Multicast group selection not enabled. Please compile with PTP_EXPERIMENTAL\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5491
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5492
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5493
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5494
+   
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5495
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5496
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5497
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5498
-		case 'y':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5499
-			rtOpts->syncInterval = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5500
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5501
-		case 'n':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5502
-			rtOpts->announceInterval = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5503
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5504
+	case 'y':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5505
+      rtOpts->syncInterval = strtod(optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5506
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5507
+    case 'n':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5508
+      rtOpts->announceInterval = strtod(optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5509
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5510
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5511
 		case 'N':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5512
 			rtOpts->announceReceiptTimeout = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5513
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5514
 			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5515
-		case 'm':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5516
-			rtOpts->max_foreign_records = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5517
-			if (rtOpts->max_foreign_records < 1)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5518
-				rtOpts->max_foreign_records = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5519
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5520
-		case 'v':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5521
-			rtOpts->clockQuality.offsetScaledLogVariance = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5522
-				strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5523
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5524
-		case 'r':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5525
-			rtOpts->clockQuality.clockAccuracy = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5526
-				strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5527
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5528
-		case 's':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5529
-			rtOpts->clockQuality.clockClass = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5530
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5531
-		case 'p':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5532
-			rtOpts->priority1 = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5533
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5534
-		case 'q':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5535
-			rtOpts->priority2 = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5536
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5537
-		case 'e':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5538
-			rtOpts->ethernet_mode = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5539
-			ERROR("Not implemented yet !");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5540
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5541
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5542
-		case 'h':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5543
-			rtOpts->delayMechanism = E2E;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5544
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5545
+    case 'm':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5546
+      rtOpts->max_foreign_records = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5547
+      if (rtOpts->max_foreign_records < 1)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5548
+        rtOpts->max_foreign_records = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5549
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5550
+    case 'v':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5551
+      rtOpts->clockQuality.offsetScaledLogVariance =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5552
+        strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5553
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5554
+    case 'r':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5555
+      rtOpts->clockQuality.clockAccuracy =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5556
+        strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5557
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5558
+    case 's':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5559
+      rtOpts->clockQuality.clockClass = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5560
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5561
+    case 'p':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5562
+      rtOpts->priority1 = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5563
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5564
+    case 'q':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5565
+      rtOpts->priority2 = strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5566
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5567
+	case 'e':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5568
+		rtOpts->ethernet_mode = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5569
+		ERROR("Not implemented yet !");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5570
+		*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5571
+		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5572
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5573
+	case 'h':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5574
+		rtOpts->delayMechanism = E2E;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5575
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5576
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5577
-		case 'V':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5578
-			rtOpts->log_seconds_between_message = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5579
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5580
+	case 'V':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5581
+		rtOpts->log_seconds_between_message = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5582
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5583
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5584
-		case 'z':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5585
-			rtOpts->delayMechanism = P2P;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5586
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5587
+	case 'Z':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5588
+		rtOpts->ignore_delayreq_interval_master = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5589
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5590
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5591
-		/* mode selection */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5592
-		/* slave only */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5593
-		case 'g':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5594
-			mode_selected = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5595
-			rtOpts->slaveOnly = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5596
-			rtOpts->initial_delayreq = DEFAULT_DELAYREQ_INTERVAL;		// allow us to use faster rate at init
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5597
+	case 'z':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5598
+		rtOpts->delayMechanism = P2P;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5599
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5600
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5601
-			/* we dont expect any parallel deamons, and we are strict about it  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5602
-			ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5603
-			ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5604
-			ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5605
-			ptp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5606
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5607
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5608
-		/* Master + NTP */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5609
-		case 'G':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5610
-			mode_selected = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5611
-			rtOpts->clockQuality.clockClass = DEFAULT_CLOCK_CLASS__APPLICATION_SPECIFIC_TIME_SOURCE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5612
-			rtOpts->slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5613
-			rtOpts->noAdjust = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5614
+    /* mode selection */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5615
+    /* slave only */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5616
+    case 'g':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5617
+      switch (mode_selected) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5618
+	      case 2 :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5619
+		      ERROR(" -G and -g cannot be specified together\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5620
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5621
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5622
+	      case 3:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5623
+		      ERROR(" -W and -g cannot be specified together\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5624
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5625
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5626
+	      default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5627
+		      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5628
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5629
+      mode_selected = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5630
+      rtOpts->slaveOnly = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5631
+      rtOpts->master_slave_mode = PTP_MODE_SLAVE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5632
+      rtOpts->initial_delayreq = DEFAULT_DELAYREQ_INTERVAL;		// allow us to use faster rate at init
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5633
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5634
-			/* we expect one ntpd daemon in parallel, but we are not strick about it */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5635
-			ntp_daemons_expected = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5636
-			ntp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5637
-			ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5638
-			ptp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5639
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5640
+      /* we dont expect any parallel deamons, and we are strict about it  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5641
+      ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5642
+      ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5643
+      ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5644
+      ptp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5645
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5646
-		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5647
-		 *  master without NTP (Original Master behaviour):
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5648
-		 *    it falls back to slave mode when its inactive master;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5649
-		 *    once it starts being active, it will drift for itself, so in actual terms it always requires NTP to work properly
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5650
-		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5651
-		case 'W':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5652
-			mode_selected = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5653
-			rtOpts->slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5654
-			rtOpts->noAdjust = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5655
+      default_time_mode = DEFAULT_SLAVE_TIME_MODE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5656
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5657
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5658
-			/* we don't expect ntpd, but we can run with other ptpv1 deamons  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5659
-			ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5660
-			ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5661
-			ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5662
-			ptp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5663
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5664
+    /* Master + NTP */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5665
+    case 'G':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5666
+      switch (mode_selected) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5667
+	      case 1 :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5668
+		      ERROR(" -G and -g cannot be specified together\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5669
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5670
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5671
+	      case 3:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5672
+		      ERROR(" -G and -W cannot be specified together\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5673
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5674
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5675
+	      default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5676
+		      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5677
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5678
+      mode_selected = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5679
+      rtOpts->master_slave_mode = PTP_MODE_MASTER_WITH_NTP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5680
+      rtOpts->clockQuality.clockClass = DEFAULT_CLOCK_CLASS__APPLICATION_SPECIFIC_TIME_SOURCE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5681
+      rtOpts->slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5682
+      rtOpts->noAdjust = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5683
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5684
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5685
-		case 'Y':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5686
-			rtOpts->initial_delayreq = strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5687
-			rtOpts->subsequent_delayreq = rtOpts->initial_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5688
-			rtOpts->ignore_delayreq_interval_master = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5689
+      /* we expect one ntpd daemon in parallel, but we are not strick about it */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5690
+      ntp_daemons_expected = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5691
+      ntp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5692
+      ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5693
+      ptp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5694
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5695
-			/* Use this to override the master-given DelayReq value */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5696
-			if (optarg[0]){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5697
-				rtOpts->subsequent_delayreq = strtol(optarg + 1, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5698
-				rtOpts->ignore_delayreq_interval_master = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5699
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5700
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5701
+      default_time_mode = DEFAULT_MASTER_TIME_MODE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5702
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5703
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5704
-		case 'L':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5705
-			/* enable running multiple ptpd2 daemons */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5706
-			rtOpts->ignore_daemon_lock = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5707
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5708
-		case 'j':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5709
-			rtOpts->do_IGMP_refresh = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5710
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5711
+    /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5712
+     *  master without NTP (Original Master behaviour):
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5713
+     *    it falls back to slave mode when its inactive master;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5714
+     *    once it starts being active, it will drift for itself, so in actual terms it always requires NTP to work properly
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5715
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5716
+    case 'W':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5717
+      switch (mode_selected) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5718
+	      case 1 :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5719
+		      ERROR(" -W and -g cannot be specified together\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5720
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5721
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5722
+	      case 2:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5723
+		      ERROR(" -G and -W cannot be specified together\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5724
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5725
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5726
+	      default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5727
+		      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5728
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5729
+      rtOpts->master_slave_mode = PTP_MODE_MASTER_NO_NTP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5730
+      mode_selected = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5731
+      rtOpts->slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5732
+      rtOpts->noAdjust = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5733
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5734
+      /* we don't expect ntpd, but we can run with other ptpv1 deamons  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5735
+      ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5736
+      ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5737
+      ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5738
+      ptp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5739
+      default_time_mode = DEFAULT_MASTER_TIME_MODE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5740
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5741
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5742
+      /* Use the NIC hardware; i.e. TIME_BOTH mode */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5743
+    case 'K':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5744
+/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5745
+#ifdef __sparc__
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5746
+	ERROR("HW assist (-K) is not supported on sparc\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5747
+	*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5748
+	return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5749
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5750
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5751
+      use_hardware_assist = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5752
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5753
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5754
 		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5755
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5756
+     case 'Y':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5757
+	rtOpts->initial_delayreq = strtod(optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5758
+	rtOpts->subsequent_delayreq = rtOpts->initial_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5759
+	rtOpts->ignore_delayreq_interval_master = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5760
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5761
-		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5762
-			ERROR("Unknown parameter %c \n", c);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5763
-			*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5764
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5765
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5766
+	/* Use this to override the master-given DelayReq value */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5767
+	if (optarg[0]){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5768
+		rtOpts->subsequent_delayreq = strtol(optarg + 1, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5769
+		rtOpts->ignore_delayreq_interval_master = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5770
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5771
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5772
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5773
+      case 'L':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5774
+         /* enable running multiple ptpd2 daemons */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5775
+	 rtOpts->ignore_daemon_lock = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5776
+	 break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5777
+      case 'j':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5778
+	rtOpts->do_IGMP_refresh = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5779
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5780
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5781
-	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5782
-	 * we try to catch as many error conditions as possible, but before we call daemon().
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5783
-	 * the exception is the lock file, as we get a new pid when we call daemon(),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5784
-	 * so this is checked twice: once to read, second to read/write
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5785
-	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5786
-	if(geteuid() != 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5787
-	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5788
-		display_short_help("Please run this daemon as root");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5789
-			*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5790
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5791
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5792
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5793
+      ERROR("Unknown parameter %c \n", c);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5794
+      *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5795
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5796
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5797
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5798
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5799
-	if(!mode_selected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5800
-		display_short_help("Please select program mode");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5801
-		*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5802
-		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5803
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5804
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5805
+  /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5806
+   * we try to catch as many error conditions as possible, but before we call daemon().
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5807
+   * the exception is the lock file, as we get a new pid when we call daemon(),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5808
+   * so this is checked twice: once to read, second to read/write
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5809
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5810
+  if(geteuid() != 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5811
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5812
+    display_short_help("Please run this daemon as root", TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5813
+      *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5814
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5815
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5816
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5817
+  if(rtOpts->master_slave_mode == PTP_MODE_NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5818
+    display_short_help("Please select program mode", TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5819
+    *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5820
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5821
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5822
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5823
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5824
 	if(rtOpts->do_unicast_mode && rtOpts->do_hybrid_mode){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5825
@@ -950,42 +1173,47 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5826
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5827
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5828
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5829
+    /* If the time mode has not been specified then use the default time mode */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5830
+    if (time_mode_specified == FALSE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5831
+      if (use_hardware_assist) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5832
+	      default_time_mode = TIME_BOTH;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5833
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5834
+      rtOpts->time_mode = default_time_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5835
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5836
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5837
+  ptpClock = (PtpClock *) calloc(1, sizeof(PtpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5838
+  if (!ptpClock) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5839
+    PERROR("failed to allocate memory for protocol engine data");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5840
+    *ret = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5841
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5842
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5843
+    DBG("allocated %d bytes for protocol engine data\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5844
+        (int)sizeof(PtpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5845
+    ptpClock->foreign = (ForeignMasterRecord *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5846
+      calloc(rtOpts->max_foreign_records,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5847
+            sizeof(ForeignMasterRecord));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5848
+    if (!ptpClock->foreign) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5849
+      PERROR("failed to allocate memory for foreign "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5850
+            "master data");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5851
+      *ret = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5852
+      free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5853
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5854
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5855
+      DBG("allocated %d bytes for foreign master data\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5856
+          (int)(rtOpts->max_foreign_records *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5857
+          sizeof(ForeignMasterRecord)));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5858
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5859
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5860
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5861
+  /* Init to 0 net buffer */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5862
+  memset(ptpClock->msgIbuf, 0, PACKET_SIZE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5863
+  memset(ptpClock->msgObuf, 0, PACKET_SIZE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5864
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5865
+  /* Initialise sockets to invalid */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5866
+  ptpClock->netPath.eventSock = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5867
+  ptpClock->netPath.generalSock = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5868
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5869
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5870
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5871
-	ptpClock = (PtpClock *) calloc(1, sizeof(PtpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5872
-	if (!ptpClock) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5873
-		PERROR("failed to allocate memory for protocol engine data");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5874
-		*ret = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5875
-		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5876
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5877
-		DBG("allocated %d bytes for protocol engine data\n", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5878
-		    (int)sizeof(PtpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5879
-		ptpClock->foreign = (ForeignMasterRecord *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5880
-			calloc(rtOpts->max_foreign_records, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5881
-			       sizeof(ForeignMasterRecord));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5882
-		if (!ptpClock->foreign) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5883
-			PERROR("failed to allocate memory for foreign "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5884
-			       "master data");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5885
-			*ret = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5886
-			free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5887
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5888
-		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5889
-			DBG("allocated %d bytes for foreign master data\n", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5890
-			    (int)(rtOpts->max_foreign_records * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5891
-				  sizeof(ForeignMasterRecord)));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5892
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5893
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5894
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5895
-	/* Init to 0 net buffer */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5896
-	memset(ptpClock->msgIbuf, 0, PACKET_SIZE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5897
-	memset(ptpClock->msgObuf, 0, PACKET_SIZE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5898
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5899
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5900
- 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5901
 	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5902
 	 * This section discusses some of the complexities of doing proper Locking and Background Daemon programs.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5903
 	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5904
@@ -997,7 +1225,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5905
 	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5906
 	 *      The correct way is to lock the shared resource that needs write protection: the kernel clock itself.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5907
 	 *   (http://mywiki.wooledge.org/ProcessManagement#How_do_I_make_sure_only_one_copy_of_my_script_can_run_at_a_time.3F)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5908
-	 *   Thus, ptpd2 will lock the file /var/run/kernel_clock in daemon_already_running().
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5909
+	 *   Thus, ptpd2 will lock the file LOCKFILE in daemon_already_running().
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5910
 	 *      Unfortunately this is not followed by the other discipliners, so on top of locking we also try to find
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5911
 	 *   them by name (we spawn pgrep in check_parallel_daemons()).
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5912
 	 *      Another alternative would be to clone NTP's way of doing this: to bind to port 123, the NTP port. Although this
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5913
@@ -1024,10 +1252,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5914
 	if(rtOpts->ignore_daemon_lock == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5915
 		/* check and create Lock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5916
 		if(daemon_already_running()){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5917
-			ERROR("  Error:   Multiple ptpd2 instances detected (-L to ignore lock file %s)\n", LOCKFILE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5918
+			ERROR("  Error:   Multiple ptpd instances detected (-L to ignore lock file %s)\n", LOCKFILE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5919
 			*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5920
+			free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5921
 			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5922
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5923
+		/* unlock the file so that child process can lock it */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5924
+		(void) unlockfile(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5925
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5926
 		/* if we ignore the daemon lock, we also are not strict for parallel daemons (but we always syslog what is happening) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5927
 		ptp_daemons_strict=0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5928
@@ -1035,86 +1266,92 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5929
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5930
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5931
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5932
-	if(check_parallel_daemons("ptpd", ptp_daemons_expected, ptp_daemons_strict, rtOpts) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5933
-	   check_parallel_daemons("ntpd", ntp_daemons_expected, ntp_daemons_strict, rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5934
-	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5935
-		/* ok */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5936
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5937
-		*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5938
-		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5939
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5940
+  if(check_parallel_daemons("ptpd", ptp_daemons_expected, ptp_daemons_strict, rtOpts) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5941
+    check_parallel_daemons("ntpd", ntp_daemons_expected, ntp_daemons_strict, rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5942
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5943
+    /* ok */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5944
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5945
+    *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5946
+    free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5947
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5948
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5949
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5950
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5951
+  /* Manage open files: stats and quality file */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5952
+  if(rtOpts->do_record_quality_file){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5953
+	if (recordToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5954
+      noclose = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5955
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5956
+      PERROR("could not open quality file");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5957
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5958
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5959
+  if(rtOpts->do_log_to_file){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5960
+		if(logToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5961
+      noclose = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5962
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5963
+      PERROR("could not open output file");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5964
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5965
+    rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5966
+    rtOpts->verboseStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5967
+    rtOpts->csvStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5968
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5969
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5970
-	/* Manage open files: stats and quality file */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5971
-	if(rtOpts->do_record_quality_file){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5972
-		if (recordToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5973
-			noclose = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5974
-		else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5975
-			PERROR("could not open quality file");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5976
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5977
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5978
-	if(rtOpts->do_log_to_file){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5979
-		if(logToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5980
-			noclose = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5981
-		else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5982
-			PERROR("could not open output file");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5983
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5984
-		rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5985
-		rtOpts->csvStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5986
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5987
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5988
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5989
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5990
-	/*  DAEMON */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5991
+  /*  DAEMON */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5992
 #ifdef PTPD_NO_DAEMON
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5993
-	if(rtOpts->nonDaemon == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5994
-		rtOpts->nonDaemon= 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5995
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5996
+  if(rtOpts->nonDaemon == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5997
+    rtOpts->nonDaemon= 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5998
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5999
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6000
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6001
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6002
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6003
-	if(rtOpts->nonDaemon == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6004
-		/* fork to daemon */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6005
-		if (daemon(0, noclose) == -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6006
-			PERROR("failed to start as daemon");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6007
-			*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6008
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6009
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6010
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6011
+  if(rtOpts->nonDaemon == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6012
+    /* fork to daemon */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6013
+    if (daemon(0, noclose) == -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6014
+      PERROR("failed to start as daemon");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6015
+      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6016
+      free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6017
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6018
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6019
 		INFO("  Info:    Now running as a daemon\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6020
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6021
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6022
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6023
 	/* if syslog is on, send all messages to syslog only  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6024
 	rtOpts->syslog_startup_messages_also_to_stdout = FALSE;   
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6025
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6026
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6027
-	/* Second lock check, to replace the contents with our own new PID. It seems that F_WRLCK is not inherited to the child, so we lock again */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6028
-	if(rtOpts->ignore_daemon_lock == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6029
-		/* check and create Lock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6030
-		if(daemon_already_running()){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6031
+  /* Second lock check, to replace the contents with our own new PID. It seems that F_WRLCK is not inherited to the child, so we lock again */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6032
+  if(rtOpts->ignore_daemon_lock == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6033
+    /* check and create Lock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6034
+    if(daemon_already_running()){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6035
 			ERROR("Multiple instances of this daemon detected (Use option -L to ignore lock file %s)\n", LOCKFILE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6036
-			*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6037
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6038
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6039
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6040
+      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6041
+      free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6042
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6043
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6044
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6045
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6046
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6047
-	/* use new synchronous signal handlers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6048
-	signal(SIGINT,  catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6049
-	signal(SIGTERM, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6050
-	signal(SIGHUP,  catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6051
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6052
-	signal(SIGUSR1, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6053
-	signal(SIGUSR2, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6054
+  /* use new syncronous signal handlers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6055
+  signal(SIGINT,  catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6056
+  signal(SIGTERM, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6057
+  signal(SIGHUP,  catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6058
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6059
-	*ret = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6060
+  signal(SIGUSR1, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6061
+  signal(SIGUSR2, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6062
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6063
+#ifdef DBG_SIGRTMIN_LEAP_SECOND
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6064
+  signal(SIGRTMIN,   catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6065
+  signal(SIGRTMIN+1, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6066
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6067
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6068
+  *ret = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6069
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6070
 	INFO("  Info:    Startup finished sucessfully\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6071
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6072
-	return ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6073
+  return ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6074
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6075
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6076
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6077
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/sys.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6078
--- a/src/dep/sys.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6079
+++ b/src/dep/sys.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6080
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6081
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6082
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6083
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6084
  * Copyright (c) 2011      George V. Neville-Neil, Steven Kreuzer,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6085
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6086
  *                         National Instruments.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6087
@@ -39,6 +41,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6088
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6089
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6090
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6091
+#include <inttypes.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6092
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6093
 #include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6094
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6095
 #if defined(linux)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6096
@@ -55,6 +59,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6097
 /* only C99 has the round function built-in */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6098
 double round (double __x);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6099
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6100
+/* TODO Yuk */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6101
+extern PtpClock *G_ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6102
+extern PtpClock* G_timeBothClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6103
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6104
 /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6105
  returns a static char * for the representation of time, for debug purposes
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6106
@@ -111,9 +118,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6107
 	/* always print either a space, or the leading "-". This makes the stat files columns-aligned */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6108
 	len += snprintf(&s[len], max_len - len, "%c",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6109
 		isTimeInternalNegative(p)? '-':' ');
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6110
+	if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6111
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6112
 	len += snprintf(&s[len], max_len - len, "%d.%09d",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6113
 	    abs(p->seconds), abs(p->nanoseconds));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6114
+	if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6115
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6116
 	return len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6117
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6118
@@ -170,11 +179,14 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6119
 	int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6120
 	int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6121
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6122
-	if (info)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6123
+	if (info) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6124
 		len += snprintf(&s[len], max_len - len, "%s", info);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6125
+		if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6126
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6127
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6128
 	for (i = 0; ;) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6129
 		len += snprintf(&s[len], max_len - len, "%02x", (unsigned char) id[i]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6130
+		if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6131
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6132
 		if (++i >= CLOCK_IDENTITY_LENGTH)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6133
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6134
@@ -191,19 +203,23 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6135
 	int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6136
 	int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6137
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6138
-	if (info)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6139
+	if (info) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6140
 		len += snprintf(&s[len], max_len - len, "%s", info);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6141
+		if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6142
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6143
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6144
 	for (i = 0; ;) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6145
 		/* skip bytes 3 and 4 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6146
 		if(!((i==3) || (i==4))){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6147
 			len += snprintf(&s[len], max_len - len, "%02x", (unsigned char) id[i]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6148
+			if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6149
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6150
 			if (++i >= CLOCK_IDENTITY_LENGTH)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6151
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6152
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6153
 			/* print a separator after each byte except the last one */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6154
 			len += snprintf(&s[len], max_len - len, "%s", ":");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6155
+			if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6156
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6157
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6158
 			i++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6159
@@ -226,7 +242,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6160
 	static struct ether_addr prev_addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6161
 	static char buf[BUF_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6162
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6163
-#if defined(linux) || defined(__NetBSD__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6164
+#if defined(linux) || defined(__NetBSD__) || defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6165
 	if (memcmp(addr->ether_addr_octet, &prev_addr, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6166
 		  sizeof(struct ether_addr )) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6167
 		valid = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6168
@@ -270,7 +286,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6169
 	for (i = 0, j = 0; i< CLOCK_IDENTITY_LENGTH ; i++ ){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6170
 		/* skip bytes 3 and 4 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6171
 		if(!((i==3) || (i==4))){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6172
-#if defined(linux) || defined(__NetBSD__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6173
+#if defined(linux) || defined(__NetBSD__) || defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6174
 			e.ether_addr_octet[j] = (uint8_t) id[i];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6175
 #else // e.g. defined(__FreeBSD__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6176
 			e.octet[j] = (uint8_t) id[i];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6177
@@ -282,6 +298,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6178
 	/* convert and print hostname */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6179
 	ether_ntohost_cache(buf, &e);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6180
 	len += snprintf(&s[len], max_len - len, "(%s)", buf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6181
+	if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6182
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6183
 	return len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6184
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6185
@@ -292,18 +309,23 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6186
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6187
 	int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6188
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6189
-	if (info)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6190
+	if (info) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6191
 		len += snprintf(&s[len], max_len - len, "%s", info);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6192
+		if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6193
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6194
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6195
 #ifdef PRINT_MAC_ADDRESSES
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6196
 	len += snprint_ClockIdentity_mac(&s[len], max_len - len, id->clockIdentity, NULL);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6197
 #else	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6198
 	len += snprint_ClockIdentity(&s[len], max_len - len, id->clockIdentity, NULL);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6199
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6200
+	if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6201
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6202
 	len += snprint_ClockIdentity_ntohost(&s[len], max_len - len, id->clockIdentity, NULL);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6203
+	if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6204
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6205
 	len += snprintf(&s[len], max_len - len, "/%02x", (unsigned) id->portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6206
+	if (len > max_len) len = max_len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6207
 	return len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6208
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6209
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6210
@@ -356,7 +378,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6211
 		struct timeval now;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6212
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6213
 		extern char *translatePortState(PtpClock *ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6214
-		extern PtpClock *G_ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6215
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6216
 		fprintf(stderr, "   (ptpd %-9s ",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6217
 			priority == LOG_EMERG   ? "emergency)" :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6218
@@ -387,7 +408,51 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6219
 	va_end(ap);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6220
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6221
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6222
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6223
+/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6224
+* Dumps a data buffer
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6225
+* This either prints the message to syslog, or with timestamp+state to stderr 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6226
+* (which has possibly been redirected to a file, using logtofile()/dup2()
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6227
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6228
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6229
+dump(const char *text, void *addr, int len)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6230
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6231
+  uint8_t *address = (uint8_t *)addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6232
+  extern RunTimeOpts rtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6233
+  if(rtOpts.useSysLog) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6234
+    int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6235
+    static Boolean logOpened;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6236
+    if(!logOpened) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6237
+      openlog("ptpd2", 0, LOG_DAEMON);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6238
+      logOpened = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6239
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6240
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6241
+    syslog(LOG_DEBUG, "%s: length %d, data...\n", text, len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6242
+    for (i = 0; i < len; i++) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6243
+      syslog(LOG_DEBUG, "0x%02x ", address[i]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6244
+      if ((i % 8) == 7) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6245
+        syslog(LOG_DEBUG, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6246
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6247
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6248
+    if ((i % 8) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6249
+      syslog(LOG_DEBUG, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6250
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6251
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6252
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6253
+    int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6254
+    fprintf(stderr, "%s: length %d, data...\n", text, len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6255
+    for (i = 0; i < len; i++) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6256
+      fprintf(stderr, "0x%02x ", address[i]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6257
+      if ((i % 8) == 7) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6258
+        fprintf(stderr, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6259
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6260
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6261
+    if ((i % 8) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6262
+      fprintf(stderr, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6263
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6264
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6265
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6266
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6267
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6268
 displayStats(RunTimeOpts * rtOpts, PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6269
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6270
 	static int start = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6271
@@ -402,6 +467,14 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6272
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6273
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6274
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6275
+  /* In non-verbose mode, don't print a separate line for the other ptp clock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6276
+   * instance used for time both if we've in slave state. Conversely, if in 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6277
+   * listening or master state we do want stats, even if this is non-verbose mode
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6278
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6279
+  if (!rtOpts->verboseStats && (ptpClock != G_ptpClock) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6280
+	(G_ptpClock->portState == PTP_SLAVE)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6281
+	return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6282
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6283
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6284
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6285
 	if (start && rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6286
@@ -413,7 +486,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6287
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6288
 	memset(sbuf, ' ', sizeof(sbuf));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6289
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6290
-	getTime(&now);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6291
+	getTime(&now, TIME_SYSTEM, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6292
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6293
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6294
 	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6295
@@ -440,110 +513,167 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6296
 	strftime(time_str, MAXTIMESTR, "%Y-%m-%d %X", localtime(&time_s));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6297
 	len += snprintf(sbuf + len, sizeof(sbuf) - len, "%s%s.%06d, %s",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6298
 		       rtOpts->csvStats ? "" : "state: ",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6299
-		       time_str, (int)now.nanoseconds/1000,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6300
+			time_str, (int)now.nanoseconds/1000,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6301
 		       translatePortState(ptpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6302
+	if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6303
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6304
+	if (ptpClock->name != NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6305
+		len += snprintf(sbuf + len, sizeof(sbuf) - len, "%s ", ptpClock->name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6306
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6307
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6308
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6309
+	if (rtOpts->verboseStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6310
+		len += snprintf(sbuf + len, sizeof(sbuf) - len, "%s, ",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6311
+			translatePortState(ptpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6312
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6313
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6314
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6315
 	if (ptpClock->portState == PTP_SLAVE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6316
-		len += snprint_PortIdentity(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6317
-			 &ptpClock->parentPortIdentity, " ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6318
+		if (!rtOpts->verboseStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6319
+			int64_t offset = ((int64_t)ptpClock->offsetFromMaster.seconds * 1000000000)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6320
+				+ (int64_t)ptpClock->offsetFromMaster.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6321
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6322
-		/* 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6323
-		 * if grandmaster ID differs from parent port ID then
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6324
-		 * also print GM ID 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6325
-		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6326
-		if (memcmp(ptpClock->grandmasterIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6327
-			   ptpClock->parentPortIdentity.clockIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6328
-			   CLOCK_IDENTITY_LENGTH)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6329
-			len += snprint_ClockIdentity(sbuf + len, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6330
-						     sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6331
-						     ptpClock->grandmasterIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6332
-						     " GM:");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6333
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6334
+			len += snprintf(sbuf + len, sizeof(sbuf) - len, "offset: %"PRIi64" ns", offset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6335
+			if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6336
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6337
-		len += snprintf(sbuf + len, sizeof(sbuf) - len, ", ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6338
+			if (rtOpts->time_mode == TIME_BOTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6339
+				int64_t offset = ((int64_t)G_timeBothClock->offsetFromMaster.seconds * 1000000000)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6340
+					+ (int64_t)G_timeBothClock->offsetFromMaster.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6341
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6342
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6343
-			len += snprintf(sbuf + len, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6344
-					sizeof(sbuf) - len, "owd: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6345
-        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6346
+				len += snprintf(sbuf + len, sizeof(sbuf) - len, ", %s offset: %"PRIi64" ns",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6347
+					(G_timeBothClock->name != NULL)? G_timeBothClock->name: "",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6348
+					offset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6349
+				if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6350
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6351
+		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6352
+			if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6353
+				len += snprintf(sbuf + len, sizeof(sbuf) - len, "cid: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6354
+				if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6355
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6356
+			len += snprint_PortIdentity(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6357
+				&ptpClock->parentPortIdentity, " ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6358
+			if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6359
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6360
+      /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6361
+       * if grandmaster ID differs from parent port ID then
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6362
+       * also print GM ID
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6363
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6364
+      if (memcmp(ptpClock->grandmasterIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6365
+                 ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6366
+                 CLOCK_IDENTITY_LENGTH)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6367
+        len += snprint_ClockIdentity(sbuf + len, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6368
+					sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6369
+                                     ptpClock->grandmasterIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6370
+				     " GM:");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6371
+        if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6372
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6373
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6374
+      len += snprintf(sbuf + len, sizeof(sbuf) - len, ", ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6375
+      if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6376
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6377
+      if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6378
+        len += snprintf(sbuf + len, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6379
+			sizeof(sbuf) - len, "owd: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6380
+        if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6381
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6382
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6383
 		if(rtOpts->delayMechanism == E2E) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6384
 			len += snprint_TimeInternal(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6385
-						    &ptpClock->meanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6386
+						&ptpClock->meanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6387
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6388
 			len += snprint_TimeInternal(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6389
 						    &ptpClock->peerMeanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6390
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6391
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6392
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6393
 		len += snprintf(sbuf + len, sizeof(sbuf) - len, ", ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6394
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6395
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6396
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6397
-			len += snprintf(sbuf + len, sizeof(sbuf) - len, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6398
+		if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6399
+			len += snprintf(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6400
 					"ofm: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6401
+			if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6402
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6403
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6404
 		len += snprint_TimeInternal(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6405
-		    &ptpClock->offsetFromMaster);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6406
+                                  &ptpClock->offsetFromMaster);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6407
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6408
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6409
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6410
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6411
 		/* print MS and SM with sign */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6412
 		len += snprintf(sbuf + len, sizeof(sbuf) - len, ", ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6413
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6414
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6415
+		if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6416
 			len += snprintf(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6417
 			"stm: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6418
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6419
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6420
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6421
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6422
 		len += snprint_TimeInternal(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6423
 				&(ptpClock->delaySM));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6424
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6425
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6426
 		len += snprintf(sbuf + len, sizeof(sbuf) - len, ", ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6427
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6428
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6429
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6430
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6431
+		if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6432
 			len += snprintf(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6433
 			"mts: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6434
+			if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6435
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6436
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6437
 		len += snprint_TimeInternal(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6438
 				&(ptpClock->delayMS));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6439
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6440
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6441
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6442
+		len += sprintf(sbuf + len, ", %s%Lf",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6443
+                     rtOpts->csvStats ? "" : "drift: ",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6444
+		     ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6445
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6446
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6447
 		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6448
-		len += sprintf(sbuf + len, ", %s%d",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6449
-		    rtOpts->csvStats ? "" : "drift: ", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6450
-			       ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6451
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6452
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6453
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6454
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6455
 		/* Last column has the type of last packet processed by the servo */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6456
 		len += snprintf(sbuf + len, sizeof(sbuf) - len, ", ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6457
+		if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6458
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6459
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6460
-			len += snprintf(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6461
-			"last_msg: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6462
+      if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6463
+        len += snprintf(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6464
+	"last_msg: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6465
+        if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6466
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6467
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6468
-		len += snprintf(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6469
-				"%c ", ptpClock->char_last_msg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6470
+      len += snprintf(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6471
+		      "%c ", ptpClock->char_last_msg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6472
+      if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6473
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6474
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6475
+  else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6476
+    if ((ptpClock->portState == PTP_MASTER) || (ptpClock->portState == PTP_PASSIVE)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6477
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6478
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6479
-	else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6480
-		if ((ptpClock->portState == PTP_MASTER) || (ptpClock->portState == PTP_PASSIVE)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6481
+      len += snprint_PortIdentity(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6482
+                                  &ptpClock->parentPortIdentity, " ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6483
+      if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6484
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6485
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6486
-			len += snprint_PortIdentity(sbuf + len, sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6487
-				 &ptpClock->parentPortIdentity, " ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6488
-							 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6489
-			//len += snprintf(sbuf + len, sizeof(sbuf) - len, ")");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6490
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6491
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6492
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6493
-		/* show the current reset number on the log */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6494
-		if (ptpClock->portState == PTP_LISTENING) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6495
-			len += snprintf(sbuf + len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6496
-						     sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6497
-						     " %d ", ptpClock->reset_count);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6498
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6499
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6500
+    /* show the current reset number on the log */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6501
+    if (ptpClock->portState == PTP_LISTENING) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6502
+      len += snprintf(sbuf + len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6503
+		      sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6504
+                      " num_resets: %d ", ptpClock->reset_count);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6505
+      if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6506
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6507
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6508
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6509
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6510
-	/* add final \n in normal status lines */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6511
-	len += snprintf(sbuf + len, sizeof(sbuf) - len, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6512
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6513
+  /* add final \n in normal status lines */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6514
+  len += snprintf(sbuf + len, sizeof(sbuf) - len, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6515
+  if (len > sizeof(sbuf)) len = sizeof(sbuf);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6516
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6517
 #if 0   /* NOTE: Do we want this? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6518
 	if (rtOpts->nonDaemon) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6519
@@ -551,8 +681,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6520
 		len += snprintf(sbuf + len, sizeof(sbuf) - len, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6521
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6522
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6523
-	write(1, sbuf, rtOpts->csvStats ? len : SCREEN_MAXSZ + 1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6524
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6525
+	write(1, sbuf, len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6526
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6527
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6528
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6529
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6530
@@ -581,6 +711,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6531
 	return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6532
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6533
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6534
+#if 0 /* Defined in dep/time.c - fetch time from hw */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6535
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6536
 getTime(TimeInternal * time)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6537
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6538
@@ -600,21 +731,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6539
 	time->nanoseconds = tp.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6540
 #endif /* linux || __APPLE__ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6541
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6542
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6543
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6544
-setTime(TimeInternal * time)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6545
-{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6546
-	struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6547
- 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6548
-	tv.tv_sec = time->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6549
-	tv.tv_usec = time->nanoseconds / 1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6550
-	WARNING("Going to step the system clock to %ds %dns\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6551
-	       time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6552
-	settimeofday(&tv, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6553
-	WARNING("Finished stepping the system clock to %ds %dns\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6554
-	       time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6555
-}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6556
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6557
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6558
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6559
 /* returns a double beween 0.0 and 1.0 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6560
 double 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6561
@@ -627,44 +744,123 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6562
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6563
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6564
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6565
-/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6566
- * TODO: this function should have been coded in a way to manipulate both the frequency and the tick,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6567
- * to avoid having to call setTime() when the clock is very far away.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6568
- * This would result in situations we would force the kernel clock to run the clock twice as slow,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6569
- * in order to avoid stepping time backwards
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6570
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6571
 #if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6572
-Boolean
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6573
-adjFreq(Integer32 adj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6574
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6575
+setTimexFlags(int flags, Boolean quiet)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6576
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6577
-	struct timex t;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6578
+	struct timex tmx;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6579
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6580
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6581
-	memset(&t, 0, sizeof(t));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6582
-	if (adj > ADJ_FREQ_MAX){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6583
-		adj = ADJ_FREQ_MAX;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6584
-	} else if (adj < -ADJ_FREQ_MAX){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6585
-		adj = -ADJ_FREQ_MAX;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6586
+	memset(&tmx, 0, sizeof(tmx));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6587
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6588
+	tmx.modes = MOD_STATUS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6589
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6590
+	tmx.status = getTimexFlags();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6591
+	if(tmx.status == -1) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6592
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6593
+	/* unset all read-only flags */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6594
+	tmx.status &= ~STA_RONLY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6595
+	tmx.status |= flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6596
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6597
+	ret = adjtimex(&tmx);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6598
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6599
+	if (ret < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6600
+		PERROR("Could not set adjtimex flags: %s", strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6601
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6602
+	if(!quiet && ret > 2) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6603
+		switch (ret) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6604
+		case TIME_OOP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6605
+			WARNING("Adjtimex: leap second already in progress\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6606
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6607
+		case TIME_WAIT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6608
+			WARNING("Adjtimex: leap second already occurred\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6609
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6610
+#if !defined(TIME_BAD)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6611
+		case TIME_ERROR:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6612
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6613
+		case TIME_BAD:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6614
+#endif /* TIME_BAD */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6615
+		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6616
+			DBGV("unsetTimexFlags: adjtimex() returned TIME_BAD\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6617
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6618
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6619
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6620
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6621
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6622
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6623
+unsetTimexFlags(int flags, Boolean quiet) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6624
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6625
+	struct timex tmx;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6626
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6627
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6628
+	memset(&tmx, 0, sizeof(tmx));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6629
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6630
+	tmx.modes = MOD_STATUS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6631
+	tmx.status = getTimexFlags();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6632
+	if(tmx.status == -1)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6633
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6634
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6635
+	/* unset all read-only flags */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6636
+	tmx.status &= ~STA_RONLY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6637
+	tmx.status &= ~flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6638
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6639
+	ret = adjtimex(&tmx);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6640
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6641
+	if (ret < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6642
+		PERROR("Could not unset adjtimex flags: %s", strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6643
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6644
+	if(!quiet && ret > 2) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6645
+		switch (ret) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6646
+		case TIME_OOP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6647
+			WARNING("Adjtimex: leap second already in progress\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6648
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6649
+		case TIME_WAIT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6650
+			WARNING("Adjtimex: leap second already occurred\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6651
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6652
+#if !defined(TIME_BAD)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6653
+		case TIME_ERROR:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6654
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6655
+		case TIME_BAD:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6656
+#endif /* TIME_BAD */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6657
+		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6658
+			DBGV("unsetTimexFlags: adjtimex() returned TIME_BAD\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6659
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6660
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6661
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6662
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6663
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6664
+int getTimexFlags(void)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6665
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6666
+	struct timex tmx;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6667
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6668
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6669
+	memset(&tmx, 0, sizeof(tmx));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6670
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6671
+	tmx.modes = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6672
+	ret = adjtimex(&tmx);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6673
+	if (ret < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6674
+		PERROR("Could not read adjtimex flags: %s", strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6675
+		return(-1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6676
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6677
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6678
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6679
-	t.modes = MOD_FREQUENCY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6680
-	t.freq = adj * ((1 << 16) / 1000);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6681
+	return( tmx.status );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6682
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6683
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6684
-	/* do calculation in double precision, instead of Integer32 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6685
-	int t1 = t.freq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6686
-	int t2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6687
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6688
-	float f = (adj + 0.0) * (((1 << 16) + 0.0) / 1000.0);  /* could be float f = adj * 65.536 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6689
-	t2 = t1;  // just to avoid compiler warning
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6690
-	t2 = (int)round(f);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6691
-	t.freq = t2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6692
+Boolean
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6693
+checkTimexFlags(int flags) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6694
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6695
-	DBG2("        adj is %d;  t freq is %d       (float: %f Integer32: %d)\n", adj, t.freq,  f, t1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6696
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6697
-	return !adjtimex(&t);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6698
+    int tflags = getTimexFlags();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6699
+    if (tflags == -1) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6700
+	    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6701
+    return ((tflags & flags) == flags);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6702
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6703
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6704
 #else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6705
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6706
+/* @ioctl_timestamping TODO This won't work - not sure whether we can easily support
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6707
+* apple and ioctl timestamping */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6708
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6709
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6710
 adjTime(Integer32 nanoseconds)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6711
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6712
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/time.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6713
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6714
+++ b/src/dep/time.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6715
@@ -0,0 +1,1208 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6716
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6717
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6718
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6719
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6720
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6721
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6722
+ * Redistribution and use in source and binary forms, with or without
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6723
+ * modification, are permitted provided that the following conditions are
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6724
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6725
+ * 1. Redistributions of source code must retain the above copyright notice,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6726
+ *    this list of conditions and the following disclaimer.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6727
+ * 2. Redistributions in binary form must reproduce the above copyright
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6728
+ *    notice, this list of conditions and the following disclaimer in the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6729
+ *    documentation and/or other materials provided with the distribution.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6730
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6731
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6732
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6733
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6734
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6735
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6736
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6737
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6738
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6739
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6740
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6741
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6742
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6743
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6744
+#include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6745
+#include <stdarg.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6746
+#include <math.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6747
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6748
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6749
+#include <unistd.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6750
+#include <stropts.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6751
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6752
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6753
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6754
+#ifdef linux
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6755
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6756
+#include <asm/types.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6757
+#include <linux/errqueue.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6758
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6759
+/* SO_EE_ORIGIN_TIMESTAMPING is defined in linux/errqueue.h in recent kernels.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6760
+ * Define it for compilation with older kernels.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6761
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6762
+#ifndef SO_EE_ORIGIN_TIMESTAMPING
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6763
+#define SO_EE_ORIGIN_TIMESTAMPING 4
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6764
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6765
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6766
+/* SO_TIMESTAMPING is defined in asm/socket.h in recent kernels.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6767
+ * Define it for compilation with older kernels.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6768
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6769
+#ifndef SO_TIMESTAMPING
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6770
+#define SO_TIMESTAMPING  37
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6771
+#define SCM_TIMESTAMPING SO_TIMESTAMPING
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6772
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6773
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6774
+/* SIOCSHWTSTAMP is defined in linux/sockios.h in recent kernels.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6775
+ * Define it for compilation with older kernels.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6776
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6777
+#ifndef SIOCSHWTSTAMP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6778
+#define SIOCSHWTSTAMP 0x89b0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6779
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6780
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6781
+#endif /*linux*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6782
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6783
+/* SO_TIMESTAMPING gets an integer bit field comprised of these values */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6784
+enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6785
+	SOF_TIMESTAMPING_TX_HARDWARE = (1<<0),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6786
+	SOF_TIMESTAMPING_TX_SOFTWARE = (1<<1),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6787
+	SOF_TIMESTAMPING_RX_HARDWARE = (1<<2),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6788
+	SOF_TIMESTAMPING_RX_SOFTWARE = (1<<3),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6789
+	SOF_TIMESTAMPING_SOFTWARE = (1<<4),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6790
+	SOF_TIMESTAMPING_SYS_HARDWARE = (1<<5),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6791
+	SOF_TIMESTAMPING_RAW_HARDWARE = (1<<6),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6792
+	SOF_TIMESTAMPING_MASK =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6793
+	(SOF_TIMESTAMPING_RAW_HARDWARE - 1) |
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6794
+	SOF_TIMESTAMPING_RAW_HARDWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6795
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6796
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6797
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6798
+#include "sfxge_ioctl.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6799
+#else 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6800
+#include "efx_ioctl.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6801
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6802
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6803
+/** global state for controlling system time when TIME_BOTH is selected */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6804
+static PtpClock timeBothClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6805
+PtpClock *G_timeBothClock = NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6806
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6807
+/** run time optsions for controlling system time when TIME_BOTH is selected */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6808
+static  RunTimeOpts timeBothRtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6809
+RunTimeOpts *G_timeBothRtOpts = NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6810
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6811
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6812
+ * Most recent send time stamp from NIC, 0/0 if none available right now.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6813
+ * Reset by getSendTime().
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6814
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6815
+static TimeInternal lastSendTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6816
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6817
+#ifndef RECV_ARRAY_SIZE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6818
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6819
+ * Must be large enough to buffer all time stamps received from the NIC
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6820
+ * but not yet requested by the protocol processor. Because new information
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6821
+ * can only be added when the protocol asks for old one, this should not
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6822
+ * get very full.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6823
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6824
+# define RECV_ARRAY_SIZE 10
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6825
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6826
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6827
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6828
+ * An array of the latest RECV_ARRAY_SIZE packet receive information.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6829
+ * Once it overflows the oldest ones are overwritten in a round-robin
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6830
+ * fashion.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6831
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6832
+static struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6833
+  TimeInternal recvTimeStamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6834
+  UInteger16 sequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6835
+  ClockIdentity clockId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6836
+} lastRecvTimes[RECV_ARRAY_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6837
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6838
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6839
+ * Oldest valid and next free entry in lastRecvTimes.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6840
+ * Valid ones are [oldest, free[ if oldest <= free,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6841
+ * otherwise [oldest, RECV_ARRAY_SIZE[ and [0, free[.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6842
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6843
+static int oldestRecv, nextFreeRecv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6844
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6845
+int ptp_ioctl(NetPath *netPath, void *drv_ioctl)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6846
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6847
+#ifndef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6848
+	netPath.eventSockIFR.ifr_data = drv_ioctl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6849
+	return(ioctl(netPath->eventSock, SIOCEFX, &netPath->eventSockIFR));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6850
+#else	/* __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6851
+	struct strioctl ioc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6852
+	struct sfxge_sock_ioctl *req = (struct sfxge_sock_ioctl *)drv_ioctl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6853
+	int len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6854
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6855
+	switch(req->cmd) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6856
+		case SFXGE_TS_INIT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6857
+			len = sizeof (struct sfxge_hwtstamp_config);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6858
+			DBGV("SFXGE_TS_INIT issued\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6859
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6860
+		case SFXGE_TS_READ:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6861
+			len = sizeof (struct sfxge_ts_read);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6862
+			DBGV("SFXGE_TS_READ issued\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6863
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6864
+		case SFXGE_TS_ADJTIME:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6865
+			len = sizeof (struct sfxge_ts_adjtime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6866
+			DBGV("SFXGE_TS_ADJTIME issued\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6867
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6868
+		case SFXGE_TS_SETTIME:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6869
+			len = sizeof (struct sfxge_ts_settime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6870
+			DBGV("SFXGE_TS_SETTIME issued\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6871
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6872
+		case SFXGE_TS_SYNC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6873
+			len = sizeof (struct sfxge_ts_sync);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6874
+			DBGV("SFXGE_TS_SYNC issued\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6875
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6876
+		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6877
+			printf("Unknown ioctl number %x ... exiting\n", req->cmd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6878
+			exit (1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6879
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6880
+	(void) memset(&ioc, 0, sizeof (ioc));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6881
+	ioc.ic_cmd = req->cmd;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6882
+	ioc.ic_timout = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6883
+	ioc.ic_len = len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6884
+	ioc.ic_dp = (char *)&req->u;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6885
+	return (ioctl(netPath->devFd, I_STR, (char *)&ioc));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6886
+#endif	/* __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6887
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6888
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6889
+ * if TIME_BOTH: measure NIC<->system time offsets and adapt system time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6890
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6891
+ * This function is called whenever init.c gets control; to prevent to
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6892
+ * frequent changes it ignores invocations less than one second away from
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6893
+ * the previous one.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6894
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6895
+void syncSystemWithNIC(RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6896
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6897
+  TimeInternal delay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6898
+  static TimeInternal zero;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6899
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6900
+  struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6901
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6902
+  struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6903
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6904
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6905
+  if(rtOpts->time_mode != TIME_BOTH)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6906
+    return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6907
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6908
+  /* Limit the number of times per second we synchronise with the NIC */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6909
+  static TimeInternal lastsync;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6910
+  TimeInternal now, t;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6911
+  LongDouble offset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6912
+  timerNow(&now);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6913
+  subTime(&t, &now, &lastsync);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6914
+  offset = (LongDouble)t.seconds + ((LongDouble)t.nanoseconds / 1000000000);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6915
+  if ((offset > 0) && (offset < rtOpts->system_time_update_interval))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6916
+    return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6917
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6918
+  lastsync = now;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6919
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6920
+  memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6921
+#if  defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6922
+  req.cmd = SFXGE_TS_SYNC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6923
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6924
+  req.cmd = EFX_TS_SYNC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6925
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6926
+  if (ptp_ioctl(&ptpClock->netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6927
+    ptpClock->statistics.ts_sync_failures++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6928
+    ERROR("failed to correlate SFC NIC and system clock %d times (if %s, error %s)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6929
+          ptpClock->statistics.ts_sync_failures,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6930
+          ptpClock->netPath.eventSockIFR.lifr_name, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6931
+    return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6932
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6933
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6934
+  /* For master modes, set the name according to the port state */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6935
+  switch (rtOpts->master_slave_mode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6936
+    case PTP_MODE_MASTER_WITH_NTP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6937
+      if (ptpClock->portState == PTP_MASTER) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6938
+        ptpClock->name = "[nic->slave]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6939
+      } else if (ptpClock->portState == PTP_PASSIVE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6940
+        ptpClock->name = "[master||nic]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6941
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6942
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6943
+      
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6944
+    case PTP_MODE_MASTER_NO_NTP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6945
+      if (ptpClock->portState == PTP_MASTER) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6946
+        ptpClock->name = "[nic->slave]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6947
+      } else if (ptpClock->portState == PTP_SLAVE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6948
+        ptpClock->name = "[master->nic]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6949
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6950
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6951
+      
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6952
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6953
+      /* Do nothing */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6954
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6955
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6956
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6957
+  /* Update the timeBothClock with leap seconds in progress from main servo 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6958
+   * to make sure we don't try to update the system clock during the leap
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6959
+   * second.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6960
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6961
+  timeBothClock.leapSecondInProgress = ptpClock->leapSecondInProgress;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6962
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6963
+  // TODO Possibly the delay req time needs to be inverted or doubled
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6964
+  // We don't really support a measurement of the one way delay at present.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6965
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6966
+  DBGV("sync value %lld.%09d\n", req.u.ts_sync.ts.tv_sec, req.u.ts_sync.ts.tv_nsec);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6967
+  delay.seconds = req.u.ts_sync.ts.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6968
+  delay.nanoseconds = req.u.ts_sync.ts.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6969
+  DBGV("system to NIC delay %ld.%09d\n", delay.seconds, delay.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6970
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6971
+  timeBothClock.delay_req_receive_time = delay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6972
+  timeBothClock.delay_req_send_time = zero;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6973
+  /* Note- we don't use the correction factor- zero */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6974
+  updateDelay(&timeBothClock.owd_filt, &timeBothRtOpts, &timeBothClock, &zero);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6975
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6976
+  /* Note that the NIC to system delay and system to NIC delay are the same */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6977
+  DBGV("NIC to system delay %ld.%09d\n", delay.seconds, delay.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6978
+  /* Note that we don't use the correction factor - zero */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6979
+  updateOffset(&delay, &zero, &timeBothClock.ofm_filt, &timeBothRtOpts, &timeBothClock, &zero);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6980
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6981
+  updateClock(&timeBothRtOpts, &timeBothClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6982
+  DBGV("system time updated\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6983
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6984
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6985
+static Boolean selectNICTimeMode(TimeMode timeMode, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6986
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6987
+  NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6988
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6989
+  DBGV("time stamp rx/tx packets\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6990
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6991
+#ifdef linux
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6992
+  /* Linux SW mode is an anomaly and we treat it differently to the other modes */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6993
+  if (timeMode == TIME_SYSTEM_LINUX_SW) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6994
+    /* same as before, but without requiring support by the NIC */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6995
+    int so_timestamping_flags = SOF_TIMESTAMPING_TX_SOFTWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6996
+                              | SOF_TIMESTAMPING_RX_SOFTWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6997
+                              | SOF_TIMESTAMPING_SOFTWARE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6998
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6999
+    if (setsockopt(netPath->eventSock, SOL_SOCKET, SO_TIMESTAMPING,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7000
+                   &so_timestamping_flags, sizeof(so_timestamping_flags)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7001
+      ERROR("SO_TIMESTAMPING: setsockopt error: %s", strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7002
+      return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7003
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7004
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7005
+    NOTIFY("SO_TIMESTAMPING (software) enabled\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7006
+    ptpClock->tsMethod = TS_METHOD_SO_TIMESTAMPING;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7007
+    return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7008
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7009
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7010
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7011
+  /* For the modes linux_hw, nic and both, try to enable SO_TIMESTAMPING. If
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7012
+   * that fails, attempt IOCTL based timestamping. Otherwise, fail.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7013
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7014
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7015
+#ifndef __sun /* Do not attempt to compile for the time being if on __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7016
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7017
+  /* Attempt SO_TIMSTAMPING */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7018
+  NOTIFY("trying SO_TIMESTAMPING...\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7019
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7020
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7021
+  struct hwtstamp_config hwconfig;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7022
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7023
+    int so_timestamping_flags = SOF_TIMESTAMPING_TX_HARDWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7024
+                              | SOF_TIMESTAMPING_RX_HARDWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7025
+                              | SOF_TIMESTAMPING_SYS_HARDWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7026
+                              | SOF_TIMESTAMPING_RAW_HARDWARE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7027
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7028
+    netPath->eventSockIFR.ifr_data = (void *)&hwconfig;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7029
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7030
+    memset(&hwconfig, 0, sizeof(&hwconfig));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7031
+    hwconfig.tx_type = HWTSTAMP_TX_ON;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7032
+    hwconfig.rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7033
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7034
+    if (ioctl(netPath->eventSock, SIOCSHWTSTAMP, &netPath->eventSockIFR) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7035
+      if (errno == ERANGE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7036
+        /* hardware time stamping not supported */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7037
+        NOTIFY("SO_TIMESTAMPING: SIOCSHWTSTAMP mode of operation not supported\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7038
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7039
+        NOTIFY("SO_TIMESTAMPING: SIOCSHWTSTAMP %s\n", strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7040
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7041
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7042
+      /* Now enable the SO_TIMESTAMPING option on the event socket */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7043
+      if (setsockopt(netPath->eventSock, SOL_SOCKET, SO_TIMESTAMPING,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7044
+                     &so_timestamping_flags, sizeof(so_timestamping_flags)) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7045
+        /* Enabling SO_TIMESTAMPING on the socket shouldn't fail if the driver
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7046
+         * operation succeeded.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7047
+         */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7048
+        NOTIFY("SO_TIMESTAMPING: setsockopt error: %s", strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7049
+        /* TODO should we carry on? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7050
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7051
+        NOTIFY("SO_TIMESTAMPING enabled\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7052
+        ptpClock->tsMethod = TS_METHOD_SO_TIMESTAMPING;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7053
+        return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7054
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7055
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7056
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7057
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7058
+#endif /* ifndef __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7059
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7060
+  /* Attempt IOCTL timestamping */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7061
+  NOTIFY("trying IOCTL timestamping...\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7062
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7063
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7064
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7065
+  struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7066
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7067
+  struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7068
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7069
+    req.u.ts_init.flags = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7070
+    req.u.ts_init.tx_type = HWTSTAMP_TX_ON;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7071
+    req.u.ts_init.rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7072
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7073
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7074
+    req.cmd = SFXGE_TS_INIT;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7075
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7076
+    req.cmd = EFX_TS_INIT;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7077
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7078
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7079
+    if(ptp_ioctl(netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7080
+      NOTIFY("could not activate SFC hardware rx/tx time stamping on %s, %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7081
+              netPath->eventSockIFR.lifr_name, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7082
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7083
+      NOTIFY("SFC IOCTL timestamping enabled\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7084
+      ptpClock->tsMethod = TS_METHOD_DRIVER_IOCTL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7085
+      return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7086
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7087
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7088
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7089
+  ERROR("failed to enable IOCTL hardware timestamping!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7090
+  return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7091
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7092
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7093
+Boolean initTime(RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7094
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7095
+  Boolean rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7096
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7097
+  switch(rtOpts->time_mode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7098
+  case TIME_SYSTEM:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7099
+    ptpClock->tsMethod = TS_METHOD_SYSTEM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7100
+    return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7101
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7102
+  case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7103
+    /* Prepare clock servo for controlling system time.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7104
+     * TODO We can adjust the secondary servo rate now so this is no longer really true...
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7105
+     * "For the system->nic secondary servo, we reset the S, AP and AI parameters
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7106
+     * because the servo rate is fixed at 1 second, where as the filter parameters
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7107
+     * for the primary may by adjusted to compensate for message frequency and
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7108
+     * accuracy of measurements."
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7109
+     * Generally if noAdjust is set on the primary, set it on the secondary. The exception is
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7110
+     * when a master with NTP. In this case, the secondary is used to sync the NIC clock from
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7111
+     * the system clock so enable adjustment.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7112
+     * The four scenarios are as follows:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7113
+     *    Master + NTP:     system --> nic --> slave        (-G option)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7114
+     *    Slave + NTP:      system --> nic  X  master       (-G option)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7115
+     *    Master no NTP:    system <-- nic --> slave        (-W option)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7116
+     *    Slave no NTP:     system <-- nic <-- master       (-g option)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7117
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7118
+    timeBothClock = *ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7119
+    timeBothRtOpts = *rtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7120
+    timeBothRtOpts.s = DEFAULT_DELAY_S;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7121
+    timeBothRtOpts.ap = DEFAULT_AP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7122
+    timeBothRtOpts.ai = DEFAULT_AI;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7123
+    timeBothClock.portState = PTP_SLAVE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7124
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7125
+    switch (rtOpts->master_slave_mode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7126
+      case PTP_MODE_MASTER_WITH_NTP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7127
+        ptpClock->name = "[nic->slave]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7128
+        timeBothClock.name = "[system->nic]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7129
+        timeBothRtOpts.time_mode = TIME_NIC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7130
+        timeBothClock.nic_instead_of_system = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7131
+        timeBothRtOpts.noAdjust = DEFAULT_NO_ADJUST_CLOCK;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7132
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7133
+        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7134
+      case PTP_MODE_MASTER_NO_NTP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7135
+        ptpClock->name = "[nic->slave]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7136
+        timeBothClock.name = "[nic->system]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7137
+        timeBothRtOpts.time_mode = TIME_SYSTEM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7138
+        timeBothClock.nic_instead_of_system = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7139
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7140
+        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7141
+      case PTP_MODE_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7142
+        ptpClock->name = "[master->nic]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7143
+        timeBothClock.name = "[nic->system]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7144
+        timeBothRtOpts.time_mode = TIME_SYSTEM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7145
+        timeBothClock.nic_instead_of_system = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7146
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7147
+        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7148
+      default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7149
+        ERROR("Invalid value in switch %d\n", rtOpts->master_slave_mode);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7150
+        return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7151
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7152
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7153
+    initClock(&timeBothRtOpts, &timeBothClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7154
+    G_timeBothClock = &timeBothClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7155
+    G_timeBothRtOpts = &timeBothRtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7156
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7157
+    rc = selectNICTimeMode(rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7158
+    if (rc && ((rtOpts->master_slave_mode != PTP_MODE_SLAVE) || rtOpts->noResetClock)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7159
+      /* If we are in one or the master modes, set the NIC time once using the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7160
+       * current system time. After this, the NIC time will free-run but at least
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7161
+       * we won't be shortly after the epoch. Note that we use timerNow rather
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7162
+       * than getTime to get the system time because getTime will return the NIC
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7163
+       * time in this mode.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7164
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7165
+      TimeInternal time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7166
+      timerNow(&time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7167
+      setTime(&time, rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7168
+      NOTIFY("NIC time set to system time: %d.%d\n", time.seconds, time.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7169
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7170
+    return rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7171
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7172
+  case TIME_NIC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7173
+    rc = selectNICTimeMode(rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7174
+    if (rc && ((rtOpts->master_slave_mode != PTP_MODE_SLAVE) || rtOpts->noResetClock)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7175
+      /* If we are in one or the master modes, set the NIC time once using the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7176
+       * current system time. After this, the NIC time will free-run but at least
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7177
+       * we won't be shortly after the epoch. Note that we use timerNow rather
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7178
+       * than getTime to get the system time because getTime will return the NIC
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7179
+       * time in this mode.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7180
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7181
+      TimeInternal time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7182
+      timerNow(&time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7183
+      setTime(&time, rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7184
+      NOTIFY("NIC time set to system time: %d.%d\n", time.seconds, time.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7185
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7186
+    return rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7187
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7188
+  case TIME_SYSTEM_LINUX_HW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7189
+  case TIME_SYSTEM_LINUX_SW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7190
+    return selectNICTimeMode(rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7191
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7192
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7193
+    ERROR("unsupported selection of time source\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7194
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7195
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7196
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7197
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7198
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7199
+void shutdownTime(PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7200
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7201
+  NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7202
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7203
+  switch (ptpClock->tsMethod) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7204
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7205
+#ifndef __sun  /* Do not compile for the time being if __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7206
+    case TS_METHOD_SO_TIMESTAMPING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7207
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7208
+      int so_timestamping_flags = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7209
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7210
+      struct hwtstamp_config hwconfig;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7211
+      netPath->eventSockIFR.ifr_data = (void *)&hwconfig;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7212
+      memset(&hwconfig, 0, sizeof(&hwconfig));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7213
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7214
+      hwconfig.tx_type = HWTSTAMP_TX_OFF;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7215
+      hwconfig.rx_filter = HWTSTAMP_FILTER_NONE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7216
+      (void)ioctl(netPath->eventSock, SIOCSHWTSTAMP, &netPath->eventSockIFR);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7217
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7218
+      (void)setsockopt(netPath->eventSock, SOL_SOCKET, SO_TIMESTAMPING,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7219
+                       &so_timestamping_flags, sizeof(so_timestamping_flags));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7220
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7221
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7222
+#endif /* ifndef __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7223
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7224
+    case TS_METHOD_DRIVER_IOCTL:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7225
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7226
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7227
+      struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7228
+      req.cmd = SFXGE_TS_INIT;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7229
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7230
+      struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7231
+      req.cmd = EFX_TS_INIT;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7232
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7233
+      req.u.ts_init.flags = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7234
+      req.u.ts_init.tx_type = HWTSTAMP_TX_OFF;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7235
+      req.u.ts_init.rx_filter = HWTSTAMP_FILTER_NONE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7236
+      (void)ptp_ioctl(netPath, &req);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7237
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7238
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7239
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7240
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7241
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7242
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7243
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7244
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7245
+void getTime(TimeInternal *time, TimeMode timeMode, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7246
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7247
+  switch(timeMode)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7248
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7249
+  case TIME_SYSTEM_LINUX_HW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7250
+  case TIME_SYSTEM_LINUX_SW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7251
+  case TIME_SYSTEM: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7252
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7253
+#if defined(__APPLE__) /* TODO Does OSX really not support clock_gettime()? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7254
+    struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7255
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7256
+    gettimeofday(&tv, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7257
+    time->seconds = tv.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7258
+    time->nanoseconds = tv.tv_usec*1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7259
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7260
+    struct timespec tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7261
+    int err = clock_gettime(CLOCK_REALTIME, &tv);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7262
+    if (err != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7263
+      ERROR("error getting time %d\n", err);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7264
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7265
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7266
+    time->seconds = tv.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7267
+    time->nanoseconds = tv.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7268
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7269
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7270
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7271
+  case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7272
+  case TIME_NIC: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7273
+    NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7274
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7275
+    struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7276
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7277
+    struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7278
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7279
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7280
+    memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7281
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7282
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7283
+    req.cmd = SFXGE_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7284
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7285
+    req.cmd = EFX_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7286
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7287
+    req.u.ts_settime.iswrite = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7288
+    if (ptp_ioctl(netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7289
+      ERROR("could not read SFC hardware time on %s: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7290
+            netPath->eventSockIFR.lifr_name, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7291
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7292
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7293
+    time->seconds = req.u.ts_settime.ts.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7294
+    time->nanoseconds = req.u.ts_settime.ts.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7295
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7296
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7297
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7298
+    ERROR("unsupported selection of time source\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7299
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7300
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7301
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7302
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7303
+void setTime(TimeInternal *time, TimeMode timeMode, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7304
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7305
+  switch(timeMode)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7306
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7307
+  case TIME_SYSTEM_LINUX_HW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7308
+  case TIME_SYSTEM_LINUX_SW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7309
+  case TIME_SYSTEM: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7310
+    WARNING("going to step the system clock to %ds %dns\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7311
+            time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7312
+#if defined(__APPLE__) /* TODO Does OSX really not support clock_settime()? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7313
+    struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7314
+    tv.tv_sec = time->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7315
+    tv.tv_usec = time->nanoseconds/1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7316
+    settimeofday(&tv, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7317
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7318
+    struct timespec tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7319
+    tv.tv_sec = time->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7320
+    tv.tv_nsec = time->nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7321
+    int err = clock_settime(CLOCK_REALTIME, &tv);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7322
+    if (err != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7323
+      ERROR("error setting time %d\n", err);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7324
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7325
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7326
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7327
+    WARNING("finished stepping the system clock to %ds %dns\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7328
+            time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7329
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7330
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7331
+  case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7332
+  case TIME_NIC: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7333
+    NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7334
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7335
+    struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7336
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7337
+    struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7338
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7339
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7340
+    TimeInternal currentTime, offset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7341
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7342
+    memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7343
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7344
+    NOTIFY("resetting NIC clock to %ds %dns\n", time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7345
+    getTime(&currentTime, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7346
+    subTime(&offset, time, &currentTime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7347
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7348
+    req.u.ts_settime.iswrite = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7349
+    req.u.ts_settime.ts.tv_sec = offset.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7350
+    req.u.ts_settime.ts.tv_nsec = offset.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7351
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7352
+    req.cmd = SFXGE_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7353
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7354
+    req.cmd = EFX_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7355
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7356
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7357
+    NOTIFY("adding NIC offset %ld.%09d (%ld/%p)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7358
+           req.u.ts_settime.ts.tv_sec, req.u.ts_settime.ts.tv_nsec,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7359
+           sizeof(req), &req);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7360
+    if (ptp_ioctl(netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7361
+      ERROR("could not set SFC hardware time on %s: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7362
+            netPath->eventSockIFR.lifr_name, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7363
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7364
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7365
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7366
+      DBGV("new NIC time %ld.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7367
+           req.u.ts_settime.ts.tv_sec,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7368
+           req.u.ts_settime.ts.tv_nsec);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7369
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7370
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7371
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7372
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7373
+    ERROR("unsupported selection of time source\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7374
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7375
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7376
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7377
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7378
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7379
+void adjTime(LongDouble adj, TimeMode timeMode, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7380
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7381
+  switch(timeMode)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7382
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7383
+  case TIME_SYSTEM_LINUX_HW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7384
+  case TIME_SYSTEM_LINUX_SW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7385
+  case TIME_SYSTEM: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7386
+    struct timex t;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7387
+    static Boolean maxAdjValid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7388
+    static LongDouble maxAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7389
+    static LongDouble minTick, maxTick;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7390
+    static LongDouble userHZ;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7391
+    static LongDouble tickRes; /* USER_HZ * 1000 [ppb] */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7392
+    LongDouble tickAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7393
+    LongDouble freqAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7394
+    long maxError;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7395
+    int res;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7396
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7397
+    if (!maxAdjValid) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7398
+        userHZ = (LongDouble)sysconf(_SC_CLK_TCK);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7399
+        t.modes = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7400
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7401
+#warning Solaris - struct timex: t.constant is arbitrarily assigned to 15
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7402
+    t.constant = 15; /* need to be >0 but <30 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7403
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7404
+        adjtimex(&t);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7405
+        maxAdj = (LongDouble)t.tolerance / (((1<<16)+0.0)/1000.0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7406
+        tickRes = userHZ * 1000.0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7407
+        /* limits from the adjtimex command man page; could be determined via binary search */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7408
+        minTick = (900000.0 - 1000000.0) / userHZ;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7409
+        maxTick = (1100000.0 - 1000000.0) / userHZ;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7410
+        maxAdjValid = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7411
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7412
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7413
+    /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7414
+     * The Linux man page for the adjtimex() system call does not
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7415
+     * describe limits for frequency. The more recent man page for
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7416
+     * the adjtimex command on RH5 does and says that
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7417
+     * -tolerance <= frequency <= tolerance
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7418
+     * which was confirmed by trying out values just outside that interval.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7419
+     *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7420
+     * Note that this contradicts the comments for struct timex which say
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7421
+     * that freq and tolerance have different units (scaled ppm vs ppm).
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7422
+     *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7423
+     * We follow the actual implementation on Linux 2.6.22 and do the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7424
+     * range check after scaling.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7425
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7426
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7427
+     /* LDE 17082011 Set max error to stop adjtimex reported bad time */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7428
+     t.modes = MOD_FREQUENCY|MOD_CLKB|MOD_MAXERROR;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7429
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7430
+    /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7431
+     * 1 t.tick = 1 e-6 s * USER_HZ 1/s = 1 USER_HZ * 1000 ppb
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7432
+     *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7433
+     * Large values of adj can be turned into t.tick adjustments:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7434
+     * tickAdj t.tick = adj ppb / ( USER_HZ * 1000 ppb )
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7435
+     *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7436
+     * Round this so that the error is as small is possible,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7437
+     * because we need to fit that into t.freq.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7438
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7439
+    freqAdj = adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7440
+    tickAdj = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7441
+    if(freqAdj > maxAdj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7442
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7443
+      tickAdj = round((adj - maxAdj) / tickRes);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7444
+      if(tickAdj > maxTick)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7445
+        tickAdj = maxTick;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7446
+      freqAdj = adj - tickAdj * tickRes;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7447
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7448
+    else if(freqAdj < -maxAdj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7449
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7450
+      tickAdj = -round((-adj - maxAdj) / tickRes);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7451
+      if(tickAdj < minTick)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7452
+        tickAdj = minTick;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7453
+      freqAdj = adj - tickAdj * tickRes;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7454
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7455
+    if(freqAdj > maxAdj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7456
+      freqAdj = maxAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7457
+    else if(freqAdj < -maxAdj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7458
+      freqAdj = -maxAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7459
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7460
+    t.freq = (long)round(freqAdj * (((1 << 16) + 0.0) / 1000.0));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7461
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7462
+#warning Solaris - struct timex: no field named tick
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7463
+#warning Solaris - struct timex: t.constant is arbitrarily assigned to 15
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7464
+    t.constant = 15; /* need to be >0 but <30 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7465
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7466
+    t.tick = (long)round(tickAdj + (1000000.0 / userHZ));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7467
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7468
+    ptpClock->frequency_adjustment = tickAdj * tickRes + freqAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7469
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7470
+    /* LDE 17082011 Set the max error to the current offset from master */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7471
+    /* Saturate the max error at 2000 seconds. This is close the max value that */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7472
+    /* fit in the max error field. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7473
+    if (ptpClock->offsetFromMaster.seconds > 2000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7474
+      maxError = 0xffffffff;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7475
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7476
+      maxError = ptpClock->offsetFromMaster.seconds * 1000000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7477
+      if (ptpClock->offsetFromMaster.nanoseconds > 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7478
+        maxError += ptpClock->offsetFromMaster.nanoseconds/1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7479
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7480
+        maxError -= ptpClock->offsetFromMaster.nanoseconds/1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7481
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7482
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7483
+    t.maxerror = maxError;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7484
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7485
+#ifndef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7486
+    DBG("requested adj %Lf ppb => adjust system frequency by %ld scaled ppm (%Lf ppb) + %ld us/tick "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7487
+        "(%Lf ppb) = adj %Lf ppb (freq limit %Lf/%Lf ppm, tick limit %Lf/%Lf us*USER_HZ)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7488
+        adj,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7489
+        t.freq, freqAdj,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7490
+        (long)(t.tick - 1000000.0 / userHZ), tickAdj * tickRes,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7491
+        ptpClock->frequency_adjustment,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7492
+        -maxAdj, maxAdj,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7493
+        minTick, maxTick);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7494
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7495
+    res = adjtimex(&t);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7496
+    switch (res) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7497
+    case -1:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7498
+        ERROR("adjtimex(freq = %d) failed: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7499
+              t.freq, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7500
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7501
+    case TIME_OK:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7502
+        DBG("  -> TIME_OK\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7503
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7504
+    case TIME_INS:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7505
+        ERROR("adjtimex -> insert leap second?!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7506
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7507
+    case TIME_DEL:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7508
+        ERROR("adjtimex -> delete leap second?!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7509
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7510
+    case TIME_OOP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7511
+        ERROR("adjtimex -> leap second in progress?!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7512
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7513
+    case TIME_WAIT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7514
+        ERROR("adjtimex -> leap second has occurred?!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7515
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7516
+    case TIME_BAD:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7517
+        ERROR("adjtimex -> time bad\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7518
+        /* Clear the unsynchronised flag - we are synchronised */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7519
+        t.modes = MOD_STATUS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7520
+        t.status &= ~STA_UNSYNC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7521
+        (void)adjtimex(&t);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7522
+        INFO("clearing system time unsynchronised flag\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7523
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7524
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7525
+        ERROR("adjtimex -> unknown result %d\n", res);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7526
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7527
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7528
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7529
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7530
+  case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7531
+  case TIME_NIC: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7532
+    /* adjust NIC frequency */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7533
+    NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7534
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7535
+    struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7536
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7537
+    struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7538
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7539
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7540
+    memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7541
+    if (ptpClock->nic_instead_of_system) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7542
+      req.u.ts_adjtime.adjustment = (long long)round(-adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7543
+      ptpClock->frequency_adjustment = -adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7544
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7545
+      req.u.ts_adjtime.adjustment = (long long)round(adj);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7546
+      ptpClock->frequency_adjustment = adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7547
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7548
+    req.u.ts_adjtime.iswrite = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7549
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7550
+    req.cmd = SFXGE_TS_ADJTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7551
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7552
+    req.cmd = EFX_TS_ADJTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7553
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7554
+    DBGV("adjust NIC frequency by %lld (%Lf) ppb\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7555
+          req.u.ts_adjtime.adjustment, ptpClock->frequency_adjustment);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7556
+    if (ptp_ioctl(netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7557
+      ERROR("could not modify SFC hardware frequency on %s: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7558
+            netPath->eventSockIFR.lifr_name, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7559
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7560
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7561
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7562
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7563
+    ERROR("unsupported selection of time source\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7564
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7565
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7566
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7567
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7568
+void adjTimeOffset(TimeInternal *offset, TimeMode timeMode, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7569
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7570
+  switch(timeMode)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7571
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7572
+    case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7573
+    case TIME_NIC: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7574
+      NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7575
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7576
+      struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7577
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7578
+      struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7579
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7580
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7581
+      memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7582
+      req.u.ts_settime.iswrite = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7583
+      req.u.ts_settime.ts.tv_sec = offset->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7584
+      req.u.ts_settime.ts.tv_nsec = offset->nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7585
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7586
+      req.cmd = SFXGE_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7587
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7588
+      req.cmd = EFX_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7589
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7590
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7591
+      /* invert the sign: if offset is positive, we need to substract it and vice versa;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7592
+       * when in nic_instead_of_system the logic is already inverted
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7593
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7594
+      // TODO check that time is normalised at this point / use arith fns for all time ops
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7595
+      if (!ptpClock->nic_instead_of_system) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7596
+        req.u.ts_settime.ts.tv_sec *= -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7597
+        req.u.ts_settime.ts.tv_nsec *= -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7598
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7599
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7600
+      DBGV("adjust NIC time by offset %ld.%09d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7601
+          (UInteger32)req.u.ts_settime.ts.tv_sec, req.u.ts_settime.ts.tv_nsec);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7602
+      if (ptp_ioctl(netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7603
+        ERROR("could not modify SFC hardware time on %s: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7604
+              ptpClock->netPath.eventSockIFR.lifr_name,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7605
+              strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7606
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7607
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7608
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7609
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7610
+    default: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7611
+      TimeInternal timeTmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7612
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7613
+      DBG2("Adjusting system time by offset %ld.%09d\n", offset->seconds, offset->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7614
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7615
+      getTime(&timeTmp, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7616
+      DBGV("**** Time was %ld.%09d\n", timeTmp.seconds, timeTmp.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7617
+      subTime(&timeTmp, &timeTmp, offset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7618
+      /* We don't allow the time to be set to before 1/1/1971 because this almost */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7619
+      /* certainly means something has gone very wrong */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7620
+      if (timeTmp.seconds < UTC_TIME_VALID_MINIMUM) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7621
+        DBG("**** Refusing to set system time to %ld.%09d\n", timeTmp.seconds, timeTmp.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7622
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7623
+        setTime(&timeTmp, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7624
+        DBG("System time adjusted to %ld.%09d\n", timeTmp.seconds, timeTmp.nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7625
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7626
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7627
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7628
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7629
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7630
+void adjTimeInsertLeapSecond(TimeMode timeMode, RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7631
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7632
+	if (rtOpts->noResetClock || rtOpts->resetClockStartupOnly)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7633
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7634
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7635
+	switch(timeMode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7636
+	case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7637
+	case TIME_NIC: 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7638
+	case TIME_SYSTEM_LINUX_HW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7639
+	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7640
+		NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7641
+		LongDouble adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7642
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7643
+		struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7644
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7645
+		struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7646
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7647
+		memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7648
+#if defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7649
+		req.cmd = SFXGE_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7650
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7651
+		req.cmd = EFX_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7652
+#endif 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7653
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7654
+		req.u.ts_settime.iswrite = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7655
+		req.u.ts_settime.ts.tv_sec = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7656
+		req.u.ts_settime.ts.tv_nsec = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7657
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7658
+		DBGV("insert leap second in NIC time\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7659
+		if (ptp_ioctl(netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7660
+			ERROR("could not modify SFC hardware time on %s: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7661
+			      ptpClock->netPath.eventSockIFR.lifr_name,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7662
+			      strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7663
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7664
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7665
+		/* Applying an offset resets the frequency adjustment to 0 (doh!)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7666
+		 * If we are running in time mode both or nic, we need to set the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7667
+		 * frequency adjustment back to the correct value immediately!
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7668
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7669
+		if ((timeMode == TIME_BOTH) || (timeMode == TIME_NIC)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7670
+			adj = (LongDouble)ptpClock->offsetFromMaster.nanoseconds / rtOpts->ap
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7671
+			    + ptpClock->observed_drift;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7672
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7673
+			adjTime(-adj, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7674
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7675
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7676
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7677
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7678
+	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7679
+		INFO("No need to insert leap second for mode - handled by kernel\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7680
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7681
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7682
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7683
+void adjTimeDeleteLeapSecond(TimeMode timeMode, RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7684
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7685
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7686
+	if (rtOpts->noResetClock || rtOpts->resetClockStartupOnly)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7687
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7688
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7689
+	switch(timeMode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7690
+	case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7691
+	case TIME_NIC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7692
+	case TIME_SYSTEM_LINUX_HW:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7693
+	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7694
+		NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7695
+		LongDouble adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7696
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7697
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7698
+		struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7699
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7700
+		memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7701
+		req.cmd = SFXGE_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7702
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7703
+		struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7704
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7705
+		memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7706
+		req.cmd = EFX_TS_SETTIME;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7707
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7708
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7709
+		req.u.ts_settime.iswrite = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7710
+		req.u.ts_settime.ts.tv_sec = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7711
+		req.u.ts_settime.ts.tv_nsec = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7712
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7713
+		DBGV("delete leap second from NIC time\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7714
+		if (ptp_ioctl(netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7715
+			ERROR("could not modify SFC hardware time on %s: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7716
+			      ptpClock->netPath.eventSockIFR.lifr_name,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7717
+			      strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7718
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7719
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7720
+		/* Applying an offset resets the frequency adjustment to 0 (doh!)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7721
+		 * If we are running in time mode both or nic, we need to set the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7722
+		 * frequency adjustment back to the correct value immediately!
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7723
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7724
+		if ((timeMode == TIME_BOTH) || (timeMode == TIME_NIC)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7725
+			adj = (LongDouble)ptpClock->offsetFromMaster.nanoseconds / rtOpts->ap
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7726
+			    + ptpClock->observed_drift;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7727
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7728
+			adjTime(-adj, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7729
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7730
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7731
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7732
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7733
+	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7734
+		INFO("No need to insert leap second for mode - handled by kernel\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7735
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7736
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7737
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7738
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7739
+static void getTimeStamps(TimeMode timeMode, NetPath *netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7740
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7741
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7742
+  struct sfxge_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7743
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7744
+  struct efx_sock_ioctl req;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7745
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7746
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7747
+  Boolean rawTime = (timeMode == TIME_BOTH) || (timeMode == TIME_NIC);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7748
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7749
+  /* Repeatedly call the IOCTL until we have all the timestamps */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7750
+  do {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7751
+    memset(&req, 0, sizeof(req));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7752
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7753
+    req.cmd = SFXGE_TS_READ;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7754
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7755
+    req.cmd = EFX_TS_READ;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7756
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7757
+    if(ptp_ioctl(netPath, &req) < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7758
+      ERROR("could not read SFC hardware time stamps on %s: %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7759
+            netPath->eventSockIFR.lifr_name, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7760
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7761
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7762
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7763
+    DBGV("rx %s, tx %s\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7764
+         req.u.ts_read.rx_valid ? "valid" : "invalid",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7765
+         req.u.ts_read.tx_valid ? "valid" : "invalid");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7766
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7767
+    if(req.u.ts_read.rx_valid)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7768
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7769
+      int newIndex;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7770
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7771
+      if(nextFreeRecv == RECV_ARRAY_SIZE)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7772
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7773
+        newIndex = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7774
+        nextFreeRecv = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7775
+        oldestRecv = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7776
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7777
+      else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7778
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7779
+        newIndex = nextFreeRecv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7780
+        nextFreeRecv++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7781
+        if(oldestRecv && nextFreeRecv == oldestRecv)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7782
+          ++oldestRecv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7783
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7784
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7785
+      if(oldestRecv >= RECV_ARRAY_SIZE)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7786
+        oldestRecv = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7787
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7788
+      DBGV("new entry %d, oldest %d, next free %d\n", newIndex, oldestRecv, nextFreeRecv);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7789
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7790
+      if (rawTime) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7791
+        lastRecvTimes[newIndex].recvTimeStamp.seconds = req.u.ts_read.rx_ts_hw.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7792
+        lastRecvTimes[newIndex].recvTimeStamp.nanoseconds = req.u.ts_read.rx_ts_hw.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7793
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7794
+        lastRecvTimes[newIndex].recvTimeStamp.seconds = req.u.ts_read.rx_ts.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7795
+        lastRecvTimes[newIndex].recvTimeStamp.nanoseconds = req.u.ts_read.rx_ts.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7796
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7797
+      lastRecvTimes[newIndex].sequenceId = ((uint16_t)req.u.ts_read.seqid[0] << 8)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7798
+                                         | (uint16_t)req.u.ts_read.seqid[1];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7799
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7800
+      /* Section 18.3.7 IEEE1588. Version 1 UUIDs are mapped into octets 2-7 of the clock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7801
+       * ID. We don't compare the first two octets.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7802
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7803
+      lastRecvTimes[newIndex].clockId[0] = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7804
+      lastRecvTimes[newIndex].clockId[1] = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7805
+      memcpy(lastRecvTimes[newIndex].clockId + sizeof(lastRecvTimes[newIndex].clockId) - sizeof(req.u.ts_read.uuid),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7806
+             req.u.ts_read.uuid,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7807
+             sizeof(req.u.ts_read.uuid));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7808
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7809
+      DBGV("rx %d: time %d.%09u, sequence %u, uuid %02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7810
+           newIndex,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7811
+           lastRecvTimes[newIndex].recvTimeStamp.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7812
+           lastRecvTimes[newIndex].recvTimeStamp.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7813
+           lastRecvTimes[newIndex].sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7814
+           req.u.ts_read.uuid[0], req.u.ts_read.uuid[1], req.u.ts_read.uuid[2],
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7815
+           req.u.ts_read.uuid[3], req.u.ts_read.uuid[4], req.u.ts_read.uuid[5]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7816
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7817
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7818
+    if(req.u.ts_read.tx_valid)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7819
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7820
+      if (rawTime) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7821
+        lastSendTime.seconds = req.u.ts_read.tx_ts_hw.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7822
+        lastSendTime.nanoseconds = req.u.ts_read.tx_ts_hw.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7823
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7824
+        lastSendTime.seconds = req.u.ts_read.tx_ts.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7825
+        lastSendTime.nanoseconds = req.u.ts_read.tx_ts.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7826
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7827
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7828
+      DBGV("tx time %d.%09d (%d.%09d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7829
+           lastSendTime.seconds, lastSendTime.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7830
+           req.u.ts_read.tx_ts.tv_sec, req.u.ts_read.tx_ts.tv_nsec);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7831
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7832
+  } while (req.u.ts_read.tx_valid || req.u.ts_read.rx_valid);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7833
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7834
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7835
+Boolean getSendTime(TimeInternal *sendTimeStamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7836
+                    TimeMode timeMode, NetPath *netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7837
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7838
+  /* check for new time stamps */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7839
+  getTimeStamps(timeMode, netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7840
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7841
+  if(lastSendTime.seconds || lastSendTime.nanoseconds)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7842
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7843
+    *sendTimeStamp = lastSendTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7844
+    lastSendTime.seconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7845
+    lastSendTime.nanoseconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7846
+    return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7847
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7848
+  else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7849
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7850
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7851
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7852
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7853
+ * helper function for getReceiveTime() which searches for time stamp
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7854
+ * in lastRecvTimes[leftIndex, rightIndex[
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7855
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7856
+static Boolean getReceiveTimeFromArray(TimeInternal *recvTimeStamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7857
+                                       ClockIdentity clockId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7858
+                                       UInteger16 sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7859
+                                       int leftIndex, int rightIndex)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7860
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7861
+  int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7862
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7863
+  DBGV("left idx %d, right idx %d\n", leftIndex, rightIndex);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7864
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7865
+  //DBGV("sequence id %d, clock id %02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7866
+  //     sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7867
+  //     clockId[0], clockId[1], clockId[2], clockId[3],
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7868
+  //     clockId[4], clockId[5], clockId[6], clockId[7]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7869
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7870
+  for(i = leftIndex; i < rightIndex; i++)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7871
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7872
+    //DBGV("rx index %d: time %d.%09d, sequence %u, clock id %02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7873
+    //     i,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7874
+    //     lastRecvTimes[i].recvTimeStamp.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7875
+    //     lastRecvTimes[i].recvTimeStamp.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7876
+    //     lastRecvTimes[i].sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7877
+    //     lastRecvTimes[i].clockId[0], lastRecvTimes[i].clockId[1],
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7878
+    //     lastRecvTimes[i].clockId[2], lastRecvTimes[i].clockId[3],
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7879
+    //     lastRecvTimes[i].clockId[4], lastRecvTimes[i].clockId[5],
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7880
+    //     lastRecvTimes[i].clockId[6], lastRecvTimes[i].clockId[7]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7881
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7882
+    if(!memcmp(lastRecvTimes[i].clockId + 2, clockId + 2, 6) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7883
+       lastRecvTimes[i].sequenceId == sequenceId)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7884
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7885
+      DBGV("found rx index %d: time %d.%09d, sequence %u, clock id %02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7886
+           i,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7887
+           lastRecvTimes[i].recvTimeStamp.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7888
+           lastRecvTimes[i].recvTimeStamp.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7889
+           lastRecvTimes[i].sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7890
+           lastRecvTimes[i].clockId[0], lastRecvTimes[i].clockId[1],
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7891
+           lastRecvTimes[i].clockId[2], lastRecvTimes[i].clockId[3],
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7892
+           lastRecvTimes[i].clockId[4], lastRecvTimes[i].clockId[5],
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7893
+           lastRecvTimes[i].clockId[6], lastRecvTimes[i].clockId[7]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7894
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7895
+      *recvTimeStamp = lastRecvTimes[i].recvTimeStamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7896
+      // invalidate entry to prevent accidental reuse (happened when slaves were
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7897
+      // restarted quickly while the master still had their old sequence IDs in the array)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7898
+      memset(&lastRecvTimes[i], 0, sizeof(lastRecvTimes[i]));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7899
+      return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7900
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7901
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7902
+  return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7903
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7904
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7905
+Boolean getReceiveTime(TimeInternal *recvTimeStamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7906
+                       ClockIdentity clockId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7907
+                       UInteger16 sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7908
+                       TimeMode timeMode,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7909
+                       NetPath *netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7910
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7911
+  /* check for new time stamps */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7912
+  getTimeStamps(timeMode, netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7913
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7914
+  if(oldestRecv <= nextFreeRecv)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7915
+    return getReceiveTimeFromArray(recvTimeStamp, clockId, sequenceId, oldestRecv, nextFreeRecv);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7916
+  else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7917
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7918
+    if(getReceiveTimeFromArray(recvTimeStamp, clockId, sequenceId, oldestRecv, RECV_ARRAY_SIZE))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7919
+      return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7920
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7921
+      return getReceiveTimeFromArray(recvTimeStamp, clockId, sequenceId, 0, nextFreeRecv);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7922
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7923
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7924
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/dep/timer.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7925
--- a/src/dep/timer.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7926
+++ b/src/dep/timer.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7927
@@ -1,5 +1,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7928
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7929
- * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7930
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7931
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7932
+ * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7933
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7934
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7935
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7936
@@ -39,6 +41,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7937
 #include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7938
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7939
 #define US_TIMER_INTERVAL (62500)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7940
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7941
+volatile hrtime_t timerInited;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7942
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7943
 volatile unsigned int elapsed;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7944
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7945
 /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7946
@@ -54,15 +59,38 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7947
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7948
 	elapsed++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7949
 	/* be sure to NOT call DBG in asynchronous handlers! */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7950
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7951
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7952
+	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7953
+	 * Solaris removes the handler once signal is delivered. We
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7954
+	 * need to set the handler again.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7955
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7956
+	signal(SIGALRM, catch_alarm);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7957
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7958
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7959
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7960
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7961
+/** Strings to help timer related debug messages. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7962
+char *PTP_timer_dbg_string[] =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7963
+{"PDELAYREQ_INTERVAL_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7964
+  "DELAYREQ_INTERVAL_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7965
+  "SYNC_INTERVAL_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7966
+  "ANNOUNCE_RECEIPT_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7967
+  "ANNOUNCE_INTERVAL_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7968
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7969
+  /* non-spec timers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7970
+  "OPERATOR_MESSAGES_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7971
+  "LEAP_SECOND_PENDING_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7972
+  "LEAP_SECOND_NOW_TIMER"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7973
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7974
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7975
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7976
 initTimer(void)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7977
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7978
-	struct itimerval itimer;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7979
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7980
 	DBG("initTimer\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7981
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7982
+#if !defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7983
+	struct itimerval itimer;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7984
 	signal(SIGALRM, SIG_IGN);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7985
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7986
 	elapsed = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7987
@@ -71,6 +99,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7988
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7989
 	signal(SIGALRM, catch_alarm);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7990
 	setitimer(ITIMER_REAL, &itimer, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7991
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7992
+	timerInited = gethrtime();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7993
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7994
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7995
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7996
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7997
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7998
@@ -83,8 +115,18 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7999
 	 * latch how many ticks we got since we were last called
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8000
 	 * remember that catch_alarm() is totally asynchronous to this timerUpdate()
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8001
 	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8002
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8003
+	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8004
+	 * We want to have the number of 'ticks' (each equal to
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8005
+	 * US_TIMER_INTERVAL microseconds) since last call assigned to
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8006
+	 * 'delta'.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8007
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8008
+	delta = (gethrtime() - timerInited)/(US_TIMER_INTERVAL * 1000);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8009
+	timerInited = gethrtime();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8010
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8011
 	delta = elapsed;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8012
 	elapsed = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8013
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8014
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8015
 	if (delta <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8016
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8017
@@ -100,7 +142,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8018
 		    <= 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8019
 			itimer[i].left = itimer[i].interval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8020
 			itimer[i].expire = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8021
-			DBG2("TimerUpdate:    Timer %u has now expired.   (Re-armed again with interval %d, left %d)\n", i, itimer[i].interval, itimer[i].left );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8022
+			DBG2("TimerUpdate:    Timer %u(%s) has now expired.   (Re-armed again with interval %d, left %d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8023
+			    i, PTP_timer_dbg_string[i], itimer[i].interval, itimer[i].left );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8024
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8025
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8026
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8027
@@ -113,7 +156,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8028
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8029
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8030
 	itimer[index].interval = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8031
-	DBG2("timerStop:      Stopping timer %d.   (New interval: %d; New left: %d)\n", index, itimer[index].left , itimer[index].interval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8032
+	DBG2("timerStop:      Stopping timer %d(%s).   (New interval: %d; New left: %d)\n",\
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8033
+	    index, PTP_timer_dbg_string[index], itimer[index].left , itimer[index].interval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8034
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8035
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8036
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8037
@@ -156,12 +200,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8038
 			DBG("Timer would be issued immediatly. Please raise dep/timer.c:US_TIMER_INTERVAL to hold %.2fs\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8039
 				interval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8040
 			);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8041
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8042
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8043
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8044
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8045
 	itimer[index].interval = itimer[index].left;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8046
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8047
-	DBG2("timerStart:     Set timer %d to %f.  New interval: %d; new left: %d\n", index, interval, itimer[index].left , itimer[index].interval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8048
+	DBG2("timerStart:     Set timer %d(%s) to %f.  New interval: %d; new left: %d\n",\
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8049
+	   index, PTP_timer_dbg_string[index], interval, itimer[index].left , itimer[index].interval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8050
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8051
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8052
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8053
@@ -173,21 +218,22 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8054
  * PTPv1 algorithm was:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8055
  *    ptpClock->R = getRand(&ptpClock->random_seed) % (PTP_DELAY_REQ_INTERVAL - 2) + 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8056
  *    R is the number of Syncs to be received, before sending a new request
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8057
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8058
- */ 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8059
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8060
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8061
 void timerStart_random(UInteger16 index, float interval, IntervalTimer * itimer)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8062
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8063
 	float new_value;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8064
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8065
 	new_value = getRand() * interval * 2.0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8066
-	DBG2(" timerStart_random: requested %.2f, got %.2f\n", interval, new_value);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8067
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8068
+	DBG2(" timerStart_random: index %d(%s) requested %.2f, got %.2f\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8069
+	    index, PTP_timer_dbg_string[index], interval, new_value);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8070
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8071
 	timerStart(index, new_value, itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8072
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8073
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8074
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8075
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8076
-Boolean 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8077
+Boolean
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8078
 timerExpired(UInteger16 index, IntervalTimer * itimer)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8079
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8080
 	timerUpdate(itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8081
@@ -201,7 +247,28 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8082
 	itimer[index].expire = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8083
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8084
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8085
-	DBG2("timerExpired:   Timer %d expired, taking actions.   current interval: %d; current left: %d\n", index, itimer[index].left , itimer[index].interval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8086
+	DBG2("timerExpired:   Timer %d(%s) expired, taking actions.   current interval: %d; current left: %d\n",\
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8087
+	    index, PTP_timer_dbg_string[index],  itimer[index].left , itimer[index].interval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8088
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8089
 	return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8090
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8091
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8092
+void timerNow(TimeInternal *time)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8093
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8094
+#if defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8095
+  struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8096
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8097
+  gettimeofday(&tv, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8098
+  time->seconds = tv.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8099
+  time->nanoseconds = tv.tv_usec*1000;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8100
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8101
+  struct timespec tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8102
+  int err = clock_gettime(CLOCK_REALTIME, &tv);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8103
+  if (err != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8104
+    ERROR("error getting time %d\n", err);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8105
+    return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8106
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8107
+  time->seconds = tv.tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8108
+  time->nanoseconds = tv.tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8109
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8110
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8111
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/display.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8112
--- a/src/display.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8113
+++ b/src/display.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8114
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8115
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8116
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8117
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8118
  * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8119
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8120
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8121
@@ -105,7 +107,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8122
 netPath_display(NetPath * net)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8123
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8124
 	struct in_addr addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8125
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8126
+	DBGV(">>>Network Info:\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8127
 	DBGV("eventSock : %d \n", net->eventSock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8128
 	DBGV("generalSock : %d \n", net->generalSock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8129
 	addr.s_addr = net->multicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8130
@@ -114,6 +116,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8131
 	DBGV("peerMulticastAddress : %s \n", inet_ntoa(addr));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8132
 	addr.s_addr = net->unicastAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8133
 	DBGV("unicastAddress : %s \n", inet_ntoa(addr));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8134
+	DBGV("<<<\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8135
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8136
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8137
 /**\brief Display a IntervalTimer Structure*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8138
@@ -201,27 +204,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8139
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8140
 msgHeader_display(MsgHeader * header)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8141
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8142
-	DBGV("Message header : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8143
+	DBGV(">>>Message header : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8144
 	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8145
-	DBGV("transportSpecific : %d\n", header->transportSpecific);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8146
-	DBGV("messageType : %d\n", header->messageType);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8147
-	DBGV("versionPTP : %d\n", header->versionPTP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8148
-	DBGV("messageLength : %d\n", header->messageLength);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8149
-	DBGV("domainNumber : %d\n", header->domainNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8150
-	DBGV("FlagField %02hhx:%02hhx\n", header->flagField[0], header->flagField[1]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8151
+	DBGV("\ttransportSpecific : %d\n", header->transportSpecific);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8152
+	DBGV("\tmessageType : %d\n", header->messageType);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8153
+	DBGV("\tversionPTP : %d\n", header->versionPTP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8154
+	DBGV("\tmessageLength : %d\n", header->messageLength);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8155
+	DBGV("\tdomainNumber : %d\n", header->domainNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8156
+	DBGV("\tFlagField %02hhx:%02hhx\n", header->flagField[0], header->flagField[1]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8157
 	integer64_display(&header->correctionfield);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8158
 	portIdentity_display(&header->sourcePortIdentity);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8159
-	DBGV("sequenceId : %d\n", header->sequenceId);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8160
-	DBGV("controlField : %d\n", header->controlField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8161
-	DBGV("logMessageInterval : %d\n", header->logMessageInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8162
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8163
+	DBGV("\tsequenceId : %d\n", header->sequenceId);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8164
+	DBGV("\tcontrolField : %d\n", header->controlField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8165
+	DBGV("\tlogMessageInterval : %d\n", header->logMessageInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8166
+	DBGV("<<<\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8167
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8168
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8169
 /**\brief Display Announce message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8170
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8171
 msgAnnounce_display(MsgAnnounce * announce)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8172
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8173
-	DBGV("Announce Message : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8174
+	DBGV(">>>Announce Message : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8175
 	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8176
 	DBGV("originTimestamp : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8177
 	DBGV("secondField  : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8178
@@ -235,7 +238,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8179
 	clockIdentity_display(announce->grandmasterIdentity);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8180
 	DBGV("stepsRemoved : %d \n", announce->stepsRemoved);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8181
 	DBGV("timeSource : %d \n", announce->timeSource);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8182
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8183
+	DBGV("<<<\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8184
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8185
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8186
 /**\brief Display Follow_UP message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8187
@@ -292,8 +295,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8188
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8189
 	DBGV("---Run time Options Display-- \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8190
 	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8191
-	DBGV("announceInterval : %d \n", rtOpts->announceInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8192
-	DBGV("syncInterval : %d \n", rtOpts->syncInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8193
+	DBGV("announceInterval : %Lf \n", rtOpts->announceInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8194
+	DBGV("syncInterval : %Lf \n", rtOpts->syncInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8195
 	clockQuality_display(&(rtOpts->clockQuality));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8196
 	DBGV("priority1 : %d \n", rtOpts->priority1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8197
 	DBGV("priority2 : %d \n", rtOpts->priority2);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8198
@@ -314,7 +317,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8199
 	timeInternal_display(&(rtOpts->outboundLatency));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8200
 	DBGV("max_foreign_records : %d \n", rtOpts->max_foreign_records);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8201
 	DBGV("ethernet mode : %d \n", rtOpts->ethernet_mode);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8202
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8203
+	DBGV("--- ---\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8204
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8205
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8206
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8207
@@ -333,7 +336,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8208
 	DBGV("priority2 : %d \n", ptpClock->priority2);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8209
 	DBGV("domainNumber : %d \n", ptpClock->domainNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8210
 	DBGV("slaveOnly : %d \n", ptpClock->slaveOnly);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8211
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8212
+	DBGV("-------\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8213
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8214
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8215
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8216
@@ -350,7 +353,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8217
 	timeInternal_display(&ptpClock->offsetFromMaster);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8218
 	DBGV("Mean path delay : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8219
 	timeInternal_display(&ptpClock->meanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8220
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8221
+	DBGV("---------\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8222
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8223
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8224
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8225
@@ -371,7 +374,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8226
 	clockQuality_display(&ptpClock->grandmasterClockQuality);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8227
 	DBGV("grandmasterpriority1 : %d \n", ptpClock->grandmasterPriority1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8228
 	DBGV("grandmasterpriority2 : %d \n", ptpClock->grandmasterPriority2);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8229
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8230
+	DBGV("---------\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8231
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8232
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8233
 /**\brief Display Global data set of a PtpClock*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8234
@@ -390,7 +393,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8235
 	DBGV("frequencyTraceable : %d \n", ptpClock->frequencyTraceable);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8236
 	DBGV("ptpTimescale : %d \n", ptpClock->ptpTimescale);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8237
 	DBGV("timeSource : %d \n", ptpClock->timeSource);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8238
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8239
+	DBGV("------\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8240
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8241
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8242
 /**\brief Display Port data set of a PtpClock*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8243
@@ -403,6 +406,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8244
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8245
 	portIdentity_display(&ptpClock->portIdentity);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8246
 	DBGV("port state : %d \n", ptpClock->portState);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8247
+	DBGV("minDelayReqInterval : %Lf \n", ptpClock->minDelayReqInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8248
 	DBGV("logMinDelayReqInterval : %d \n", ptpClock->logMinDelayReqInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8249
 	DBGV("peerMeanPathDelay : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8250
 	timeInternal_display(&ptpClock->peerMeanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8251
@@ -412,7 +416,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8252
 	DBGV("delayMechanism : %d \n", ptpClock->delayMechanism);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8253
 	DBGV("logMinPdelayReqInterval : %d \n", ptpClock->logMinPdelayReqInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8254
 	DBGV("versionNumber : %d \n", ptpClock->versionNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8255
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8256
+	DBGV("--------\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8257
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8258
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8259
 /**\brief Display ForeignMaster data set of a PtpClock*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8260
@@ -444,7 +448,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8261
 		DBGV("No Foreign masters recorded \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8262
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8263
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8264
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8265
+	DBGV("---- End of Ptp Clock Foreign Data Set ---\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8266
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8267
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8268
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8269
@@ -506,7 +510,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8270
 	DBGV("y : %d \n", ptpClock->owd_filt.y);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8271
 	DBGV("s_exp : %d \n", ptpClock->owd_filt.s_exp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8272
 	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8273
-	DBGV("observed_drift : %d \n", ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8274
+	DBGV("observed_drift : %Lf \n", ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8275
 	DBGV("message activity %d \n", ptpClock->message_activity);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8276
 	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8277
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8278
@@ -519,7 +523,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8279
 	netPath_display(&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8280
 	DBGV("mCommunication technology %d \n", ptpClock->port_communication_technology);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8281
 	clockUUID_display(ptpClock->port_uuid_field);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8282
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8283
+	DBGV("---------\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8284
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8285
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8286
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8287
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/protocol.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8288
--- a/src/protocol.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8289
+++ b/src/protocol.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8290
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8291
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8292
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8293
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8294
  * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8295
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8296
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8297
@@ -30,10 +32,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8298
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8299
  * @file   protocol.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8300
  * @date   Wed Jun 23 09:40:39 2010
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8301
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8302
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8303
  * @brief  The code that handles the IEEE-1588 protocol and state machine
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8304
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8305
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8306
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8307
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8308
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8309
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8310
 #include "ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8311
@@ -73,7 +75,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8312
    checked for 'port_state'. the actions and events may or may not change
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8313
    'port_state' by calling toState(), but once they are done we loop around
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8314
    again and perform the actions required for the new 'port_state'. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8315
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8316
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8317
 protocol(RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8318
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8319
 	DBG("event POWERUP\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8320
@@ -105,75 +107,83 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8321
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8322
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8323
 /* perform actions required when leaving 'port_state' and entering 'state' */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8324
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8325
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8326
 toState(UInteger8 state, RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8327
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8328
 	ptpClock->message_activity = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8329
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8330
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8331
 	/* leaving state tasks */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8332
 	switch (ptpClock->portState)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8333
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8334
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8335
-		timerStop(SYNC_INTERVAL_TIMER, ptpClock->itimer);  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8336
+		timerStop(SYNC_INTERVAL_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8337
 		timerStop(ANNOUNCE_INTERVAL_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8338
-		timerStop(PDELAYREQ_INTERVAL_TIMER, ptpClock->itimer); 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8339
+		timerStop(PDELAYREQ_INTERVAL_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8340
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8341
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8342
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8343
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8344
 		timerStop(ANNOUNCE_RECEIPT_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8345
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8346
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8347
 		if (ptpClock->delayMechanism == E2E)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8348
 			timerStop(DELAYREQ_INTERVAL_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8349
 		else if (ptpClock->delayMechanism == P2P)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8350
 			timerStop(PDELAYREQ_INTERVAL_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8351
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8352
-		initClock(rtOpts, ptpClock); 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8353
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8354
+    /* bug 25796 - Don't reset the servo when entering or leaving the slave state.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8355
+     * Instead we assume let the servo continue to work. If the time on a the next
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8356
+     * master is significantly different, this will cause a servo reset and a time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8357
+     * correction. Otherwise we will converge as normal.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8358
+     * initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8359
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8360
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8361
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8362
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8363
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8364
 		timerStop(PDELAYREQ_INTERVAL_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8365
 		timerStop(ANNOUNCE_RECEIPT_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8366
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8367
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8368
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8369
 	case PTP_LISTENING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8370
 		timerStop(ANNOUNCE_RECEIPT_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8371
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8372
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8373
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8374
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8375
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8376
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8377
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8378
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8379
 	/* entering state tasks */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8380
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8381
 	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8382
 	 * No need of PRE_MASTER state because of only ordinary clock
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8383
 	 * implementation.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8384
 	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8385
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8386
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8387
 	switch (state)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8388
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8389
 	case PTP_INITIALIZING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8390
 		DBG("state PTP_INITIALIZING\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8391
+		INFO("state -> initialising\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8392
 		ptpClock->portState = PTP_INITIALIZING;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8393
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8394
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8395
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8396
 	case PTP_FAULTY:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8397
 		DBG("state PTP_FAULTY\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8398
+		INFO("state -> faulty\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8399
 		ptpClock->portState = PTP_FAULTY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8400
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8401
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8402
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8403
 	case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8404
 		DBG("state PTP_DISABLED\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8405
+		INFO("state -> disabled\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8406
 		ptpClock->portState = PTP_DISABLED;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8407
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8408
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8409
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8410
 	case PTP_LISTENING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8411
 		/* in Listening mode, make sure we don't send anything. Instead we just expect/wait for announces (started below) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8412
 		timerStop(SYNC_INTERVAL_TIMER,      ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8413
 		timerStop(ANNOUNCE_INTERVAL_TIMER,  ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8414
 		timerStop(PDELAYREQ_INTERVAL_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8415
 		timerStop(DELAYREQ_INTERVAL_TIMER,  ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8416
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8417
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8418
 		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8419
 		 *  Count how many _unique_ timeouts happen to us.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8420
 		 *  If we were already in Listen mode, then do not count this as a seperate reset, but stil do a new IGMP refresh
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8421
@@ -183,51 +193,52 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8422
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8423
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8424
 		/* Revert to the original DelayReq interval, and ignore the one for the last master */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8425
-		ptpClock->logMinDelayReqInterval = rtOpts->initial_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8426
+		ptpClock->minDelayReqInterval = rtOpts->initial_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8427
+		ptpClock->logMinDelayReqInterval = log2IntegerSaturateAtZero(rtOpts->initial_delayreq);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8428
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8429
 		/* force a IGMP refresh per reset */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8430
 		if (rtOpts->do_IGMP_refresh) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8431
 			netRefreshIGMP(&ptpClock->netPath, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8432
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8433
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8434
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8435
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8436
 		DBG("state PTP_LISTENING\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8437
-		INFO("  now in state PTP_LISTENING\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8438
-		timerStart(ANNOUNCE_RECEIPT_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8439
+		INFO("state -> listening\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8440
+		timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8441
 			   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8442
-			   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8443
+			   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8444
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8445
 		ptpClock->portState = PTP_LISTENING;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8446
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8447
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8448
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8449
 		DBG("state PTP_MASTER\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8450
-		INFO("  now in state PTP_MASTER\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8451
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8452
+		INFO("state -> master\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8453
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8454
 		timerStart(SYNC_INTERVAL_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8455
-			   pow(2,ptpClock->logSyncInterval), ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8456
-		DBG("SYNC INTERVAL TIMER : %f \n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8457
-		    pow(2,ptpClock->logSyncInterval));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8458
+				rtOpts->syncInterval, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8459
+		DBG("SYNC INTERVAL TIMER : %Lf \n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8460
+				rtOpts->syncInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8461
 		timerStart(ANNOUNCE_INTERVAL_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8462
-			   pow(2,ptpClock->logAnnounceInterval), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8463
-			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8464
-		timerStart(PDELAYREQ_INTERVAL_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8465
-			   pow(2,ptpClock->logMinPdelayReqInterval), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8466
+				rtOpts->announceInterval, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8467
+				ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8468
+		timerStart(PDELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8469
+			   pow(2,ptpClock->logMinPdelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8470
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8471
 		ptpClock->portState = PTP_MASTER;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8472
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8473
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8474
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8475
 		DBG("state PTP_PASSIVE\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8476
-		INFO("  now in state PTP_PASSIVE\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8477
+		INFO("state -> passive\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8478
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8479
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8480
-		timerStart(PDELAYREQ_INTERVAL_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8481
-			   pow(2,ptpClock->logMinPdelayReqInterval), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8482
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8483
+		timerStart(PDELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8484
+			   pow(2,ptpClock->logMinPdelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8485
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8486
-		timerStart(ANNOUNCE_RECEIPT_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8487
+		timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8488
 			   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8489
-			   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8490
+			   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8491
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8492
 		ptpClock->portState = PTP_PASSIVE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8493
 		p1(ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8494
@@ -235,15 +246,21 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8495
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8496
 	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8497
 		DBG("state PTP_UNCALIBRATED\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8498
+		INFO("state -> uncalibrated\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8499
 		ptpClock->portState = PTP_UNCALIBRATED;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8500
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8501
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8502
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8503
 		DBG("state PTP_SLAVE\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8504
-		INFO("  now in state PTP_SLAVE\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8505
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8506
-		initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8507
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8508
+		INFO("state -> slave\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8509
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8510
+		/* bug 25796 - Don't reset the servo when entering or leaving the slave state.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8511
+		 * Instead we assume let the servo continue to work. If the time on a the next
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8512
+		 * master is significantly different, this will cause a servo reset and a time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8513
+		 * correction. Otherwise we will converge as normal.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8514
+		 * initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8515
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8516
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8517
 		ptpClock->waitingForFollow = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8518
 		ptpClock->waitingForDelayResp = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8519
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8520
@@ -252,16 +269,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8521
 		clearTime(&ptpClock->pdelay_req_receive_time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8522
 		clearTime(&ptpClock->pdelay_resp_send_time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8523
 		clearTime(&ptpClock->pdelay_resp_receive_time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8524
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8525
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8526
 		timerStart(OPERATOR_MESSAGES_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8527
 			   OPERATOR_MESSAGES_INTERVAL,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8528
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8529
 		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8530
 		timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8531
 			   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8532
-			   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8533
+			   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8534
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8535
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8536
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8537
 		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8538
 		 * Previously, this state transition would start the delayreq timer immediately.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8539
 		 * However, if this was faster than the first received sync, then the servo would drop the delayResp
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8540
@@ -271,6 +288,24 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8541
 		ptpClock->waiting_for_first_delayresp = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8542
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8543
 		ptpClock->portState = PTP_SLAVE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8544
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8545
+#if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8546
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8547
+		/* 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8548
+		 * leap second pending in kernel but no leap second 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8549
+		 * info from GM - withdraw kernel leap second
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8550
+		 * if the flags have disappeared but we're past 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8551
+		 * leap second event, do nothing - kernel flags 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8552
+		 * will be unset in handleAnnounce()
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8553
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8554
+		if((!ptpClock->leap59 && !ptpClock->leap61) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8555
+		    !ptpClock->leapSecondInProgress &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8556
+		   (checkTimexFlags(STA_INS) || checkTimexFlags(STA_DEL))) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8557
+			WARNING("=== Leap second pending in kernel but not on "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8558
+				"GM: aborting kernel leap second\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8559
+			unsetTimexFlags(STA_INS | STA_DEL, TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8560
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8561
+#endif /* apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8562
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8563
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8564
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8565
@@ -283,11 +318,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8566
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8567
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8568
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8569
-Boolean 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8570
+Boolean
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8571
 doInit(RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8572
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8573
+	NOTIFY("ptpd version: %s\n", PTP_VERSION_STRING);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8574
 	DBG("manufacturerIdentity: %s\n", MANUFACTURER_ID);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8575
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8576
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8577
 	/* initialize networking */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8578
 	netShutdown(&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8579
 	if (!netInit(&ptpClock->netPath, rtOpts, ptpClock)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8580
@@ -295,27 +331,36 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8581
 		toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8582
 		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8583
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8584
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8585
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8586
+	/* initialize other stuff, including HW if needed */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8587
+	shutdownTime(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8588
+	if(!initTime(rtOpts, ptpClock))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8589
+	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8590
+	    ERROR("failed to initialize timing\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8591
+	    toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8592
+	    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8593
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8594
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8595
 	/* initialize other stuff */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8596
 	initData(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8597
 	initTimer();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8598
 	initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8599
 	m1(rtOpts, ptpClock );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8600
-	msgPackHeader(ptpClock->msgObuf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8601
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8602
+	msgPackHeader(ptpClock->msgObuf, ptpClock, SYNC);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8603
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8604
 	toState(PTP_LISTENING, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8605
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8606
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8607
 	return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8608
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8609
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8610
 /* handle actions and events for 'port_state' */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8611
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8612
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8613
 doState(RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8614
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8615
 	UInteger8 state;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8616
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8617
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8618
 	ptpClock->message_activity = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8619
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8620
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8621
 	/* Process record_update (BMC algorithm) before everything else */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8622
 	switch (ptpClock->portState)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8623
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8624
@@ -335,11 +380,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8625
 				toState(state, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8626
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8627
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8628
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8629
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8630
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8631
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8632
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8633
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8634
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8635
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8636
 	switch (ptpClock->portState)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8637
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8638
@@ -348,14 +393,26 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8639
 		DBG("event FAULT_CLEARED\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8640
 		toState(PTP_INITIALIZING, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8641
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8642
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8643
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8644
 	case PTP_LISTENING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8645
 	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8646
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8647
 	// passive mode behaves like the SLAVE state, in order to wait for the announce timeout of the current active master
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8648
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8649
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8650
+		/* If we are in time both mode sync the system and local NIC. This process will continue
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8651
+                 * even if we lose contact with the master. Note that we only do this if ptpd was
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8652
+		 * started in a master mode or the primary servo has updated the clock at least once.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8653
+		 * bug 26688 This avoids the scenario during slave start up where we start syncing the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8654
+		 * system time to the NIC time before the NIC is synced to the master.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8655
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8656
+		if ((rtOpts->time_mode == TIME_BOTH) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8657
+		    ((rtOpts->master_slave_mode != PTP_MODE_SLAVE) || ptpClock->clock_first_updated)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8658
+			syncSystemWithNIC(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8659
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8660
+		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8661
 		handle(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8662
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8663
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8664
 		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8665
 		 * handle SLAVE timers:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8666
 		 *   - No Announce message was received
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8667
@@ -367,7 +424,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8668
 			ptpClock->number_foreign_records = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8669
 			ptpClock->foreign_record_i = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8670
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8671
-			if(!ptpClock->slaveOnly && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8672
+			if(rtOpts->master_slave_mode != PTP_MODE_SLAVE &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8673
 			   ptpClock->clockQuality.clockClass != 255) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8674
 				m1(rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8675
 				toState(PTP_MASTER, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8676
@@ -380,7 +437,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8677
 				toState(PTP_LISTENING, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8678
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8679
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8680
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8681
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8682
 		if (timerExpired(OPERATOR_MESSAGES_TIMER, ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8683
 			reset_operator_messages(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8684
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8685
@@ -396,32 +453,113 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8686
 			if (timerExpired(PDELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8687
 					ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8688
 				DBGV("event PDELAYREQ_INTERVAL_TIMEOUT_EXPIRES\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8689
-				issuePDelayReq(rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8690
+ 				issuePDelayReq(rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8691
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8692
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8693
 			/* FIXME: Path delay should also rearm its timer with the value received from the Master */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8694
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8695
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8696
+		/* XXX wowczarek: handle leap second timers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8697
+		if (ptpClock->leap59 || ptpClock->leap61) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8698
+			DBGV("seconds to midnight: %f\n", secondsToMidnight());
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8699
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8700
+		if(timerExpired(LEAP_SECOND_PENDING_TIMER,ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8701
+			/* leap second period is over */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8702
+			if(ptpClock->leapSecondInProgress) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8703
+				/* 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8704
+				 * do not unpause offset calculation just
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8705
+				 * yet, just indicate and it will be
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8706
+				 * unpaused in handleAnnounce
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8707
+				 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8708
+				ptpClock->leapSecondPending = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8709
+				timerStop(LEAP_SECOND_PENDING_TIMER,ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8710
+			/* leap second period has just started */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8711
+			} else if(ptpClock->leapSecondPending) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8712
+				WARNING("=== Leap second event imminent - pausing "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8713
+					"offset updates\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8714
+				ptpClock->leapSecondInProgress = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8715
+#if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8716
+				if (!rtOpts->noResetClock && !rtOpts->resetClockStartupOnly &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8717
+				    !checkTimexFlags(ptpClock->leap61 ? STA_INS : STA_DEL)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8718
+					WARNING("=== Kernel leap second flags have "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8719
+						"been unset - attempting to set "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8720
+						"again");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8721
+					setTimexFlags(ptpClock->leap61 ? 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8722
+						      STA_INS : STA_DEL, FALSE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8723
+				}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8724
+#endif /* apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8725
+				timerStart(LEAP_SECOND_PENDING_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8726
+					getPauseBeforeMidnight(ptpClock->logAnnounceInterval) + 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8727
+					getPauseAfterMidnight(ptpClock->logAnnounceInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8728
+					ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8729
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8730
+				if (ptpClock->leap61) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8731
+					timerStart(LEAP_SECOND_NOW_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8732
+						secondsToMidnight(),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8733
+						ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8734
+				} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8735
+					timerStart(LEAP_SECOND_NOW_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8736
+						secondsToMidnight() - 1.0,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8737
+						ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8738
+				}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8739
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8740
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8741
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8742
+		if(timerExpired(LEAP_SECOND_NOW_TIMER,ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8743
+			if (ptpClock->leap61) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8744
+				WARNING("=== Leap second added!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8745
+				adjTimeInsertLeapSecond(rtOpts->time_mode, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8746
+			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8747
+				WARNING("=== Leap second deleted!\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8748
+				adjTimeDeleteLeapSecond(rtOpts->time_mode, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8749
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8750
+			timerStop(LEAP_SECOND_NOW_TIMER,ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8751
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8752
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8753
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8754
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8755
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8756
+		/* If we are in time both mode, sync the system and local NIC. This process will continue
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8757
+		 * irrespective of whether theere is communication with one or more slave nodes.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8758
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8759
+		if (rtOpts->time_mode == TIME_BOTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8760
+			syncSystemWithNIC(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8761
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8762
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8763
 		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8764
-		 * handle SLAVE timers:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8765
+		 * handle MASTER timers:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8766
 		 *   - Time to send new Sync
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8767
 		 *   - Time to send new Announce
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8768
 		 *   - Time to send new PathDelay
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8769
 		 *      (DelayResp has no timer - as these are sent and retransmitted by the slaves)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8770
 		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8771
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8772
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8773
+#ifdef DBG_SIGRTMIN_LEAP_SECOND
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8774
+                if(timerExpired(LEAP_SECOND_NOW_TIMER, ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8775
+			/* If we are signalling a leap second, apply the adjustment
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8776
+			 * and cancel the signalling.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8777
+			 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8778
+			if (ptpClock->leap61)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8779
+				ptpClock->currentUtcOffset++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8780
+			if (ptpClock->leap59)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8781
+				ptpClock->currentUtcOffset--;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8782
+			INFO("Setting UTC offset to %d\n", ptpClock->currentUtcOffset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8783
+			ptpClock->leap61 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8784
+			ptpClock->leap59 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8785
+			timerStop(LEAP_SECOND_NOW_TIMER, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8786
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8787
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8788
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8789
 		if (timerExpired(SYNC_INTERVAL_TIMER, ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8790
 			DBGV("event SYNC_INTERVAL_TIMEOUT_EXPIRES\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8791
 			issueSync(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8792
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8793
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8794
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8795
 		if (timerExpired(ANNOUNCE_INTERVAL_TIMER, ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8796
 			DBGV("event ANNOUNCE_INTERVAL_TIMEOUT_EXPIRES\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8797
 			issueAnnounce(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8798
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8799
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8800
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8801
 		if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8802
 			if (timerExpired(PDELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8803
 					ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8804
@@ -429,19 +567,20 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8805
 				issuePDelayReq(rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8806
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8807
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8808
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8809
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8810
 		// TODO: why is handle() below expiretimer, while in slave is the opposite
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8811
 		handle(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8812
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8813
-		if (ptpClock->slaveOnly || ptpClock->clockQuality.clockClass == 255)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8814
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8815
+		if (rtOpts->master_slave_mode == PTP_MODE_SLAVE ||
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8816
+		   ptpClock->clockQuality.clockClass == 255)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8817
 			toState(PTP_LISTENING, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8818
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8819
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8820
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8821
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8822
 	case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8823
 		handle(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8824
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8825
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8826
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8827
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8828
 		DBG("(doState) do unrecognized state\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8829
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8830
@@ -456,57 +595,54 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8831
 	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8832
 	ssize_t length;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8833
 	Boolean isFromSelf;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8834
+	Boolean isEvent;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8835
+	Boolean isLoopedBackTx = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8836
 	TimeInternal time = { 0, 0 };
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8837
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8838
 	if (!ptpClock->message_activity) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8839
-		ret = netSelect(0, &ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8840
-		if (ret < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8841
-			PERROR("failed to poll sockets");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8842
+		/* To support time both mode, we time-out after a  second to allow the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8843
+		 * the system clock to be synced to the NIC clock. For other modes, this
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8844
+		 * should have no effect on the behaviour. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8845
+		TimeInternal timeout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8846
+		double integerPart, fractionalPart;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8847
+		fractionalPart = modf(rtOpts->system_time_update_interval, &integerPart);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8848
+		timeout.seconds = (Integer32)integerPart;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8849
+		timeout.nanoseconds = (Integer32)(fractionalPart * 1000000000.0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8850
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8851
+		ret = netSelect(&timeout, &ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8852
+		if(ret < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8853
+			PERROR("failed to poll sockets\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8854
 			toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8855
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8856
 		} else if (!ret) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8857
-			/* DBGV("handle: nothing\n"); */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8858
+			/* We timed out, return immediately. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8859
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8860
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8861
 		/* else length > 0 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8862
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8863
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8864
-	DBGV("handle: something\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8865
+	/*DBGV("handle: something\n");*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8866
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8867
-	/* TODO: this should be based on the select actual FDs (if(FD_ISSET(...)) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8868
-	length = netRecvEvent(ptpClock->msgIbuf, &time, &ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8869
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8870
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8871
+	isEvent = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8872
+	length = netRecvEvent(ptpClock->msgIbuf, &time, ptpClock,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8873
+                          rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8874
+                          &isLoopedBackTx);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8875
 	if (length < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8876
-		PERROR("failed to receive on the event socket");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8877
+		PERROR("failed to receive on the event socket\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8878
 		toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8879
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8880
 	} else if (!length) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8881
+		isEvent = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8882
 		length = netRecvGeneral(ptpClock->msgIbuf, &time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8883
-					&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8884
+					ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8885
 		if (length < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8886
-			PERROR("failed to receive on the general socket");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8887
+			PERROR("failed to receive on the general socket\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8888
 			toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8889
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8890
 		} else if (!length)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8891
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8892
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8893
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8894
-	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8895
-	 * make sure we use the TAI to UTC offset specified, if the master is sending the UTC_VALID bit
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8896
-	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8897
-	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8898
-	 * On the slave, all timestamps that we handle here have been collected by our local clock (loopback+kernel-level timestamp)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8899
-	 * This includes delayReq just send, and delayResp, when it arrives.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8900
-	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8901
-	 * these are then adjusted to the same timebase of the Master (+34 leap seconds, as of 2011)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8902
-	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8903
-	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8904
-	DBGV("__UTC_offset: %d %d \n", ptpClock->currentUtcOffsetValid, ptpClock->currentUtcOffset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8905
-	if (ptpClock->currentUtcOffsetValid) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8906
-		time.seconds += ptpClock->currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8907
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8908
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8909
 	ptpClock->message_activity = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8910
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8911
 	if (length < HEADER_LENGTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8912
@@ -517,6 +653,30 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8913
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8914
 	msgUnpackHeader(ptpClock->msgIbuf, &ptpClock->msgTmpHeader);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8915
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8916
+	if(isEvent && !isLoopedBackTx && (ptpClock->tsMethod == TS_METHOD_DRIVER_IOCTL)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8917
+		/* query hardware for matching receive time stamp */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8918
+		if(!getReceiveTime(&time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8919
+                       ptpClock->msgTmpHeader.sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8920
+                       ptpClock->msgTmpHeader.sequenceId, rtOpts->time_mode, &ptpClock->netPath)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8921
+				/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8922
+				 * This doesn't apply to us as we can timestamp sync and delay requests:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8923
+				 * "Incoming packets without hardware time stamp cannot be ignored outright because
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8924
+				 * a master might only be able to time stamp DelayReq packets; ignoring the Sync
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8925
+				 * packets from another, better clock would break the clock selection protocol.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8926
+				 * Therefore set system time as fallback and decide below what to do."
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8927
+				 * Instead, ignore the packet outright!
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8928
+				 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8929
+				DBGV("*** message with no time stamp ***\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8930
+				return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8931
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8932
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8933
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8934
+	/* make sure we use the TAI to UTC offset specified, if the master is sending the UTC_VALID bit */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8935
+	DBG2("__UTC_offset: %d %d \n", ptpClock->currentUtcOffsetValid, ptpClock->currentUtcOffset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8936
+	if((rtOpts->master_slave_mode == PTP_MODE_SLAVE) && ptpClock->currentUtcOffsetValid){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8937
+		time.seconds += ptpClock->currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8938
+	}	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8939
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8940
 	if (ptpClock->msgTmpHeader.versionPTP != ptpClock->versionNumber) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8941
 		DBG2("ignore version %d message\n", ptpClock->msgTmpHeader.versionPTP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8942
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8943
@@ -527,13 +687,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8944
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8945
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8946
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8947
-	/*Spec 9.5.2.2*/	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8948
+	/*Spec 9.5.2.2*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8949
 	isFromSelf = (ptpClock->portIdentity.portNumber == ptpClock->msgTmpHeader.sourcePortIdentity.portNumber
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8950
 		      && !memcmp(ptpClock->msgTmpHeader.sourcePortIdentity.clockIdentity, ptpClock->portIdentity.clockIdentity, CLOCK_IDENTITY_LENGTH));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8951
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8952
 	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8953
 	 * subtract the inbound latency adjustment if it is not a loop
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8954
-	 *  back and the time stamp seems reasonable 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8955
+	 *  back and the time stamp seems reasonable
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8956
 	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8957
 	if (!isFromSelf && time.seconds > 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8958
 		subTime(&time, &time, &rtOpts->inboundLatency);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8959
@@ -576,27 +736,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8960
 	switch (ptpClock->msgTmpHeader.messageType)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8961
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8962
 	case ANNOUNCE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8963
-		handleAnnounce(&ptpClock->msgTmpHeader, ptpClock->msgIbuf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8964
+		handleAnnounce(&ptpClock->msgTmpHeader, ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8965
 			       length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8966
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8967
 	case SYNC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8968
-		handleSync(&ptpClock->msgTmpHeader, ptpClock->msgIbuf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8969
+		handleSync(&ptpClock->msgTmpHeader, ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8970
 			   length, &time, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8971
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8972
 	case FOLLOW_UP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8973
-		handleFollowUp(&ptpClock->msgTmpHeader, ptpClock->msgIbuf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8974
+		handleFollowUp(&ptpClock->msgTmpHeader, ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8975
 			       length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8976
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8977
 	case DELAY_REQ:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8978
-		handleDelayReq(&ptpClock->msgTmpHeader, ptpClock->msgIbuf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8979
+		handleDelayReq(&ptpClock->msgTmpHeader, ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8980
 			       length, &time, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8981
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8982
 	case PDELAY_REQ:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8983
-		handlePDelayReq(&ptpClock->msgTmpHeader, ptpClock->msgIbuf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8984
+		handlePDelayReq(&ptpClock->msgTmpHeader, ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8985
 				length, &time, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8986
-		break;  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8987
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8988
 	case DELAY_RESP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8989
-		handleDelayResp(&ptpClock->msgTmpHeader, ptpClock->msgIbuf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8990
+		handleDelayResp(&ptpClock->msgTmpHeader, ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8991
 				length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8992
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8993
 	case PDELAY_RESP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8994
@@ -604,16 +764,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8995
 				 &time, length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8996
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8997
 	case PDELAY_RESP_FOLLOW_UP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8998
-		handlePDelayRespFollowUp(&ptpClock->msgTmpHeader, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8999
-					 ptpClock->msgIbuf, length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9000
+		handlePDelayRespFollowUp(&ptpClock->msgTmpHeader,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9001
+					 ptpClock->msgIbuf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9002
 					 isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9003
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9004
 	case MANAGEMENT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9005
-		handleManagement(&ptpClock->msgTmpHeader, ptpClock->msgIbuf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9006
+		handleManagement(&ptpClock->msgTmpHeader, ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9007
 				 length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9008
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9009
 	case SIGNALING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9010
-		handleSignaling(&ptpClock->msgTmpHeader, ptpClock->msgIbuf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9011
+		handleSignaling(&ptpClock->msgTmpHeader, ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9012
 				length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9013
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9014
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9015
@@ -627,11 +787,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9016
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9017
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9018
 /*spec 9.5.3*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9019
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9020
-handleAnnounce(MsgHeader *header, Octet *msgIbuf, ssize_t length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9021
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9022
+handleAnnounce(MsgHeader *header, Octet *msgIbuf, ssize_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9023
 	       Boolean isFromSelf, RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9024
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9025
-	Boolean isFromCurrentParent = FALSE; 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9026
+	Boolean isFromCurrentParent = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9027
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9028
 	DBGV("HandleAnnounce : Announce message received : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9029
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9030
@@ -650,40 +810,63 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9031
 	case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9032
 		DBG("Handleannounce : disregard\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9033
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9034
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9035
-	case PTP_UNCALIBRATED:	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9036
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9037
+	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9038
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9039
 		if (isFromSelf) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9040
 			DBGV("HandleAnnounce : Ignore message from self \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9041
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9042
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9043
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9044
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9045
 		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9046
 		 * Valid announce message is received : BMC algorithm
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9047
-		 * will be executed 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9048
+		 * will be executed
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9049
 		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9050
 		ptpClock->record_update = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9051
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9052
 		isFromCurrentParent = !memcmp(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9053
 			ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9054
 			header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9055
-			CLOCK_IDENTITY_LENGTH)	&& 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9056
-			(ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9057
+			CLOCK_IDENTITY_LENGTH)	&&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9058
+			(ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9059
 			 header->sourcePortIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9060
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9061
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9062
 		switch (isFromCurrentParent) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9063
 		case TRUE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9064
 	   		msgUnpackAnnounce(ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9065
 					  &ptpClock->msgTmp.announce);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9066
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9067
-			/* update datasets (file bmc.c) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9068
+			/* If the leap second period is over (pending == FALSE,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9069
+			 * inProgress == TRUE), unpause offset calculation
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9070
+			 * (received first announce after leap second)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9071
+			 * Note that we must be this before running the BMC
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9072
+			 * algorithm as this can set leapSecondPending again.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9073
+			 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9074
+			if(ptpClock->leapSecondInProgress &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9075
+			   !ptpClock->leapSecondPending) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9076
+				WARNING("=== Leap second event over - "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9077
+					"resuming offset updates\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9078
+				ptpClock->leapSecondInProgress = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9079
+				ptpClock->leap59 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9080
+				ptpClock->leap61 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9081
+				unsetTimexFlags(STA_INS | STA_DEL, TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9082
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9083
+			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9084
+			/* call the BMC algorithm (file bmc.c) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9085
 	   		s1(header,&ptpClock->msgTmp.announce,ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9086
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9087
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9088
+			/* update current master in the fmr as well */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9089
+			memcpy(&ptpClock->foreign[ptpClock->foreign_record_best].header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9090
+			       header,sizeof(MsgHeader));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9091
+			memcpy(&ptpClock->foreign[ptpClock->foreign_record_best].announce,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9092
+			       &ptpClock->msgTmp.announce,sizeof(MsgAnnounce));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9093
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9094
 			DBG2("___ Announce: received Announce from current Master, so reset the Announce timer\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9095
 	   		/*Reset Timer handling Announce receipt timeout*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9096
 	   		timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9097
 				   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9098
-				   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9099
+				   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9100
 				   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9101
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9102
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9103
@@ -691,20 +874,20 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9104
 			// todo: add this to bmc(), to cover the very first packet
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9105
 			ptpClock->MasterAddr = ptpClock->netPath.lastRecvAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9106
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9107
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9108
+	   		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9109
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9110
 		case FALSE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9111
-			/*addForeign takes care of AnnounceUnpacking*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9112
+	   		/*addForeign takes care of AnnounceUnpacking*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9113
 			/* the actual decision to change masters is only done in  doState() / record_update == TRUE / bmc() */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9114
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9115
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9116
 			/* the original code always called: addforeign(new master) + timerstart(announce) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9117
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9118
 			addForeign(ptpClock->msgIbuf,header,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9119
-			timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9120
+	   		timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9121
 				   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9122
-				   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9123
+				   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9124
 				   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9125
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9126
+	   		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9127
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9128
 		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9129
 			DBG("HandleAnnounce : (isFromCurrentParent)"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9130
@@ -718,7 +901,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9131
 	 * Passive case: previously, this was handled in the default, just like the master case.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9132
 	 * This the announce would call addForeign(), but NOT reset the timer, so after 12s it would expire and we would come alive periodically 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9133
 	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9134
-	 * This code is now merged with the slave case to reset the timer, and call addForeign() if it's a third master
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9135
+	 * This code is now merged with the slave case to reset the timer, and  call addForeign() if it's a third master
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9136
 	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9137
 	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9138
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9139
@@ -756,7 +939,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9140
 			/*Reset Timer handling Announce receipt timeout*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9141
 			timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9142
 				   (ptpClock->announceReceiptTimeout) *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9143
-				   (pow(2,ptpClock->logAnnounceInterval)),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9144
+				   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9145
 				   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9146
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9147
 			/*addForeign takes care of AnnounceUnpacking*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9148
@@ -769,27 +952,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9149
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9150
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9151
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9152
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9153
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9154
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9155
-	case PTP_LISTENING:           /* listening mode still causes timeouts in order to send IGMP refreshes */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9156
+	case PTP_LISTENING:			/* listening mode still causes timeouts in order to send IGMP refreshes */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9157
 	default :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9158
-		if (isFromSelf) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9159
+		if (isFromSelf)	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9160
 			DBGV("HandleAnnounce : Ignore message from self \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9161
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9162
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9163
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9164
 		DBGV("Announce message from another foreign master\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9165
 		addForeign(ptpClock->msgIbuf,header,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9166
-		ptpClock->record_update = TRUE;    /* run BMC() as soon as possible */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9167
+		ptpClock->record_update = TRUE;		/* run BMC() as soon as possible */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9168
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9169
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9170
 	} /* switch on (port_state) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9171
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9172
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9173
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9174
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9175
-handleSync(MsgHeader *header, Octet *msgIbuf, ssize_t length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9176
-	   TimeInternal *time, Boolean isFromSelf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9177
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9178
+handleSync(MsgHeader *header, Octet *msgIbuf, ssize_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9179
+	   TimeInternal *time, Boolean isFromSelf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9180
 	   RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9181
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9182
 	TimeInternal OriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9183
@@ -797,12 +980,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9184
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9185
 	Boolean isFromCurrentParent = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9186
 	DBGV("Sync message received : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9187
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9188
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9189
 	if (length < SYNC_LENGTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9190
 		ERROR("short Sync message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9191
 		toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9192
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9193
-	}	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9194
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9195
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9196
 	switch (ptpClock->portState) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9197
 	case PTP_INITIALIZING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9198
@@ -810,8 +993,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9199
 	case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9200
 		DBGV("HandleSync : disregard\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9201
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9202
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9203
-	case PTP_UNCALIBRATED:	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9204
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9205
+	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9206
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9207
 		if (isFromSelf) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9208
 			DBGV("HandleSync: Ignore message from self \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9209
@@ -820,27 +1003,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9210
 		isFromCurrentParent =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9211
 			!memcmp(ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9212
 				header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9213
-				CLOCK_IDENTITY_LENGTH) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9214
-			(ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9215
+				CLOCK_IDENTITY_LENGTH) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9216
+			(ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9217
 			 header->sourcePortIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9218
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9219
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9220
 		if (isFromCurrentParent) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9221
 			/* We only start our own delayReq timer after receiving the first sync */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9222
 			if (ptpClock->waiting_for_first_sync) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9223
 				ptpClock->waiting_for_first_sync = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9224
 				NOTICE("Received first Sync from Master\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9225
-				NOTICE("   going to arm DelayReq timer for the first time, with initial rate: %d\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9226
-					ptpClock->logMinDelayReqInterval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9227
+				NOTICE("   going to arm DelayReq timer for the first time, with initial rate: %Lf\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9228
+					ptpClock->minDelayReqInterval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9229
 				);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9230
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9231
 				if (ptpClock->delayMechanism == E2E)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9232
 					timerStart(DELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9233
-						   pow(2,ptpClock->logMinDelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9234
-						   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9235
+							ptpClock->minDelayReqInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9236
+							ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9237
 				else if (ptpClock->delayMechanism == P2P)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9238
 					timerStart(PDELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9239
-						   pow(2,ptpClock->logMinPdelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9240
-						   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9241
+                               pow(2,ptpClock->logMinPdelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9242
+                               ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9243
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9244
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9245
 			ptpClock->sync_receive_time.seconds = time->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9246
@@ -852,13 +1035,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9247
 				DBG2("HandleSync: waiting for follow-up \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9248
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9249
 				ptpClock->waitingForFollow = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9250
-				ptpClock->recvSyncSequenceId = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9251
+				ptpClock->recvSyncSequenceId =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9252
 					header->sequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9253
 				/*Save correctionField of Sync message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9254
 				integer64_to_internalTime(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9255
 					header->correctionfield,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9256
 					&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9257
-				ptpClock->lastSyncCorrectionField.seconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9258
+				ptpClock->lastSyncCorrectionField.seconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9259
 					correctionField.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9260
 				ptpClock->lastSyncCorrectionField.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9261
 					correctionField.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9262
@@ -895,9 +1078,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9263
 		} if (ptpClock->twoStepFlag) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9264
 			DBGV("HandleSync: going to send followup message\n ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9265
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9266
-			/*Add latency*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9267
-			addTime(time,time,&rtOpts->outboundLatency);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9268
-			issueFollowup(time,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9269
+      /*Add latency*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9270
+      addTime(time,time,&rtOpts->outboundLatency);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9271
+      issueFollowup(time,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9272
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9273
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9274
 			DBGV("HandleSync: Sync message received from self\n ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9275
@@ -906,17 +1089,17 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9276
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9277
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9278
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9279
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9280
-handleFollowUp(MsgHeader *header, Octet *msgIbuf, ssize_t length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9281
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9282
+handleFollowUp(MsgHeader *header, Octet *msgIbuf, ssize_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9283
 	       Boolean isFromSelf, RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9284
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9285
 	DBGV("Handlefollowup : Follow up message received \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9286
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9287
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9288
 	TimeInternal preciseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9289
 	TimeInternal correctionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9290
 	Boolean isFromCurrentParent = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9291
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9292
-	if (length < FOLLOW_UP_LENGTH)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9293
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9294
+	if(length < FOLLOW_UP_LENGTH)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9295
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9296
 		ERROR("short Follow up message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9297
 		toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9298
@@ -937,19 +1120,19 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9299
 	case PTP_LISTENING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9300
 		DBGV("Handfollowup : disregard\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9301
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9302
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9303
-	case PTP_UNCALIBRATED:	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9304
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9305
+	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9306
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9307
-		isFromCurrentParent = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9308
+		isFromCurrentParent =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9309
 			!memcmp(ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9310
 				header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9311
-				CLOCK_IDENTITY_LENGTH) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9312
-			(ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9313
+				CLOCK_IDENTITY_LENGTH) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9314
+			(ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9315
 			 header->sourcePortIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9316
-	 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9317
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9318
 		if (isFromCurrentParent) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9319
 			if (ptpClock->waitingForFollow)	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9320
-				if ((ptpClock->recvSyncSequenceId == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9321
+				if ((ptpClock->recvSyncSequenceId ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9322
 				     header->sequenceId)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9323
 					msgUnpackFollowUp(ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9324
 							  &ptpClock->msgTmp.follow);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9325
@@ -979,6 +1162,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9326
 				     "message \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9327
 		} else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9328
 			DBG2("Ignored, Follow up message is not from current parent \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9329
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9330
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9331
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9332
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9333
@@ -994,13 +1178,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9334
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9335
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9336
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9337
-handleDelayReq(MsgHeader *header, Octet *msgIbuf, ssize_t length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9338
+handleDelayReq(MsgHeader *header, Octet *msgIbuf, ssize_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9339
 	       TimeInternal *time, Boolean isFromSelf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9340
 	       RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9341
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9342
 	if (ptpClock->delayMechanism == E2E) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9343
 		DBGV("delayReq message received : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9344
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9345
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9346
 		if (length < DELAY_REQ_LENGTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9347
 			ERROR("short DelayReq message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9348
 			toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9349
@@ -1018,7 +1202,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9350
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9351
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9352
 		case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9353
-			if (isFromSelf)	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9354
+			if (isFromSelf) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9355
 				DBG("==> Handle DelayReq (%d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9356
 					 header->sequenceId);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9357
 				
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9358
@@ -1062,14 +1246,14 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9359
 			// remember IP address of this client for -U option
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9360
 			ptpClock->LastSlaveAddr = ptpClock->netPath.lastRecvAddr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9361
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9362
-					
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9363
+			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9364
 			issueDelayResp(time,&ptpClock->delayReqHeader,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9365
-				       rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9366
+					rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9367
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9368
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9369
 		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9370
 			DBG("do unrecognized state2\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9371
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9372
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9373
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9374
 	} else /* (Peer to Peer mode) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9375
 		ERROR("Delay messages are ignored in Peer to Peer mode\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9376
@@ -1108,16 +1292,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9377
 			if ((memcmp(ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9378
 				    header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9379
 				    CLOCK_IDENTITY_LENGTH) == 0 ) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9380
-			    (ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9381
+			    (ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9382
 			     header->sourcePortIdentity.portNumber))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9383
 				isFromCurrentParent = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9384
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9385
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9386
 			if ((memcmp(ptpClock->portIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9387
 				    ptpClock->msgTmp.resp.requestingPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9388
 				    CLOCK_IDENTITY_LENGTH) == 0) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9389
-			    ((ptpClock->sentDelayReqSequenceId - 1)== 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9390
+			    ((UInteger16)(ptpClock->sentDelayReqSequenceId - 1)==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9391
 			     header->sequenceId) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9392
-			    (ptpClock->portIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9393
+			    (ptpClock->portIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9394
 			     ptpClock->msgTmp.resp.requestingPortIdentity.portNumber)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9395
 			    && isFromCurrentParent) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9396
 				DBG("==> Handle DelayResp (%d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9397
@@ -1131,15 +1315,15 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9398
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9399
 				toInternalTime(&requestReceiptTimestamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9400
 					       &ptpClock->msgTmp.resp.receiveTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9401
-				ptpClock->delay_req_receive_time.seconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9402
+				ptpClock->delay_req_receive_time.seconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9403
 					requestReceiptTimestamp.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9404
-				ptpClock->delay_req_receive_time.nanoseconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9405
+				ptpClock->delay_req_receive_time.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9406
 					requestReceiptTimestamp.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9407
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9408
 				integer64_to_internalTime(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9409
 					header->correctionfield,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9410
 					&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9411
-				
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9412
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9413
 				/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9414
 					send_time = delay_req_send_time (received as CMSG in handleEvent)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9415
 					recv_time = requestReceiptTimestamp (received inside delayResp)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9416
@@ -1150,7 +1334,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9417
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9418
 				if (ptpClock->waiting_for_first_delayresp) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9419
 					ptpClock->waiting_for_first_delayresp = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9420
-					NOTICE("  received first DelayResp from Master\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9421
+					NOTICE(" received first DelayResp from Master\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9422
 				}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9423
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9424
 				if (rtOpts->ignore_delayreq_interval_master == 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9425
@@ -1160,18 +1344,19 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9426
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9427
 					/* Accept new DelayReq value from the Master */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9428
 					if (ptpClock->logMinDelayReqInterval != header->logMessageInterval) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9429
-						NOTICE("  received new DelayReq frequency %d from Master (was: %d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9430
+						NOTICE(" received new DelayReq frequency %d from Master (was: %d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9431
 							 header->logMessageInterval, ptpClock->logMinDelayReqInterval );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9432
 					}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9433
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9434
 					// collect new value indicated from the Master
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9435
 					ptpClock->logMinDelayReqInterval = header->logMessageInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9436
-					
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9437
+					ptpClock->minDelayReqInterval = pow(2, header->logMessageInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9438
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9439
 					/* FIXME: the actual rearming of this timer with the new value only happens later in doState()/issueDelayReq() */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9440
 				} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9441
-					if (ptpClock->logMinDelayReqInterval != rtOpts->subsequent_delayreq) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9442
+					if (ptpClock->minDelayReqInterval != rtOpts->subsequent_delayreq) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9443
 						NOTICE("  received new DelayReq frequency %d from command line (was: %d)\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9444
-							rtOpts->subsequent_delayreq, ptpClock->logMinDelayReqInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9445
+							rtOpts->subsequent_delayreq, ptpClock->minDelayReqInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9446
 					}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9447
 					ptpClock->logMinDelayReqInterval = rtOpts->subsequent_delayreq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9448
 				}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9449
@@ -1187,9 +1372,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9450
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9451
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9452
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9453
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9454
-handlePDelayReq(MsgHeader *header, Octet *msgIbuf, ssize_t length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9455
-		TimeInternal *time, Boolean isFromSelf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9456
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9457
+handlePDelayReq(MsgHeader *header, Octet *msgIbuf, ssize_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9458
+		TimeInternal *time, Boolean isFromSelf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9459
 		RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9460
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9461
 	if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9462
@@ -1201,7 +1386,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9463
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9464
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9465
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9466
-		switch (ptpClock->portState ) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9467
+		switch(ptpClock->portState ) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9468
 		case PTP_INITIALIZING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9469
 		case PTP_FAULTY:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9470
 		case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9471
@@ -1222,7 +1407,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9472
 					time->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9473
 				ptpClock->pdelay_req_send_time.nanoseconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9474
 					time->nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9475
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9476
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9477
 				/*Add latency*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9478
 				addTime(&ptpClock->pdelay_req_send_time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9479
 					&ptpClock->pdelay_req_send_time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9480
@@ -1230,33 +1415,33 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9481
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9482
 			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9483
 				msgUnpackHeader(ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9484
-						&ptpClock->PdelayReqHeader);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9485
-				issuePDelayResp(time, header, rtOpts, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9486
-						ptpClock);	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9487
+					&ptpClock->PdelayReqHeader);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9488
+				issuePDelayResp(time, header, rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9489
+					ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9490
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9491
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9492
-		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9493
-			DBG("do unrecognized state3\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9494
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9495
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9496
-	} else /* (End to End mode..) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9497
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9498
+      DBG("do unrecognized state3\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9499
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9500
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9501
+  } else /* (End to End mode..) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9502
 		ERROR("Peer Delay messages are disregarded in End to End "
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9503
 		      "mode \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9504
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9505
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9506
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9507
 handlePDelayResp(MsgHeader *header, Octet *msgIbuf, TimeInternal *time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9508
-		 ssize_t length, Boolean isFromSelf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9509
+		 ssize_t length, Boolean isFromSelf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9510
 		 RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9511
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9512
 	if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9513
 		/* Boolean isFromCurrentParent = FALSE; NOTE: This is never used in this function */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9514
 		TimeInternal requestReceiptTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9515
 		TimeInternal correctionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9516
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9517
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9518
 		DBGV("PdelayResp message received : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9519
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9520
-		if (length < PDELAY_RESP_LENGTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9521
+		if (length < PDELAY_RESP_LENGTH)	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9522
 			ERROR("short PDelayResp message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9523
 			toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9524
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9525
@@ -1276,25 +1461,29 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9526
 			if (ptpClock->twoStepFlag && isFromSelf) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9527
 				addTime(time,time,&rtOpts->outboundLatency);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9528
 				issuePDelayRespFollowUp(time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9529
-							&ptpClock->PdelayReqHeader,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9530
-							rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9531
+						&ptpClock->PdelayReqHeader,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9532
+						rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9533
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9534
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9535
 			msgUnpackPDelayResp(ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9536
 					    &ptpClock->msgTmp.presp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9537
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9538
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9539
 #if 0  /* NOTE: This is never used in this function. Should it? */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9540
 			isFromCurrentParent = !memcmp(ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9541
-						      header->sourcePortIdentity.clockIdentity,CLOCK_IDENTITY_LENGTH) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9542
-				(ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9543
+						      header->sourcePortIdentity.clockIdentity,CLOCK_IDENTITY_LENGTH) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9544
+				(ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9545
 				 header->sourcePortIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9546
-#endif	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9547
-			if (!((ptpClock->sentPDelayReqSequenceId == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9548
-			       header->sequenceId) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9549
+#endif  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9550
+      /* TODO Not convinced that we will detect scenario where peer delay was transmitted but
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9551
+       * the retrieval of the timestamp failed. In theory, we should reject the response packet
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9552
+       * here because the sequence number doesn't match
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9553
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9554
+			if (!((ptpClock->sentPDelayReqSequenceId ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9555
+			       header->sequenceId) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9556
 			      (!memcmp(ptpClock->portIdentity.clockIdentity,ptpClock->msgTmp.presp.requestingPortIdentity.clockIdentity,CLOCK_IDENTITY_LENGTH))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9557
 				 && ( ptpClock->portIdentity.portNumber == ptpClock->msgTmp.presp.requestingPortIdentity.portNumber)))	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9558
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9559
-				/* Two Step Clock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9560
+                                /* Two Step Clock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9561
 				if ((header->flagField[0] & PTP_TWO_STEP) == PTP_TWO_STEP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9562
 					/*Store t4 (Fig 35)*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9563
 					ptpClock->pdelay_resp_receive_time.seconds = time->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9564
@@ -1304,7 +1493,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9565
 						       &ptpClock->msgTmp.presp.requestReceiptTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9566
 					ptpClock->pdelay_req_receive_time.seconds = requestReceiptTimestamp.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9567
 					ptpClock->pdelay_req_receive_time.nanoseconds = requestReceiptTimestamp.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9568
-					
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9569
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9570
 					integer64_to_internalTime(header->correctionfield,&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9571
 					ptpClock->lastPdelayRespCorrectionField.seconds = correctionField.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9572
 					ptpClock->lastPdelayRespCorrectionField.nanoseconds = correctionField.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9573
@@ -1314,7 +1503,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9574
 					/*Store t4 (Fig 35)*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9575
 					ptpClock->pdelay_resp_receive_time.seconds = time->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9576
 					ptpClock->pdelay_resp_receive_time.nanoseconds = time->nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9577
-					
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9578
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9579
 					integer64_to_internalTime(header->correctionfield,&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9580
 					updatePeerDelay (&ptpClock->owd_filt,rtOpts,ptpClock,&correctionField,FALSE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9581
 					break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9582
@@ -1337,23 +1526,23 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9583
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9584
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9585
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9586
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9587
-handlePDelayRespFollowUp(MsgHeader *header, Octet *msgIbuf, ssize_t length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9588
-			 Boolean isFromSelf, RunTimeOpts *rtOpts, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9589
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9590
+handlePDelayRespFollowUp(MsgHeader *header, Octet *msgIbuf, ssize_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9591
+			 Boolean isFromSelf, RunTimeOpts *rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9592
 			 PtpClock *ptpClock){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9593
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9594
 	if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9595
 		TimeInternal responseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9596
 		TimeInternal correctionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9597
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9598
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9599
 		DBGV("PdelayRespfollowup message received : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9600
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9601
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9602
 		if(length < PDELAY_RESP_FOLLOW_UP_LENGTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9603
 			ERROR("short PDelayRespfollowup message\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9604
 			toState(PTP_FAULTY, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9605
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9606
-		}	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9607
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9608
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9609
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9610
 		switch(ptpClock->portState) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9611
 		case PTP_INITIALIZING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9612
 		case PTP_FAULTY:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9613
@@ -1361,29 +1550,29 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9614
 		case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9615
 			DBGV("HandlePdelayResp : disregard\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9616
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9617
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9618
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9619
 		case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9620
 		case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9621
 			if ((header->sequenceId == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9622
-			    ptpClock->sentPDelayReqSequenceId-1) && (header->sequenceId == ptpClock->recvPDelayRespSequenceId)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9623
+			      (UInteger16)(ptpClock->sentPDelayReqSequenceId-1)) && (header->sequenceId == ptpClock->recvPDelayRespSequenceId)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9624
 				msgUnpackPDelayRespFollowUp(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9625
-					ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9626
-					&ptpClock->msgTmp.prespfollow);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9627
+						ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9628
+						&ptpClock->msgTmp.prespfollow);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9629
 				toInternalTime(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9630
-					&responseOriginTimestamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9631
-					&ptpClock->msgTmp.prespfollow.responseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9632
-				ptpClock->pdelay_resp_send_time.seconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9633
-					responseOriginTimestamp.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9634
-				ptpClock->pdelay_resp_send_time.nanoseconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9635
-					responseOriginTimestamp.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9636
+						&responseOriginTimestamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9637
+						&ptpClock->msgTmp.prespfollow.responseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9638
+				 ptpClock->pdelay_resp_send_time.seconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9639
+					 responseOriginTimestamp.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9640
+				 ptpClock->pdelay_resp_send_time.nanoseconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9641
+					 responseOriginTimestamp.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9642
 				integer64_to_internalTime(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9643
-					ptpClock->msgTmpHeader.correctionfield,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9644
-					&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9645
+						ptpClock->msgTmpHeader.correctionfield,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9646
+						&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9647
 				addTime(&correctionField,&correctionField,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9648
-					&ptpClock->lastPdelayRespCorrectionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9649
+						&ptpClock->lastPdelayRespCorrectionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9650
 				updatePeerDelay (&ptpClock->owd_filt,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9651
-						 rtOpts, ptpClock,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9652
-						 &correctionField,TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9653
+						rtOpts, ptpClock,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9654
+						&correctionField,TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9655
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9656
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9657
 		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9658
@@ -1395,26 +1584,26 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9659
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9660
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9661
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9662
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9663
-handleManagement(MsgHeader *header, Octet *msgIbuf, ssize_t length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9664
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9665
+handleManagement(MsgHeader *header, Octet *msgIbuf, ssize_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9666
 		 Boolean isFromSelf, RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9667
 {}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9668
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9669
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9670
-handleSignaling(MsgHeader *header, Octet *msgIbuf, ssize_t length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9671
-		     Boolean isFromSelf, RunTimeOpts *rtOpts, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9672
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9673
+handleSignaling(MsgHeader *header, Octet *msgIbuf, ssize_t length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9674
+		     Boolean isFromSelf, RunTimeOpts *rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9675
 		     PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9676
 {}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9677
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9678
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9679
 /*Pack and send on general multicast ip adress an Announce message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9680
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9681
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9682
 issueAnnounce(RunTimeOpts *rtOpts,PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9683
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9684
 	msgPackAnnounce(ptpClock->msgObuf,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9685
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9686
-	if (!netSendGeneral(ptpClock->msgObuf,ANNOUNCE_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9687
-			    &ptpClock->netPath, 0)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9688
+	if (netSendGeneral(ptpClock->msgObuf,ANNOUNCE_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9689
+			    &ptpClock->netPath, 0) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9690
 		toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9691
 		DBGV("Announce message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9692
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9693
@@ -1429,20 +1618,30 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9694
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9695
 issueSync(RunTimeOpts *rtOpts,PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9696
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9697
-	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9698
-	TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9699
-	getTime(&internalTime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9700
-	fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9701
+  Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9702
+  TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9703
+  int rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9704
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9705
+  getTime(&internalTime, rtOpts->time_mode, ptpClock); 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9706
+  fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9707
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9708
-	msgPackSync(ptpClock->msgObuf,&originTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9709
+  msgPackSync(ptpClock->msgObuf,&originTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9710
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9711
-	if (!netSendEvent(ptpClock->msgObuf,SYNC_LENGTH,&ptpClock->netPath, 0)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9712
-		toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9713
-		DBGV("Sync message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9714
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9715
-		DBGV("Sync MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9716
-		ptpClock->sentSyncSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9717
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9718
+  rc = netSendEvent(ptpClock->msgObuf,SYNC_LENGTH,ptpClock,rtOpts, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9719
+  if (rc != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9720
+    /* If we failed because we didn't retrieve the transmit timestamp this is 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9721
+     * most likely because we've lost the network connection. PTPD will recover
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9722
+     * if the network connection is reestablished. In this case don't go into the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9723
+     * faulty state as this does a complete re-initialisation.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9724
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9725
+    if (rc != ENOTIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9726
+      toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9727
+      DBGV("Sync message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9728
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9729
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9730
+    DBGV("Sync MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9731
+    ptpClock->sentSyncSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9732
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9733
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9734
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9735
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9736
@@ -1452,11 +1651,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9737
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9738
 	Timestamp preciseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9739
 	fromInternalTime(time,&preciseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9740
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9741
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9742
 	msgPackFollowUp(ptpClock->msgObuf,&preciseOriginTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9743
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9744
-	if (!netSendGeneral(ptpClock->msgObuf,FOLLOW_UP_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9745
-			    &ptpClock->netPath, 0)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9746
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9747
+	if (netSendGeneral(ptpClock->msgObuf,FOLLOW_UP_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9748
+				&ptpClock->netPath, 0) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9749
 		toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9750
 		DBGV("FollowUp message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9751
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9752
@@ -1471,11 +1670,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9753
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9754
 	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9755
 	TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9756
+	int rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9757
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9758
 	DBG("==> Issue DelayReq (%d)\n", ptpClock->sentDelayReqSequenceId );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9759
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9760
 	/* call GTOD. This time is later replaced on handle_delayreq, to get the actual send timestamp from the OS */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9761
-	getTime(&internalTime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9762
+	getTime(&internalTime, rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9763
 	fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9764
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9765
 	// uses current sentDelayReqSequenceId
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9766
@@ -1488,61 +1688,89 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9767
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9768
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9769
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9770
-	if (!netSendEvent(ptpClock->msgObuf,DELAY_REQ_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9771
-			  &ptpClock->netPath, dst)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9772
-		toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9773
-		DBGV("delayReq message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9774
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9775
-		DBGV("DelayReq MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9776
-		ptpClock->sentDelayReqSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9777
+	rc = netSendEvent(ptpClock->msgObuf, DELAY_REQ_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9778
+			ptpClock,rtOpts, dst);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9779
+  if (rc != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9780
+    /* If we failed because we didn't retrieve the transmit timestamp this is 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9781
+     * most likely because we've lost the network connection. PTPD will recover
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9782
+     * if the network connection is reestablished. In this case don't go into the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9783
+     * faulty state as this does a complete re-initialisation.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9784
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9785
+    if (rc != ENOTIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9786
+      toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9787
+      DBGV("delayReq message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9788
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9789
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9790
+    DBGV("DelayReq MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9791
+    ptpClock->sentDelayReqSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9792
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9793
 		/* From now on, we will only accept delayreq and delayresp of (sentDelayReqSequenceId - 1) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9794
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9795
-		/* Explicitelly re-arm timer for sending the next delayReq */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9796
-		timerStart_random(DELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9797
-		   pow(2,ptpClock->logMinDelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9798
-		   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9799
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9800
+    /* Explicitelly re-arm timer for sending the next delayReq */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9801
+    timerStart_random(DELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9802
+		    ptpClock->minDelayReqInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9803
+                       ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9804
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9805
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9806
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9807
 /*Pack and send on event multicast ip adress a PDelayReq message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9808
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9809
 issuePDelayReq(RunTimeOpts *rtOpts,PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9810
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9811
-	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9812
-	TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9813
-	getTime(&internalTime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9814
-	fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9815
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9816
-	msgPackPDelayReq(ptpClock->msgObuf,&originTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9817
+  Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9818
+  TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9819
+  int rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9820
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9821
+  getTime(&internalTime, rtOpts->time_mode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9822
+  fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9823
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9824
-	if (!netSendPeerEvent(ptpClock->msgObuf,PDELAY_REQ_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9825
-			      &ptpClock->netPath)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9826
-		toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9827
-		DBGV("PdelayReq message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9828
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9829
-		DBGV("PDelayReq MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9830
-		ptpClock->sentPDelayReqSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9831
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9832
+  msgPackPDelayReq(ptpClock->msgObuf,&originTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9833
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9834
+  rc = netSendPeerEvent(ptpClock->msgObuf,PDELAY_REQ_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9835
+		  ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9836
+  if (rc != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9837
+    /* If we failed because we didn't retrieve the transmit timestamp this is 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9838
+     * most likely because we've lost the network connection. PTPD will recover
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9839
+     * if the network connection is reestablished. In this case don't go into the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9840
+     * faulty state as this does a complete re-initialisation.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9841
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9842
+    if (rc != ENOTIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9843
+      toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9844
+      DBGV("PdelayReq message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9845
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9846
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9847
+    DBGV("PDelayReq MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9848
+    ptpClock->sentPDelayReqSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9849
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9850
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9851
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9852
 /*Pack and send on event multicast ip adress a PDelayResp message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9853
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9854
 issuePDelayResp(TimeInternal *time,MsgHeader *header,RunTimeOpts *rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9855
-		PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9856
+                PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9857
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9858
-	Timestamp requestReceiptTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9859
-	fromInternalTime(time,&requestReceiptTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9860
-	msgPackPDelayResp(ptpClock->msgObuf,header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9861
-			  &requestReceiptTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9862
+  Timestamp requestReceiptTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9863
+  fromInternalTime(time,&requestReceiptTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9864
+  int rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9865
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9866
+  msgPackPDelayResp(ptpClock->msgObuf,header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9867
+		  &requestReceiptTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9868
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9869
-	if (!netSendPeerEvent(ptpClock->msgObuf,PDELAY_RESP_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9870
-			      &ptpClock->netPath)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9871
-		toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9872
-		DBGV("PdelayResp message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9873
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9874
-		DBGV("PDelayResp MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9875
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9876
+  rc = netSendPeerEvent(ptpClock->msgObuf,PDELAY_RESP_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9877
+		  ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9878
+  if (rc != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9879
+    /* If we failed because we didn't retrieve the transmit timestamp this is 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9880
+     * most likely because we've lost the network connection. PTPD will recover
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9881
+     * if the network connection is reestablished. In this case don't go into the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9882
+     * faulty state as this does a complete re-initialisation.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9883
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9884
+    if (rc != ENOTIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9885
+      toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9886
+      DBGV("PdelayResp message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9887
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9888
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9889
+    DBGV("PDelayResp MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9890
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9891
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9892
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9893
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9894
@@ -1562,8 +1790,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9895
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9896
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9897
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9898
-	if (!netSendGeneral(ptpClock->msgObuf,PDELAY_RESP_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9899
-			    &ptpClock->netPath, dst)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9900
+	if (netSendGeneral(ptpClock->msgObuf,PDELAY_RESP_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9901
+				&ptpClock->netPath, dst) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9902
 		toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9903
 		DBGV("delayResp message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9904
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9905
@@ -1574,73 +1802,73 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9906
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9907
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9908
 issuePDelayRespFollowUp(TimeInternal *time, MsgHeader *header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9909
-			     RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9910
+                             RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9911
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9912
-	Timestamp responseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9913
-	fromInternalTime(time,&responseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9914
+  Timestamp responseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9915
+  fromInternalTime(time,&responseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9916
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9917
-	msgPackPDelayRespFollowUp(ptpClock->msgObuf,header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9918
-				  &responseOriginTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9919
+  msgPackPDelayRespFollowUp(ptpClock->msgObuf,header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9920
+		  &responseOriginTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9921
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9922
-	if (!netSendPeerGeneral(ptpClock->msgObuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9923
-				PDELAY_RESP_FOLLOW_UP_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9924
-				&ptpClock->netPath)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9925
-		toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9926
-		DBGV("PdelayRespFollowUp message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9927
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9928
-		DBGV("PDelayRespFollowUp MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9929
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9930
+  if (netSendPeerGeneral(ptpClock->msgObuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9931
+			  PDELAY_RESP_FOLLOW_UP_LENGTH,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9932
+			  &ptpClock->netPath) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9933
+    toState(PTP_FAULTY,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9934
+    DBGV("PdelayRespFollowUp message can't be sent -> FAULTY state \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9935
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9936
+    DBGV("PDelayRespFollowUp MSG sent ! \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9937
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9938
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9939
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9940
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9941
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9942
 issueManagement(MsgHeader *header,MsgManagement *manage,RunTimeOpts *rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9943
 		PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9944
 {}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9945
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9946
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9947
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9948
 addForeign(Octet *buf,MsgHeader *header,PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9949
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9950
 	int i,j;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9951
 	Boolean found = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9952
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9953
 	j = ptpClock->foreign_record_best;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9954
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9955
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9956
 	/*Check if Foreign master is already known*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9957
 	for (i=0;i<ptpClock->number_foreign_records;i++) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9958
 		if (!memcmp(header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9959
 			    ptpClock->foreign[j].foreignMasterPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9960
-			    CLOCK_IDENTITY_LENGTH) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9961
-		    (header->sourcePortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9962
+			    CLOCK_IDENTITY_LENGTH) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9963
+		    (header->sourcePortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9964
 		     ptpClock->foreign[j].foreignMasterPortIdentity.portNumber))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9965
 		{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9966
 			/*Foreign Master is already in Foreignmaster data set*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9967
-			ptpClock->foreign[j].foreignMasterAnnounceMessages++; 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9968
+			ptpClock->foreign[j].foreignMasterAnnounceMessages++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9969
 			found = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9970
 			DBGV("addForeign : AnnounceMessage incremented \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9971
 			msgUnpackHeader(buf,&ptpClock->foreign[j].header);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9972
 			msgUnpackAnnounce(buf,&ptpClock->foreign[j].announce);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9973
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9974
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9975
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9976
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9977
 		j = (j+1)%ptpClock->number_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9978
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9979
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9980
 	/*New Foreign Master*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9981
 	if (!found) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9982
-		if (ptpClock->number_foreign_records < 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9983
+		if (ptpClock->number_foreign_records <
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9984
 		    ptpClock->max_foreign_records) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9985
 			ptpClock->number_foreign_records++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9986
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9987
 		j = ptpClock->foreign_record_i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9988
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9989
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9990
 		/*Copy new foreign master data set from Announce message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9991
 		memcpy(ptpClock->foreign[j].foreignMasterPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9992
 		       header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9993
 		       CLOCK_IDENTITY_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9994
-		ptpClock->foreign[j].foreignMasterPortIdentity.portNumber = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9995
+		ptpClock->foreign[j].foreignMasterPortIdentity.portNumber =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9996
 			header->sourcePortIdentity.portNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9997
 		ptpClock->foreign[j].foreignMasterAnnounceMessages = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9998
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9999
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10000
 		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10001
 		 * header and announce field of each Foreign Master are
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10002
 		 * usefull to run Best Master Clock Algorithm
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10003
@@ -1648,9 +1876,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10004
 		msgUnpackHeader(buf,&ptpClock->foreign[j].header);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10005
 		msgUnpackAnnounce(buf,&ptpClock->foreign[j].announce);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10006
 		DBGV("New foreign Master added \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10007
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10008
-		ptpClock->foreign_record_i = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10009
-			(ptpClock->foreign_record_i+1) % 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10010
-			ptpClock->max_foreign_records;	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10011
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10012
+		ptpClock->foreign_record_i =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10013
+			(ptpClock->foreign_record_i+1) %
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10014
+			ptpClock->max_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10015
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10016
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10017
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/ptpd.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10018
--- a/src/ptpd.c	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10019
+++ b/src/ptpd.c	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10020
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10021
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10022
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10023
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10024
  * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10025
  *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10026
  * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10027
@@ -57,48 +59,54 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10028
 int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10029
 main(int argc, char **argv)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10030
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10031
-	PtpClock *ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10032
-	Integer16 ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10033
+    PtpClock *ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10034
+    Integer16 ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10035
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10036
-	/* initialize run-time options to default values */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10037
-	rtOpts.announceInterval = DEFAULT_ANNOUNCE_INTERVAL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10038
-	rtOpts.syncInterval = DEFAULT_SYNC_INTERVAL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10039
-	rtOpts.clockQuality.clockAccuracy = DEFAULT_CLOCK_ACCURACY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10040
-	rtOpts.clockQuality.clockClass = DEFAULT_CLOCK_CLASS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10041
-	rtOpts.clockQuality.offsetScaledLogVariance = DEFAULT_CLOCK_VARIANCE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10042
-	rtOpts.priority1 = DEFAULT_PRIORITY1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10043
-	rtOpts.priority2 = DEFAULT_PRIORITY2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10044
-	rtOpts.domainNumber = DEFAULT_DOMAIN_NUMBER;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10045
+    /* initialize run-time options to default values */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10046
+    rtOpts.announceInterval = DEFAULT_ANNOUNCE_INTERVAL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10047
+    rtOpts.syncInterval = DEFAULT_SYNC_INTERVAL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10048
+    rtOpts.clockQuality.clockAccuracy = DEFAULT_CLOCK_ACCURACY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10049
+    rtOpts.clockQuality.clockClass = DEFAULT_CLOCK_CLASS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10050
+    rtOpts.clockQuality.offsetScaledLogVariance = DEFAULT_CLOCK_VARIANCE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10051
+    rtOpts.priority1 = DEFAULT_PRIORITY1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10052
+    rtOpts.priority2 = DEFAULT_PRIORITY2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10053
+    rtOpts.domainNumber = DEFAULT_DOMAIN_NUMBER;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10054
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10055
 	rtOpts.mcast_group_Number = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10056
 	rtOpts.do_hybrid_mode = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10057
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10058
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10059
 	// rtOpts.slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10060
-	rtOpts.currentUtcOffset = DEFAULT_UTC_OFFSET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10061
-	rtOpts.ifaceName[0] = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10062
-	rtOpts.do_unicast_mode = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10063
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10064
-	rtOpts.noAdjust = NO_ADJUST;  // false
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10065
-	// rtOpts.displayStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10066
-	// rtOpts.csvStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10067
-	/* Deep display of all packets seen by the daemon */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10068
-	rtOpts.displayPackets = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10069
-	// rtOpts.unicastAddress
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10070
-	rtOpts.ap = DEFAULT_AP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10071
-	rtOpts.ai = DEFAULT_AI;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10072
-	rtOpts.s = DEFAULT_DELAY_S;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10073
-	rtOpts.inboundLatency.nanoseconds = DEFAULT_INBOUND_LATENCY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10074
-	rtOpts.outboundLatency.nanoseconds = DEFAULT_OUTBOUND_LATENCY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10075
-	rtOpts.max_foreign_records = DEFAULT_MAX_FOREIGN_RECORDS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10076
-	// rtOpts.ethernet_mode = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10077
-	// rtOpts.offset_first_updated = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10078
-	// rtOpts.file[0] = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10079
-	rtOpts.logFd = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10080
-	rtOpts.recordFP = NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10081
-	rtOpts.do_log_to_file = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10082
-	rtOpts.do_record_quality_file = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10083
-	rtOpts.nonDaemon = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10084
+    rtOpts.currentUtcOffset = DEFAULT_UTC_OFFSET;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10085
+    rtOpts.currentUtcOffsetValid = DEFAULT_UTC_VALID;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10086
+    rtOpts.ifaceName[0] = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10087
+    rtOpts.do_unicast_mode = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10088
+    rtOpts.resetClockStartupOnly = DEFAULT_RESET_CLOCK_STARTUP_ONLY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10089
+    rtOpts.maxReset = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10090
+    rtOpts.maxDelay.seconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10091
+    rtOpts.maxDelay.nanoseconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10092
+    rtOpts.noAdjust = NO_ADJUST;	// false
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10093
+    // rtOpts.displayStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10094
+    rtOpts.verboseStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10095
+    // rtOpts.csvStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10096
+    /* Deep display of all packets seen by the daemon */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10097
+    rtOpts.displayPackets = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10098
+    // rtOpts.unicastAddress
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10099
+    rtOpts.ap = DEFAULT_AP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10100
+    rtOpts.ai = DEFAULT_AI;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10101
+    rtOpts.s = DEFAULT_DELAY_S;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10102
+    rtOpts.inboundLatency.nanoseconds = DEFAULT_INBOUND_LATENCY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10103
+    rtOpts.outboundLatency.nanoseconds = DEFAULT_OUTBOUND_LATENCY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10104
+    rtOpts.max_foreign_records = DEFAULT_MAX_FOREIGN_RECORDS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10105
+    rtOpts.ethernet_mode = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10106
+    // rtOpts.offset_first_updated = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10107
+    // rtOpts.file[0] = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10108
+    rtOpts.logFd = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10109
+    rtOpts.recordFP = NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10110
+    rtOpts.ignore_daemon_lock = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10111
+    rtOpts.do_log_to_file = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10112
+    rtOpts.do_record_quality_file = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10113
+    rtOpts.nonDaemon = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10114
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10115
 	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10116
 	 * defaults for new options
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10117
@@ -112,6 +120,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10118
 #ifdef RUNTIME_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10119
 	rtOpts.debug_level = LOG_INFO;			/* by default debug messages as disabled, but INFO messages and below are printed */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10120
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10121
+	rtOpts.time_mode = DEFAULT_SLAVE_TIME_MODE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10122
+	rtOpts.master_slave_mode = PTP_MODE_NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10123
+	rtOpts.system_time_update_interval = DEFAULT_SYSTEM_TIME_UPDATE_INTERVAL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10124
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10125
 	rtOpts.ttl = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10126
 	rtOpts.delayMechanism   = DEFAULT_DELAY_MECHANISM;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10127
@@ -121,20 +132,20 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10128
 	rtOpts.initial_delayreq = DEFAULT_DELAYREQ_INTERVAL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10129
 	rtOpts.subsequent_delayreq = DEFAULT_DELAYREQ_INTERVAL;      // this will be updated if -g is given
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10130
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10131
-	/* Initialize run time options with command line arguments */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10132
-	if (!(ptpClock = ptpdStartup(argc, argv, &ret, &rtOpts)))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10133
-		return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10134
+    /* Initialize run time options with command line arguments */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10135
+    if (!(ptpClock = ptpdStartup(argc, argv, &ret, &rtOpts)))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10136
+        return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10137
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10138
-	/* global variable for message(), please see comment on top of this file */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10139
-	G_ptpClock = ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10140
+    /* global variable for message(), please see comment on top of this file */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10141
+    G_ptpClock = ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10142
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10143
-	/* do the protocol engine */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10144
-	protocol(&rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10145
-	/* forever loop.. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10146
+    /* do the protocol engine */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10147
+    protocol(&rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10148
+    /* forever loop.. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10149
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10150
-	ptpdShutdown(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10151
+    ptpdShutdown(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10152
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10153
 	NOTIFY("self shutdown, probably due to an error\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10154
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10155
-	return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10156
+    return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10157
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10158
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/ptpd.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10159
--- a/src/ptpd.h	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10160
+++ b/src/ptpd.h	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10161
@@ -1,16 +1,47 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10162
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10163
+ * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10164
+ * Copyright (c) 2011-2012 Solarflare Communications Inc
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10165
+ * Copyright (c) 2009-2011 George V. Neville-Neil, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10166
+ *                         Martin Burnicki, Gael Mace, Alexandre Van Kempen
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10167
+ * Copyright (c) 2005-2008 Kendall Correll, Aidan Williams
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10168
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10169
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10170
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10171
+ * Redistribution and use in source and binary forms, with or without
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10172
+ * modification, are permitted provided that the following conditions are
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10173
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10174
+ * 1. Redistributions of source code must retain the above copyright notice,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10175
+ *    this list of conditions and the following disclaimer.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10176
+ * 2. Redistributions in binary form must reproduce the above copyright
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10177
+ *    notice, this list of conditions and the following disclaimer in the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10178
+ *    documentation and/or other materials provided with the distribution.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10179
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10180
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10181
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10182
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10183
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10184
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10185
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10186
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10187
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10188
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10189
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10190
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10191
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10192
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10193
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10194
  * @file   ptpd.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10195
  * @mainpage Ptpd v2 Documentation
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10196
- * @authors Martin Burnicki, Alexandre van Kempen, Steven Kreuzer, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10197
+ * @authors Martin Burnicki, Alexandre van Kempen, Steven Kreuzer,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10198
  *          George Neville-Neil
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10199
  * @version 2.0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10200
  * @date   Fri Aug 27 10:22:19 2010
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10201
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10202
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10203
  * @section implementation Implementation
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10204
  * PTTdV2 is not a full implementation of 1588 - 2008 standard.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10205
  * It is implemented only with use of Transparent Clock and Peer delay
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10206
  * mechanism, according to 802.1AS requierements.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10207
- * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10208
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10209
  * This header file includes all others headers.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10210
  * It defines functions which are not dependant of the operating system.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10211
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10212
@@ -31,7 +62,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10213
 #include <limits.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10214
 #include <netdb.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10215
 #include <sys/time.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10216
-#include <sys/resource.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10217
 #ifndef __APPLE__
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10218
 #include <sys/timex.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10219
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10220
@@ -50,6 +80,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10221
 #include "dep/datatypes_dep.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10222
 #include "datatypes.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10223
 #include "dep/ptpd_dep.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10224
+#ifdef	__sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10225
+#define TIME_BAD TIME_ERROR
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10226
+#include <sys/time.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10227
+#include <strings.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10228
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10229
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10230
 #define min(a,b)     (((a)<(b))?(a):(b))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10231
 #define max(a,b)     (((a)>(b))?(a):(b))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10232
@@ -61,10 +96,15 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10233
 /* arith.c */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10234
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10235
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10236
- * \brief Convert Integer64 into TimeInternal structure
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10237
+ * \brief Convert Integer64 with fractional ns into TimeInternal structure
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10238
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10239
 void integer64_to_internalTime(Integer64,TimeInternal*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10240
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10241
+ * \brief Convert TimeInternal structure to linear 64 bit number
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10242
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10243
+int64_t internalTime_to_scalar(TimeInternal*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10244
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10245
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10246
  * \brief Convert TimeInternal into Timestamp structure (defined by the spec)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10247
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10248
 void fromInternalTime(TimeInternal*,Timestamp*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10249
@@ -74,12 +114,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10250
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10251
 void toInternalTime(TimeInternal*,Timestamp*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10252
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10253
-void ts_to_InternalTime(struct timespec *, TimeInternal *);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10254
-void tv_to_InternalTime(struct timeval  *, TimeInternal *);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10255
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10256
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10257
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10258
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10259
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10260
  * \brief Use to normalize a TimeInternal structure
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10261
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10262
@@ -178,6 +212,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10263
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10264
 void clearTime(TimeInternal *time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10265
 int isTimeInternalNegative(const TimeInternal * p);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10266
+int log2IntegerSaturateAtZero(LongDouble number);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10267
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10268
 char *dump_TimeInternal(const TimeInternal * p);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10269
 char *dump_TimeInternal2(const char *st1, const TimeInternal * p1, const char *st2, const TimeInternal * p2);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10270
@@ -193,6 +228,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10271
 int is_Time_close(TimeInternal *x, TimeInternal *b, int nanos);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10272
 int isTimeInternalNegative(const TimeInternal * p);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10273
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10274
+float secondsToMidnight(void);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10275
+float getPauseBeforeMidnight(Integer8 announceInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10276
+float getPauseAfterMidnight(Integer8 announceInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10277
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10278
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10279
 int check_timestamp_is_fresh2(TimeInternal * timeA, TimeInternal * timeB);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10280
diff -r 3f1e7d35d0ab -r 821e8eadeaff src/ptpd2.8
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10281
--- a/src/ptpd2.8	Tue May 14 17:07:59 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10282
+++ b/src/ptpd2.8	Sun Oct 27 22:49:29 2013 -0700
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10283
@@ -1,10 +1,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10284
 .\" -*- nroff -*"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10285
-.TH ptpd2 8 "January, 2012" "version 2.2.0" "Precision Time Protocol daemon"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10286
+.\"
5007
0052258cbb9d PSARC 2015/428 Normalization of Solaris man page section numbers
Rich Burridge <rich.burridge@oracle.com>
parents: 4581
diff changeset
 10287
+.\" Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10288
+.\"
5007
0052258cbb9d PSARC 2015/428 Normalization of Solaris man page section numbers
Rich Burridge <rich.burridge@oracle.com>
parents: 4581
diff changeset
 10289
+.TH ptpd "8" "October, 2015" "version 2.2.0" "System Administration Commands"
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10290
 .SH NAME
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10291
-ptpd2 \- Precision Time Protocol daemon (1588-2008)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10292
+ptpd \- Precision Time Protocol daemon (1588-2008)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10293
 .SH SYNOPSIS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10294
-.B ptpd2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10295
-[?]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10296
+.B /usr/lib/inet/ptpd
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10297
+[-?]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10298
 [-B]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10299
 [-c]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10300
 [-C]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10301
@@ -22,9 +25,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10302
 [-a NUMBER,NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10303
 [-w NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10304
 [-b NAME]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10305
+[-K]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10306
 [-u ADDRESS]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10307
-[-I group]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10308
-[-U]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10309
 [-e]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10310
 [-h]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10311
 [-l NUMBER,NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10312
@@ -41,15 +43,15 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10313
 [-s NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10314
 [-p NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10315
 [-q NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10316
-[-G]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10317
 [-W]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10318
 [-Y NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10319
 [-L]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10320
 [-j]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10321
 .SH DESCRIPTION
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10322
-Implements the Precision Time Protocol (PTP) Version 2 as defined by the IEEE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10323
-1588-2008 standard. PTP was developed to provide very precise time
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10324
-coordination of LAN connected computers.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10325
+The ptpd program is a userland daemon that does very precise
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10326
+synchronization of system clocks of LAN connected systems.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10327
+It implements the Precision Time Protocol (PTP)  Version  2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10328
+as defined by the IEEE 1588-2008 standard.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10329
 .PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10330
 PTPd is a complete implementation of the IEEE 1588 v2 specification for a
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10331
 standard (ordinary) clock. PTPd has been tested with and is known
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10332
@@ -59,6 +61,81 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10333
 interoperable, and stable IEEE 1588 implementation.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10334
 .PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10335
 For more information, see http://ptpd.sourceforge.net/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10336
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10337
+ptpd in Solaris works over any Ethernet based data link.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10338
+It can also take advantage of PTP specific hardware found
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10339
+in certain NICs (Network Interface Card) for improved accuracy.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10340
+.SH SERVICE MANAGEMENT
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10341
+The operation of ptpd is managed as a service by the service
5007
0052258cbb9d PSARC 2015/428 Normalization of Solaris man page section numbers
Rich Burridge <rich.burridge@oracle.com>
parents: 4581
diff changeset
 10342
+management facility, smf(7), under the service identifier:
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10343
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10344
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10345
+  svc:/network/ptp:default
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10346
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10347
+.aj
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10348
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10349
+Administrative actions on this service, such as  enabling,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10350
+disabling,  or  requesting  restart,  can be performed using
5007
0052258cbb9d PSARC 2015/428 Normalization of Solaris man page section numbers
Rich Burridge <rich.burridge@oracle.com>
parents: 4581
diff changeset
 10351
+svcadm(8). The service's status can be  queried  using  the
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10352
+svcs(1) command.  There are several options controlled by
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10353
+services properties which can be set by the system
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10354
+administrator. The available options can be listed by
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10355
+executing the following command:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10356
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10357
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10358
+  svccfg -s svc:/network/ptp:default listprop config
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10359
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10360
+.aj
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10361
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10362
+Each of these properties can be set using this command:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10363
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10364
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10365
+  svccfg -s svc:/network/ptp:default setprop <propname> = <value>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10366
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10367
+.aj
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10368
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10369
+
5007
0052258cbb9d PSARC 2015/428 Normalization of Solaris man page section numbers
Rich Burridge <rich.burridge@oracle.com>
parents: 4581
diff changeset
 10370
+See svcadm(8) and svccfg(8).
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10371
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10372
+Available options and their meaning are as follows:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10373
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10374
+.BR config/listen_ifname
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10375
+A string specifying the name of the link to which ptp daemon
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10376
+should bind to. By default, ptp daemon picks the first usable
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10377
+link with an IP address configured.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10378
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10379
+.BR config/node_type
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10380
+A string specifying the working mode of the ptpd. It can
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10381
+be either "slave" or "master". Default value is "slave".
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10382
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10383
+.BR config/use_hw
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10384
+A boolean which when true, instructs ptpd to take advantage
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10385
+of the PTP hardware assist in the NIC. If set to true and
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10386
+NIC does not have PTP hardware assist, the ptpd will exit.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10387
+Default is false. See EXAMPLES on how to recognize a NIC
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10388
+with PTP hardware assist.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10389
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10390
+.BR config/domain
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10391
+An integer specifying PTP domain as defined in the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10392
+IEEE specification.  It can take values from 0 to 3
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10393
+both inclusive. Default value is 0.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10394
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10395
+.BR config/announce_interval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10396
+An integer specifying the interval in seconds between
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10397
+successive PTP ANNOUNCE messages sent by PTP master.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10398
+Default value is 2.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10399
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10400
+.BR config/sync_interval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10401
+An integer specifying the interval between successive
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10402
+PTP SYNC messages sent by PTP master. Default value is 1.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10403
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10404
+.BR config/logfile
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10405
+A string specifying the location of the file  used  for
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10406
+log output. The default is /var/log/ptp.log
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10407
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10408
+.BR  config/other_options
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10409
+A string specifying other command line options mentioned
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10410
+below to be passed to svc:/network/ptp:default at startup.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10411
 .SH OPTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10412
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10413
 .B \-?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10414
@@ -115,15 +192,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10415
 .B \-b NAME
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10416
 bind PTP to network interface NAME
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10417
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10418
+.B \-K
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10419
+use PTP hardware in network interface. Exit if
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10420
+PTP hardware is not usable or available.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10421
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10422
 .B \-u ADDRESS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10423
 also send uni-cast to ADDRESS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10424
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10425
-.B \-I
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10426
-multicast group for PTP_EXPERIMENTAL mode
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10427
-.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10428
-.B \-U
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10429
-enable hybrid mode which uses both unicast and multicast, requires PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10430
-.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10431
 .B \-e
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10432
 run in ethernet mode (currently unimplemented)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10433
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10434
@@ -172,20 +247,86 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10435
 .B \-q NUMBER
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10436
 specify priority2 attribute
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10437
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10438
-.B \-G
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10439
-run as master with connection to NTP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10440
-.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10441
 .B \-W
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10442
-run as master without NTP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10443
+run as master only
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10444
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10445
 .B \-Y NUMBER
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10446
 set an initial delay request value
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10447
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10448
 .B \-L
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10449
-enable running multiple ptpd2 daemons
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10450
+enable running multiple ptpd daemons
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10451
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10452
 .B \-j
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10453
 turn off IGMP refresh messages
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10454
+.SH EXAMPLES
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10455
+Example 1 Identify the presence of PTP hardware assist. If the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10456
+ptp property is equal to 1, PTP hardware assist can
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10457
+be enabled for that NIC through the config/use_hw
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10458
+property.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10459
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10460
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10461
+#dladm show-linkprop -p ptp
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10462
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10463
+LINK   PROPERTY   PERM VALUE   EFFECTIVE  DEFAULT   POSSIBLE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10464
+net1     ptp        r-    0        0          0          0,1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10465
+net2     ptp        r-    0        0          0          0,1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10466
+net0     ptp        r-    0        0          0          0,1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10467
+net3     ptp        r-    0        0          0          0,1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10468
+net7     ptp        r-    0        0          0          0,1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10469
+net8     ptp        r-    1        1          0          0,1
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10470
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10471
+In the example above, the link net8 supports ptp in hardware.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10472
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10473
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10474
+Example 2 Starting the ptp service in slave mode.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10475
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10476
+First bind ptp service to net8 -
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10477
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10478
+#svccfg -s svc:/network/ptp:default \\
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10479
+    setprop config/listen_ifname=net8
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10480
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10481
+Then set the mode to "slave" -
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10482
+#svccfg -s svc:/network/ptp:default \\
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10483
+    setprop config/node_type=slave
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10484
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10485
+Enable the service -
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10486
+#svcadm enable svc:/network/ptp:default
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10487
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10488
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10489
+Starting the service in slave mode will allow the ptp
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10490
+service to set system time to an external clock (PTP master)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10491
+on the network connected to interface net8.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10492
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10493
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10494
+Example 3 Force ptp service to use PTP hardware in the NIC.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10495
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10496
+First configure the service to use the PTP hardware -
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10497
+#svccfg -s svc:/network/ptp:default \\
4581
021d774e32e1 21020796 Add "RO" to res1 field of auth_attr.d files in ptp
Prakash Jalan <Prakash.Jalan@oracle.com>
parents: 2214
diff changeset
 10498
+    setprop config/use_hw=true
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10499
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10500
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10501
+Then refresh the service, assuming it is enabled and online
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10502
+already -
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10503
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10504
+#svcadm refresh svc:/network/ptp:default
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10505
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10506
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10507
+.SH NOTES
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10508
+Be careful when logging is enabled. In default setting it can
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10509
+generate upto 40 MB of data in a window of 24 hours and many
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10510
+times more if enabled with -P option.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10511
+.P
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10512
+Solaris does not allow creation of a vnic on a network
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10513
+interface which is providing hardware assistance to ptpd.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10514
+Vice versa, ptpd cannot get hardware assistance from an
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10515
+interfac which has pre-existing vnic(s).
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10516
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10517
+.SH SEE ALSO
5007
0052258cbb9d PSARC 2015/428 Normalization of Solaris man page section numbers
Rich Burridge <rich.burridge@oracle.com>
parents: 4581
diff changeset
 10518
+svcs(1), svcadm(8), attributes(7), smf(7)
1580
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10519
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10520
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10521
+IEEE Standard 1588-2008, Precision Clock Synchronization
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10522
+Protocol for Networked Measurement and Control Systems, 2008
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10523
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10524
 .SH AUTHORS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10525
 Gael Mace <[email protected]> & Alexandre Van