components/ptp/patches/00-sol_sf_patch_over_community_edition.patch
author Mike Sullivan <Mike.Sullivan@Oracle.COM>
Mon, 29 Sep 2014 11:02:50 -0700
changeset 2120 9923c3ab55b8
parent 1580 dece556dd5e7
child 2214 c98efe8be94e
permissions -rw-r--r--
Close of build 58.
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
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    13
+ * 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
    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
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    44
+	mkdir -p $(DESTDIR)/usr/share/man/man1m/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
    45
+	ginstall -D -p -m 444 src/ptpd2.8 $(DESTDIR)/usr/share/man/man1m/ptpd.1m
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
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4184
--- /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
  4185
+++ b/src/dep/sfxge_ioctl.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
  4186
@@ -0,0 +1,135 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4187
+/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4188
+ * 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
  4189
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4190
+/****************************************************************************
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4191
+ * Driver for Solarflare network controllers
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4192
+ *           (including support for SFE4001 10GBT NIC)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4193
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4194
+ * Copyright 2005-2006: Fen Systems Ltd.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4195
+ * Copyright 2006-2010: Solarflare Communications Inc,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4196
+ *                      9501 Jeronimo Road, Suite 250,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4197
+ *                      Irvine, CA 92618, USA
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4198
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4199
+ * Initially developed by Michael Brown <[email protected]>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4200
+ * Maintained by Solarflare Communications <[email protected]>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4201
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4202
+ * This program is free software; you can redistribute it and/or modify it
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4203
+ * under the terms of the GNU General Public License version 2 as published
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4204
+ * by the Free Software Foundation, incorporated herein by reference.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4205
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4206
+ * This program is distributed in the hope that it will be useful,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4207
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4208
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4209
+ * GNU General Public License for more details.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4210
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4211
+ * You should have received a copy of the GNU General Public License
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4212
+ * along with this program; if not, write to the Free Software
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4213
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4214
+ ****************************************************************************
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4215
+ */
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
+#ifndef SFXGE_IOCTL_H
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4218
+#define SFXGE_IOCTL_H
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4219
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4220
+#include <sys/sockio.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4221
+#define __u8	uint8_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4222
+#define __u16   uint16_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4223
+#define __u32   uint32_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4224
+#define __u64   uint64_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4225
+#define __s8	int8_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4226
+#define __s16	int16_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4227
+#define __s32	int32_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4228
+#define __s64	int64_t
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4229
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4230
+#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
  4231
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4232
+#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
  4233
+#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
  4234
+#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
  4235
+#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
  4236
+#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
  4237
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4238
+#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
  4239
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4240
+/* 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
  4241
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4242
+struct sfxge_timespec {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4243
+	int64_t tv_sec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4244
+	int32_t	tv_nsec;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4245
+};
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
+/* Initialise timestamping, like SIOCHWTSTAMP *******************************/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4248
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4249
+enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4250
+      	HWTSTAMP_TX_OFF,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4251
+	HWTSTAMP_TX_ON,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4252
+};
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
+enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4255
+      	HWTSTAMP_FILTER_NONE,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4256
+	HWTSTAMP_FILTER_ALL,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4257
+	HWTSTAMP_FILTER_SOME,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4258
+	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
  4259
+	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
  4260
+	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
  4261
+	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
  4262
+	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
  4263
+	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
  4264
+	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
  4265
+	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
  4266
+	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
  4267
+	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
  4268
+	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
  4269
+	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
  4270
+};
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
+struct sfxge_hwtstamp_config {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4273
+	uint32_t drv_version;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4274
+	uint32_t flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4275
+	uint32_t tx_type;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4276
+	uint32_t rx_filter;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4277
+};
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
+/* 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
  4280
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4281
+struct sfxge_ts_read {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4282
+	uint32_t tx_valid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4283
+	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
  4284
+	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
  4285
+	uint32_t rx_valid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4286
+	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
  4287
+	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
  4288
+	uint8_t uuid [6];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4289
+	uint8_t seqid [2];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4290
+};
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
+struct sfxge_ts_settime {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4293
+        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
  4294
+        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
  4295
+};
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
+struct sfxge_ts_adjtime {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4298
+        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
  4299
+        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
  4300
+};
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
+struct sfxge_ts_sync {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4303
+        struct sfxge_timespec ts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4304
+};
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
+union sfxge_ioctl_data {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4307
+	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
  4308
+	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
  4309
+	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
  4310
+	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
  4311
+	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
  4312
+};
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
+struct sfxge_sock_ioctl {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4315
+	uint32_t cmd;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4316
+	uint16_t reserved;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4317
+	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
  4318
+};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4319
+#endif /* SFXGE_IOCTL_H */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4320
+
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
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
  4323
--- 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
  4324
+++ 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
  4325
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4326
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4327
+ * 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
  4328
+ * 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
  4329
  * 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
  4330
  *                         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
  4331
  * 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
  4332
@@ -39,6 +41,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4333
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4334
 #include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4335
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4336
+PtpClock *ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4337
+
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
  * 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
  4340
  * 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
  4341
@@ -70,6 +74,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4342
 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
  4343
 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
  4344
 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
  4345
+#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
  4346
+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
  4347
+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
  4348
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4349
 
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
  * 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
  4352
@@ -79,31 +87,38 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4353
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4354
 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
  4355
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4356
-	switch (sig) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4357
-	case SIGINT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4358
+  switch (sig) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4359
+  case SIGINT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4360
 		sigint_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4361
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4362
-	case SIGTERM:
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
 		sigterm_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4365
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4366
-	case SIGHUP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4367
-		sighup_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4368
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4369
-	case SIGUSR1:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4370
-		sigusr1_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4371
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4372
-	case SIGUSR2:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4373
-		sigusr2_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4374
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4375
-	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4376
-		/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4377
-		 * 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
  4378
-		 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4379
-		 * 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
  4380
-		 * 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
  4381
-		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4382
-		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4383
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4384
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4385
+  case SIGHUP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4386
+    sighup_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4387
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4388
+  case SIGUSR1:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4389
+    sigusr1_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4390
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4391
+  case SIGUSR2:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4392
+    sigusr2_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4393
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4394
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4395
+#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
  4396
+    if (sig == SIGRTMIN + 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4397
+      sigrtmin0_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4398
+    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
  4399
+      sigrtmin1_received = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4400
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4401
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4402
+      /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4403
+       * 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
  4404
+       *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4405
+       * 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
  4406
+       * 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
  4407
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4408
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4409
+  }
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
@@ -119,12 +134,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4414
 	exit(0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4415
 }
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
  * 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
  4420
  * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4421
  * @param sig 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4422
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4423
-void 
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
 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
  4426
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4427
 	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
  4428
@@ -135,7 +150,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4429
 		if(!logToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4430
 			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
  4431
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4432
-	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
  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
 }
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
@@ -146,10 +161,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4438
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4439
 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
  4440
 {
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
-	 * note:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4443
-	 * 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
  4444
-	 */
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
+  * note:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4447
+  * 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
  4448
+  */
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
 	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
  4451
 		do_signal_close(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4452
@@ -158,42 +173,80 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4453
 	if(sighup_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4454
 		do_signal_sighup(rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4455
 	sighup_received=0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4456
+  }
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
+  if(sigusr1_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4459
+    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
  4460
+    /* 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
  4461
+     * 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
  4462
+     * 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
  4463
+     * the clock step process */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4464
+    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
  4465
+      TimeInternal offset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4466
+      extern PtpClock *G_timeBothClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4467
+      extern RunTimeOpts *G_timeBothRtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4468
+      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
  4469
+      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
  4470
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4471
+    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
  4472
+  sigusr1_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4473
+  }
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
+#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
  4477
+  if(sigusr2_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4478
+    /* swap domain numbers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4479
+    static int prev_domain;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4480
+    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
  4481
+    if(first_time){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4482
+      first_time = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4483
+      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
  4484
+    }
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
+    int  temp = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4487
+    ptpClock->domainNumber = prev_domain;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4488
+    prev_domain = temp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4489
+
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
+    // 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
  4492
+    rtOpts->domainNumber = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4493
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4494
+    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
  4495
+      ptpClock->domainNumber,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4496
+      prev_domain
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4497
+    );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4498
+  sigusr2_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4499
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4500
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4501
+
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
+#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
  4504
+	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
  4505
+		ptpClock->leap61 = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4506
+		ptpClock->leap59 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4507
+		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
  4508
+		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
  4509
+			   secondsToMidnight() + (float)ptpClock->currentUtcOffset,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4510
+			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4511
+		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4512
+		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
  4513
+		sigrtmin0_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4514
 	}
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
-	if(sigusr1_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4517
-		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
  4518
-		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
  4519
-	sigusr1_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4520
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4521
+	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
  4522
+		ptpClock->leap59 = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4523
+		ptpClock->leap61 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4524
+		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4525
+		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
  4526
+		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
  4527
+			   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
  4528
+			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4529
 
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
-#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
  4532
-	if(sigusr2_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4533
-		/* swap domain numbers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4534
-		static int prev_domain;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4535
-		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
  4536
-		if(first_time){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4537
-			first_time = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4538
-			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
  4539
-		}
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
-		int  temp = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4542
-		ptpClock->domainNumber = prev_domain;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4543
-		prev_domain = temp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4544
-
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
-		// 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
  4547
-		rtOpts->domainNumber = ptpClock->domainNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4548
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4549
-		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
  4550
-			ptpClock->domainNumber,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4551
-			prev_domain
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4552
-		);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4553
-		sigusr2_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4554
+		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
  4555
+		sigrtmin1_received = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4556
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4557
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4558
 
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
 #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
  4561
 #ifdef RUNTIME_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4562
 	if(sigusr2_received){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4563
@@ -242,8 +295,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4564
 #include <sys/stat.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4565
 #include <libgen.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4566
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4567
-#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
  4568
-#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
  4569
+#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
  4570
+#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
  4571
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4572
 int global_lock_fd;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4573
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4574
@@ -261,6 +314,31 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4575
 	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
  4576
 }
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
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4579
+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
  4580
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4581
+	struct flock fl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4582
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4583
+	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
  4584
+	fl.l_start = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4585
+	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
  4586
+	fl.l_len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4587
+	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
  4588
+		return(fl.l_pid);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4589
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4590
+	return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4591
+}
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
+int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4594
+unlockfile(int fd) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4595
+	struct flock fl;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4596
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4597
+	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
  4598
+	fl.l_start = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4599
+	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
  4600
+	fl.l_len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4601
+	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
  4602
+}
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
  * 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
  4606
@@ -268,33 +346,37 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4607
 int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4608
 daemon_already_running(void)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4609
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4610
-	char    buf[16];
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
+  int lpid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4613
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4614
 	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
  4615
-	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
  4616
-	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
  4617
-		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
  4618
-		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
  4619
-		exit(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4620
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4621
-	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
  4622
-		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
  4623
-			close(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4624
-			return(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4625
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4626
-		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
  4627
-		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
  4628
-		return(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4629
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4630
-	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
  4631
-	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
  4632
-	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
  4633
-	return(0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4634
+  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
  4635
+  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
  4636
+    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
  4637
+    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
  4638
+    //ptpdShutdown(FALSE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4639
+    exit(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4640
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4641
+  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
  4642
+    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
  4643
+	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
  4644
+	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
  4645
+	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
  4646
+      close(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4647
+      return(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4648
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4649
+    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
  4650
+    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
  4651
+    return(1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4652
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4653
+  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
  4654
+  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
  4655
+  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
  4656
+  return(0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4657
 }
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
 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
  4663
 
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
@@ -310,14 +392,17 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4666
 	char command[BUF_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4667
 	char answer[BUF_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4668
 	int matches;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4669
+	int mypid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4670
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4671
-	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
  4672
+	mypid = getpid();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4673
+	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
  4674
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4675
 	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
  4676
 		return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4677
 	};
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
 	sscanf(answer, "%d", &matches);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4680
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4681
 	return (matches);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4682
 }
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
@@ -333,32 +418,32 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4685
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4686
 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
  4687
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4688
-	int status;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4689
-	FILE *fp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4690
+  int status;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4691
+  FILE *fp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4692
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4693
 	// clear previous answer
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4694
 	answer[0] = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4695
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4696
 	fp = popen(command, "r");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4697
-	if (fp == NULL){
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
 		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
  4700
-		return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4701
-	};
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4702
+    return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4703
+  };
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
 	// 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
  4706
 	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
  4707
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4708
 	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
  4709
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4710
-	status = pclose(fp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4711
-	if (status == -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4712
-		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
  4713
-		return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4714
-	} 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4715
+  status = pclose(fp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4716
+  if (status == -1) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4717
+    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
  4718
+    return -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4719
+  }
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
-	/* from Man page:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4722
-	     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
  4723
-	     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
  4724
+  /* from Man page:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4725
+      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
  4726
+      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
  4727
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4728
 	return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4729
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4730
@@ -375,38 +460,38 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4731
 int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4732
 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
  4733
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4734
-	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
  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
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4737
-	if(matches == expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4738
-		if(!expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4739
-			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
  4740
-				name );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4741
-		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4742
-			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
  4743
-				matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4744
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4745
-		return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4746
+  if(matches == expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4747
+	if(!expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4748
+		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
  4749
+			name );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4750
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4751
-		if(strict){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4752
-			if(expected == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4753
-				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
  4754
-				   matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4755
-			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4756
-				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
  4757
-				   matches, name, expected);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4758
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4759
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4760
-		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4761
-			if(!expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4762
-				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
  4763
-				   matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4764
-			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4765
-				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
  4766
-				   matches, name, expected);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4767
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4768
-			return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4769
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4770
+		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
  4771
+			matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4772
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4773
+    return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4774
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4775
+    if(strict){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4776
+	if(expected == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4777
+		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
  4778
+		    matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4779
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4780
+		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
  4781
+          matches, name, expected);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4782
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4783
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4784
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4785
+	if(!expected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4786
+		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
  4787
+		   matches, name);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4788
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4789
+		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
  4790
+            matches, name, expected);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4791
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4792
+      return 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4793
+    }
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
@@ -417,28 +502,28 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4799
 
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
  * 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
  4805
  * 
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
  * @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
  4808
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4809
-int 
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
 logToFile(RunTimeOpts * rtOpts)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4812
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4813
 	if(rtOpts->logFd != -1)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4814
 		close(rtOpts->logFd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4815
-	
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
-	/* 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
  4818
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4819
+  /* 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
  4820
 	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
  4821
 		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
  4822
 		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
  4823
-	}
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
 	return rtOpts->logFd != -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4826
 }
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
  * 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
  4831
  * 
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
@@ -451,63 +536,82 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4834
 		fclose(rtOpts->recordFP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4835
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4836
 	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
  4837
-		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
  4838
-	else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4839
+    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
  4840
+  else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4841
 		setlinebuf(rtOpts->recordFP);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4842
 	return (rtOpts->recordFP != NULL);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4843
 }
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
-void 
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
 ptpdShutdown(PtpClock * ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4848
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4849
-	netShutdown(&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4850
+  shutdownTime(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4851
+  netShutdown(&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4852
 
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
 	free(ptpClock->foreign);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4856
 	free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4857
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4858
-	/* 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
  4859
-	close(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4860
-	unlink(LOCKFILE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4861
+#if 0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4862
+  /* 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
  4863
+  if (!inSigHandler) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4864
+    free(ptpClock->foreign);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4865
+    free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4866
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4867
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4868
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4869
+  /* 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
  4870
+  close(global_lock_fd);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4871
+  unlink(LOCKFILE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4872
 }
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
 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
  4875
 {
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
 	int i = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4878
-	char sbuf[1000];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4879
-	char *st = sbuf;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4880
-	int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4881
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4882
-	*st = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4883
-	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
  4884
-		len += snprintf(sbuf + len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4885
-					     sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4886
-					     "%s ", argv[i]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4887
+  char sbuf[1000];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4888
+  char *st = sbuf;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4889
+  int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4890
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4891
+  *st = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4892
+  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
  4893
+    if (len >= sizeof(sbuf)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4894
+      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
  4895
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4896
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4897
+      len += snprintf(sbuf + len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4898
+		      sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4899
+		      "%s ", argv[i]);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4900
+    }
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
+  INFO("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4904
+  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
  4905
+}
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
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4909
+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
  4910
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4911
+	char *ermsg;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4912
+	if (error) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4913
+		ermsg = "ERROR";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4914
+	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4915
+		ermsg = "";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4916
 	}
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
-	INFO("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4919
-	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
  4920
-}
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
-void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4924
-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
  4925
-{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4926
 	printf(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4927
-			//"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4928
-			"ptpd2:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4929
-			"   -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
  4930
+			"ptpd:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4931
+			"   -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
  4932
 			"   -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
  4933
 			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4934
 			"   -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
  4935
 			"   -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
  4936
 			"\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
-			"   -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
  4939
+			"   -?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
  4940
 			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4941
-			"ERROR: %s\n\n",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4942
-			error
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4943
+			"%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
  4944
 		);
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
@@ -517,166 +621,188 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4948
 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
  4949
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4950
 	PtpClock * ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4951
-	int c, noclose = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4952
-	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
  4953
+  int c, noclose = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4954
+  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
  4955
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4956
-	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
  4957
-	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
  4958
-	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
  4959
-	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
  4960
+  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
  4961
+  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
  4962
+  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
  4963
+  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
  4964
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4965
-	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
  4966
+  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
  4967
+  TimeMode default_time_mode;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4968
+  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
  4969
+  Boolean is_error;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4970
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4971
-	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
  4972
+  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
  4973
+/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4974
+#ifdef PTPD_FULL_OPTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4975
+  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
  4976
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4977
+  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
  4978
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4979
+*/
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
-	/* parse command line arguments */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4982
-	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
  4983
-		switch (c) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4984
-		case '?':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4985
-			printf("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4986
-			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
  4987
-			*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4988
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4989
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4990
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4991
-		case 'H':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4992
-			printf(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4993
-				"\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
  4994
-				"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
  4995
+   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
  4996
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4997
+  /* parse command line arguments */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  4998
+  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
  4999
+    switch (c) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5000
+    case '?':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5001
+      if (optopt == '?') {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5002
+	      is_error = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5003
+	      *ret = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5004
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5005
+	      is_error = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5006
+	      *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5007
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5008
+      printf("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5009
+      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
  5010
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5011
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5012
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5013
+    case 'H':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5014
+      printf(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5015
+				"\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
  5016
+				"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
  5017
+        "\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5018
+#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
  5019
+	"-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
  5020
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5021
-#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
  5022
-				"-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
  5023
+        "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
  5024
+        "-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
  5025
+        "-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
  5026
+        "-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
  5027
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5028
-				"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
  5029
-				"-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
  5030
-				"-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
  5031
-				"-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
  5032
-				"-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
  5033
+	"Options:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5034
+	"-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
  5035
+	"-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
  5036
+	"-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
  5037
+        "-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
  5038
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5039
-				"Options:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5040
-				"-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
  5041
-				"-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
  5042
-				"-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
  5043
-				"-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
  5044
+        "-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
  5045
+	"-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
  5046
+	"-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
  5047
+	"-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
  5048
+	"-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
  5049
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5050
-				"-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
  5051
-				"-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
  5052
-				"-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
  5053
-				"-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
  5054
-				"-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
  5055
+	"-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
  5056
+	"-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
  5057
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5058
+	"-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
  5059
+	"-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
  5060
+	"-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
  5061
+	"-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
  5062
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5063
-				"-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
  5064
-				"-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
  5065
+	"-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
  5066
+	"                  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
  5067
+	"-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
  5068
+	"-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
  5069
+	"                    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
  5070
+	"                    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
  5071
+	"                    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
  5072
+	"                    (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
  5073
+	"                    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
  5074
+				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5075
+	"-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
  5076
+	"-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
  5077
+	"-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
  5078
+	"-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
  5079
+	"                    (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
  5080
+	"                    messages via sockets)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5081
+			"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5082
+	"-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
  5083
+	"-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
  5084
+	"-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
  5085
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5086
-				"-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
  5087
-				"-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
  5088
-				"-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
  5089
-				"-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
  5090
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5091
-				"-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
  5092
-				"-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
  5093
-				"                    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
  5094
-				"                    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
  5095
-				"                    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
  5096
-				"                    (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
  5097
-				"                    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
  5098
+	"-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
  5099
+	"-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
  5100
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5101
+       	"-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
  5102
+	"-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
  5103
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5104
-				"-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
  5105
-				"-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
  5106
-				"-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
  5107
-				"-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
  5108
-				"                    (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
  5109
-				"                    messages via sockets)\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5110
+        "-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
  5111
+        "-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
  5112
+        "-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
  5113
+        "-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
  5114
+        "-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
  5115
+		"\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
+	"-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
  5118
+	"                     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
  5119
+	"                     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
  5120
+	"                     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
  5121
+		"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5122
+	"-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
  5123
+		"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5124
+	"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
  5125
+	"-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
  5126
+	"-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
  5127
+	"-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
  5128
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5129
-				"-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
  5130
-				"-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
  5131
-				"-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
  5132
-				
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5133
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5134
-				"-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
  5135
-				"-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
  5136
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5137
-				"-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
  5138
-				"-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
  5139
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5140
-				"-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
  5141
-				"-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
  5142
-				"-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
  5143
-				"-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
  5144
-				"-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
  5145
-				"\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
-				"-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
  5148
-				"                     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
  5149
-				"                     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
  5150
-				"                     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
  5151
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5152
-				"-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
  5153
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5154
-				"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
  5155
-				"-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
  5156
-				"-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
  5157
-				"-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
  5158
-				"\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
+	"-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
  5161
 
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
 #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
  5164
 				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5165
-				"Possible internal states:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5166
-				"  init:        INITIALIZING\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5167
-				"  flt:         FAULTY\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5168
-				"  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
  5169
-				"  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
  5170
-				"  pass:        INACTIVE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5171
-				"  uncl:        UNCALIBRATED\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5172
-				"  slv:         SLAVE\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5173
-				"  pmst:        PRE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5174
-				"  mst:         ACTIVE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5175
-				"  dsbl:        DISABLED\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5176
-				"  ?:           UNKNOWN state\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5177
+	"Possible internal states:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5178
+	"  init:        INITIALIZING\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5179
+	"  flt:         FAULTY\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5180
+	"  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
  5181
+	"  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
  5182
+	"  pass:        INACTIVE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5183
+	"  uncl:        UNCALIBRATED\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5184
+	"  slv:         SLAVE\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5185
+	"  pmst:        PRE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5186
+	"  mst:         ACTIVE Master\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5187
+	"  dsbl:        DISABLED\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5188
+	"  ?:           UNKNOWN state\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5189
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5190
-				"\n"
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
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5193
-				"Signals synchronous behaviour:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5194
-				"  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
  5195
-				"  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
  5196
-				"  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
  5197
-				"  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
  5198
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5199
-				"  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
  5200
-				"  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
  5201
-				
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5202
-				"\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5203
-				"BMC Algorithm defaults:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5204
-				"  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
  5205
+        "Signals synchronous behaviour:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5206
+	"  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
  5207
+	"  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
  5208
+	"  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
  5209
+	"  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
  5210
+#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
  5211
+	"  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
  5212
+	"  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
  5213
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5214
+        "\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5215
+        "  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
  5216
+        "  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
  5217
 
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
-				/*  "-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
  5220
-			    "\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5221
-			    );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5222
-			*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5223
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5224
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5225
+        "\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5226
+        "BMC Algorithm defaults:\n"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5227
+        "  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
  5228
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5229
-		case 'c':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5230
-			rtOpts->nonDaemon = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5231
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5232
+        PTP_VERSION_STRING
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5233
+        );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5234
+      *ret = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5235
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5236
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5237
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5238
+    case 'c':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5239
+      rtOpts->nonDaemon = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5240
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5241
 			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5242
-		case 'C':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5243
-			rtOpts->nonDaemon = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5244
+    case 'C':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5245
+	rtOpts->nonDaemon = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5246
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5247
-			rtOpts->useSysLog    = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5248
-			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
  5249
-			rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5250
-			rtOpts->csvStats     = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5251
-			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
  5252
-			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
  5253
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5254
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5255
-		case 'S':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5256
-			rtOpts->useSysLog = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5257
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5258
+	rtOpts->useSysLog    = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5259
+	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
  5260
+	rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5261
+	rtOpts->csvStats     = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5262
+	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
  5263
+	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
  5264
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5265
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5266
+    case 'S':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5267
+      rtOpts->useSysLog = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5268
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5269
 		case 'T':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5270
 			rtOpts->ttl = atoi(optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5271
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5272
@@ -697,74 +823,101 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5273
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5274
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5275
 			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5276
-		case 'd':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5277
-			rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5278
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5279
-		case 'D':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5280
-			rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5281
-			rtOpts->csvStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5282
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5283
-		case 'P':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5284
-			rtOpts->displayPackets = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5285
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5286
+    case 'd':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5287
+      rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5288
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5289
+    case 'D':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5290
+      rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5291
+      rtOpts->verboseStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5292
+      rtOpts->csvStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5293
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5294
+    case 'P':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5295
+      rtOpts->displayPackets = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5296
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5297
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5298
-		case 'R':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5299
-			/* 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
  5300
-			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
  5301
-			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
  5302
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5303
+    case 'R':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5304
+      /* 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
  5305
+      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
  5306
+      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
  5307
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5308
+    case 'X':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5309
+      if(!strcasecmp(optarg, "nic"))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5310
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5311
+        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
  5312
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5313
+      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
  5314
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5315
+        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
  5316
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5317
+      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
  5318
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5319
+        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
  5320
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5321
+      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
  5322
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5323
+        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
  5324
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5325
+      else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5326
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5327
+        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
  5328
+        *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5329
+      }
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
+      * 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
  5332
+      * 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
  5333
+      */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5334
+      time_mode_specified = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5335
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5336
+    case 'x':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5337
+      rtOpts->noResetClock = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5338
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5339
+    case 'O':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5340
+      rtOpts->maxReset = atoi(optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5341
+      if (rtOpts->maxReset > 1000000000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5342
+        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
  5343
+              " than one second.");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5344
+        *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5345
+        return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5346
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5347
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5348
+    case 'M':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5349
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5350
+      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
  5351
+      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
  5352
+      rtOpts->maxDelay.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5353
+        (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
  5354
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5355
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5356
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5357
+    case 't':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5358
+	rtOpts->noAdjust = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5359
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5360
+    case 'a':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5361
+      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
  5362
+      if (optarg[0])
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5363
+        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
  5364
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5365
+    case 'w':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5366
+      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
  5367
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5368
+    case 'b':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5369
+      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
  5370
+      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
  5371
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5372
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5373
+    case 'u':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5374
+			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
  5375
+      strncpy(rtOpts->unicastAddress, optarg,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5376
+		      MAXHOSTNAMELEN);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5377
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5378
-		case 'x':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5379
-			rtOpts->noResetClock = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5380
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5381
-		case 'O':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5382
-			rtOpts->maxReset = atoi(optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5383
-			if (rtOpts->maxReset > 1000000000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5384
-				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
  5385
-				       " than one second.");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5386
-				*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5387
-				return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5388
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5389
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5390
-		case 'M':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5391
-			rtOpts->maxDelay = atoi(optarg);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5392
-			if (rtOpts->maxDelay > 1000000000) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5393
-				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
  5394
-				       " than one second.");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5395
-				*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5396
-				return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5397
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5398
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5399
-		case 't':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5400
-			rtOpts->noAdjust = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5401
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5402
-		case 'a':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5403
-			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
  5404
-			if (optarg[0])
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5405
-				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
  5406
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5407
-		case 'w':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5408
-			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
  5409
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5410
-		case 'b':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5411
-			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
  5412
-			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
  5413
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5414
+	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5415
+	 * 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
  5416
+	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5417
+	 * 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
  5418
+	 *  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
  5419
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5420
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5421
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5422
-		case 'u':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5423
-			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
  5424
-			strncpy(rtOpts->unicastAddress, optarg, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5425
-				MAXHOSTNAMELEN);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5426
-
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
-			 * 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
  5429
-			 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5430
-			 * 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
  5431
-			 *  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
  5432
-			 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5433
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5434
-			 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5435
 		case 'U':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5436
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5437
 			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
  5438
@@ -773,174 +926,244 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5439
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5440
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5441
 
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
-		case 'l':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5444
-			rtOpts->inboundLatency.nanoseconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5445
-				strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5446
-			if (optarg[0])
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5447
-				rtOpts->outboundLatency.nanoseconds = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5448
-					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
  5449
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5450
-		case 'o':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5451
-			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
  5452
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5453
-		case 'i':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5454
-			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
  5455
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5456
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5457
-		case 'I':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5458
+    case 'l':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5459
+      rtOpts->inboundLatency.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5460
+	      strtol(optarg, &optarg, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5461
+      if (optarg[0])
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5462
+        rtOpts->outboundLatency.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5463
+		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
  5464
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5465
+    case 'o':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5466
+      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
  5467
+      rtOpts->currentUtcOffsetValid = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5468
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5469
+    case 'i':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5470
+      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
  5471
+      if (rtOpts->domainNumber > 3) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5472
+	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
  5473
+	*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5474
+	return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5475
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5476
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5477
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5478
+	case 'I':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5479
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5480
-			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
  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
+	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
  5483
+		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
  5484
+		*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5485
+		return (0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5486
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5487
 #else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5488
-			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
  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
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5491
-			break;
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
+   
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
-		case 'y':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5498
-			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
  5499
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5500
-		case 'n':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5501
-			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
  5502
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5503
+	case 'y':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5504
+      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
  5505
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5506
+    case 'n':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5507
+      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
  5508
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5509
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5510
 		case 'N':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5511
 			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
  5512
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5513
 			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5514
-		case 'm':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5515
-			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
  5516
-			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
  5517
-				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
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5519
-		case 'v':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5520
-			rtOpts->clockQuality.offsetScaledLogVariance = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5521
-				strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5522
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5523
-		case 'r':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5524
-			rtOpts->clockQuality.clockAccuracy = 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5525
-				strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5526
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5527
-		case 's':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5528
-			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
  5529
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5530
-		case 'p':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5531
-			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
  5532
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5533
-		case 'q':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5534
-			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
  5535
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5536
-		case 'e':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5537
-			rtOpts->ethernet_mode = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5538
-			ERROR("Not implemented yet !");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5539
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5540
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5541
-		case 'h':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5542
-			rtOpts->delayMechanism = E2E;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5543
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5544
+    case 'm':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5545
+      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
  5546
+      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
  5547
+        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
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5549
+    case 'v':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5550
+      rtOpts->clockQuality.offsetScaledLogVariance =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5551
+        strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5552
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5553
+    case 'r':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5554
+      rtOpts->clockQuality.clockAccuracy =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5555
+        strtol(optarg, 0, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5556
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5557
+    case 's':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5558
+      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
  5559
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5560
+    case 'p':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5561
+      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
  5562
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5563
+    case 'q':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5564
+      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
  5565
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5566
+	case 'e':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5567
+		rtOpts->ethernet_mode = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5568
+		ERROR("Not implemented yet !");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5569
+		*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5570
+		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5571
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5572
+	case 'h':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5573
+		rtOpts->delayMechanism = E2E;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5574
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5575
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5576
-		case 'V':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5577
-			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
  5578
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5579
+	case 'V':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5580
+		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
  5581
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5582
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5583
-		case 'z':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5584
-			rtOpts->delayMechanism = P2P;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5585
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5586
+	case 'Z':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5587
+		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
  5588
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5589
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5590
-		/* mode selection */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5591
-		/* slave only */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5592
-		case 'g':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5593
-			mode_selected = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5594
-			rtOpts->slaveOnly = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5595
-			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
  5596
+	case 'z':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5597
+		rtOpts->delayMechanism = P2P;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5598
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5599
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5600
-			/* 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
  5601
-			ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5602
-			ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5603
-			ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5604
-			ptp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5605
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5606
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5607
-		/* Master + NTP */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5608
-		case 'G':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5609
-			mode_selected = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5610
-			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
  5611
-			rtOpts->slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5612
-			rtOpts->noAdjust = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5613
+    /* mode selection */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5614
+    /* slave only */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5615
+    case 'g':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5616
+      switch (mode_selected) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5617
+	      case 2 :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5618
+		      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
  5619
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5620
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5621
+	      case 3:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5622
+		      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
  5623
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5624
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5625
+	      default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5626
+		      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5627
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5628
+      mode_selected = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5629
+      rtOpts->slaveOnly = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5630
+      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
  5631
+      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
  5632
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5633
-			/* 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
  5634
-			ntp_daemons_expected = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5635
-			ntp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5636
-			ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5637
-			ptp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5638
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5639
+      /* 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
  5640
+      ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5641
+      ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5642
+      ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5643
+      ptp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5644
 
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
-		 *  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
  5647
-		 *    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
  5648
-		 *    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
  5649
-		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5650
-		case 'W':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5651
-			mode_selected = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5652
-			rtOpts->slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5653
-			rtOpts->noAdjust = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5654
+      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
  5655
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5656
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5657
-			/* 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
  5658
-			ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5659
-			ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5660
-			ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5661
-			ptp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5662
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5663
+    /* Master + NTP */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5664
+    case 'G':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5665
+      switch (mode_selected) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5666
+	      case 1 :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5667
+		      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
  5668
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5669
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5670
+	      case 3:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5671
+		      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
  5672
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5673
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5674
+	      default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5675
+		      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5676
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5677
+      mode_selected = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5678
+      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
  5679
+      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
  5680
+      rtOpts->slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5681
+      rtOpts->noAdjust = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5682
 
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
-		case 'Y':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5685
-			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
  5686
-			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
  5687
-			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
  5688
+      /* 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
  5689
+      ntp_daemons_expected = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5690
+      ntp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5691
+      ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5692
+      ptp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5693
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5694
-			/* 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
  5695
-			if (optarg[0]){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5696
-				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
  5697
-				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
  5698
-			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5699
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5700
+      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
  5701
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5702
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5703
-		case 'L':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5704
-			/* 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
  5705
-			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
  5706
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5707
-		case 'j':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5708
-			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
  5709
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5710
+    /*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5711
+     *  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
  5712
+     *    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
  5713
+     *    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
  5714
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5715
+    case 'W':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5716
+      switch (mode_selected) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5717
+	      case 1 :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5718
+		      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
  5719
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5720
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5721
+	      case 2:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5722
+		      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
  5723
+		      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5724
+		      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5725
+	      default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5726
+		      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5727
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5728
+      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
  5729
+      mode_selected = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5730
+      rtOpts->slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5731
+      rtOpts->noAdjust = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5732
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5733
+      /* 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
  5734
+      ntp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5735
+      ntp_daemons_strict = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5736
+      ptp_daemons_expected = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5737
+      ptp_daemons_strict = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5738
+      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
  5739
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5740
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5741
+      /* 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
  5742
+    case 'K':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5743
+/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5744
+#ifdef __sparc__
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5745
+	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
  5746
+	*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5747
+	return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5748
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5749
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5750
+      use_hardware_assist = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5751
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5752
+
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
+     case 'Y':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5756
+	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
  5757
+	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
  5758
+	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
  5759
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5760
-		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5761
-			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
  5762
-			*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5763
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5764
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5765
+	/* 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
  5766
+	if (optarg[0]){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5767
+		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
  5768
+		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
  5769
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5770
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5771
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5772
+      case 'L':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5773
+         /* 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
  5774
+	 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
  5775
+	 break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5776
+      case 'j':
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5777
+	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
  5778
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5779
 
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
-	 * 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
  5782
-	 * 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
  5783
-	 * 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
  5784
-	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5785
-	if(geteuid() != 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5786
-	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5787
-		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
  5788
-			*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5789
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5790
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5791
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5792
+      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
  5793
+      *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5794
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5795
+    }
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
-	if(!mode_selected){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5799
-		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
  5800
-		*ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5801
-		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5802
-	}
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
+   * 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
  5806
+   * 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
  5807
+   * 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
  5808
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5809
+  if(geteuid() != 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5810
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5811
+    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
  5812
+      *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5813
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5814
+  }
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
+  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
  5817
+    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
  5818
+    *ret = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5819
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5820
+  }
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
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5823
 	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
  5824
@@ -950,42 +1173,47 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5825
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5826
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5827
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5828
+    /* 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
  5829
+    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
  5830
+      if (use_hardware_assist) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5831
+	      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
  5832
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5833
+      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
  5834
+    }
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
+  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
  5837
+  if (!ptpClock) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5838
+    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
  5839
+    *ret = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5840
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5841
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5842
+    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
  5843
+        (int)sizeof(PtpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5844
+    ptpClock->foreign = (ForeignMasterRecord *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5845
+      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
  5846
+            sizeof(ForeignMasterRecord));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5847
+    if (!ptpClock->foreign) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5848
+      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
  5849
+            "master data");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5850
+      *ret = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5851
+      free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5852
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5853
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5854
+      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
  5855
+          (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
  5856
+          sizeof(ForeignMasterRecord)));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5857
+    }
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
+  /* 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
  5861
+  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
  5862
+  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
  5863
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5864
+  /* Initialise sockets to invalid */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5865
+  ptpClock->netPath.eventSock = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5866
+  ptpClock->netPath.generalSock = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5867
 
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
-	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
  5871
-	if (!ptpClock) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5872
-		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
  5873
-		*ret = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5874
-		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5875
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5876
-		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
  5877
-		    (int)sizeof(PtpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5878
-		ptpClock->foreign = (ForeignMasterRecord *)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5879
-			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
  5880
-			       sizeof(ForeignMasterRecord));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5881
-		if (!ptpClock->foreign) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5882
-			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
  5883
-			       "master data");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5884
-			*ret = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5885
-			free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5886
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5887
-		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5888
-			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
  5889
-			    (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
  5890
-				  sizeof(ForeignMasterRecord)));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5891
-		}
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
-	/* 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
  5895
-	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
  5896
-	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
  5897
-
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
 	 * 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
  5902
 	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5903
@@ -997,7 +1225,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5904
 	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5905
 	 *      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
  5906
 	 *   (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
  5907
-	 *   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
  5908
+	 *   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
  5909
 	 *      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
  5910
 	 *   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
  5911
 	 *      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
  5912
@@ -1024,10 +1252,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5913
 	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
  5914
 		/* check and create Lock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5915
 		if(daemon_already_running()){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5916
-			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
  5917
+			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
  5918
 			*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5919
+			free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5920
 			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5921
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5922
+		/* 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
  5923
+		(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
  5924
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5925
 		/* 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
  5926
 		ptp_daemons_strict=0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5927
@@ -1035,86 +1266,92 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5928
 	}
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
-	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
  5932
-	   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
  5933
-	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5934
-		/* ok */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5935
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5936
-		*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5937
-		return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5938
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5939
+  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
  5940
+    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
  5941
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5942
+    /* ok */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5943
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5944
+    *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5945
+    free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5946
+    return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5947
+  }
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
+  /* 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
  5951
+  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
  5952
+	if (recordToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5953
+      noclose = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5954
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5955
+      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
  5956
+  }
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
+  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
  5959
+		if(logToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5960
+      noclose = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5961
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5962
+      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
  5963
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5964
+    rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5965
+    rtOpts->verboseStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5966
+    rtOpts->csvStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5967
+  }
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
-	/* 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
  5970
-	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
  5971
-		if (recordToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5972
-			noclose = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5973
-		else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5974
-			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
  5975
-	}
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
-	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
  5978
-		if(logToFile(rtOpts))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5979
-			noclose = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5980
-		else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5981
-			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
  5982
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5983
-		rtOpts->displayStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5984
-		rtOpts->csvStats = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5985
-	}
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
-	/*  DAEMON */
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
 #ifdef PTPD_NO_DAEMON
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5992
-	if(rtOpts->nonDaemon == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5993
-		rtOpts->nonDaemon= 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5994
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5995
+  if(rtOpts->nonDaemon == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5996
+    rtOpts->nonDaemon= 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5997
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5998
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  5999
 
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
-	if(rtOpts->nonDaemon == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6003
-		/* fork to daemon */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6004
-		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
  6005
-			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
  6006
-			*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6007
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6008
-		}
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
+  if(rtOpts->nonDaemon == 0){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6011
+    /* fork to daemon */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6012
+    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
  6013
+      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
  6014
+      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6015
+      free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6016
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6017
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6018
 		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
  6019
-	}
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
 	/* 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
  6023
 	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
  6024
 
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
-	/* 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
  6027
-	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
  6028
-		/* check and create Lock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6029
-		if(daemon_already_running()){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6030
+  /* 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
  6031
+  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
  6032
+    /* check and create Lock */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6033
+    if(daemon_already_running()){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6034
 			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
  6035
-			*ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6036
-			return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6037
-		}
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
+      *ret = 3;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6040
+      free(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6041
+      return 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6042
+    }
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
-	/* 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
  6047
-	signal(SIGINT,  catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6048
-	signal(SIGTERM, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6049
-	signal(SIGHUP,  catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6050
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6051
-	signal(SIGUSR1, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6052
-	signal(SIGUSR2, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6053
+  /* 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
  6054
+  signal(SIGINT,  catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6055
+  signal(SIGTERM, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6056
+  signal(SIGHUP,  catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6057
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6058
-	*ret = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6059
+  signal(SIGUSR1, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6060
+  signal(SIGUSR2, catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6061
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6062
+#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
  6063
+  signal(SIGRTMIN,   catch_signals);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6064
+  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
  6065
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6066
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6067
+  *ret = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6068
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6069
 	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
  6070
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6071
-	return ptpClock;
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
 }
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
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
  6077
--- 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
  6078
+++ 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
  6079
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6080
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6081
+ * 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
  6082
+ * 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
  6083
  * 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
  6084
  *                         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
  6085
  *                         National Instruments.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6086
@@ -39,6 +41,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6087
  *
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
+#include <inttypes.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6091
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6092
 #include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6093
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6094
 #if defined(linux)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6095
@@ -55,6 +59,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6096
 /* 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
  6097
 double round (double __x);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6098
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6099
+/* TODO Yuk */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6100
+extern PtpClock *G_ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6101
+extern PtpClock* G_timeBothClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6102
 
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
  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
  6105
@@ -111,9 +118,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6106
 	/* 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
  6107
 	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
  6108
 		isTimeInternalNegative(p)? '-':' ');
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6109
+	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
  6110
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6111
 	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
  6112
 	    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
  6113
+	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
  6114
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6115
 	return len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6116
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6117
@@ -170,11 +179,14 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6118
 	int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6119
 	int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6120
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6121
-	if (info)
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
 		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
  6124
+		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
  6125
+	}
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
 	for (i = 0; ;) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6128
 		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
  6129
+		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
  6130
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6131
 		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
  6132
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6133
@@ -191,19 +203,23 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6134
 	int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6135
 	int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6136
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6137
-	if (info)
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
 		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
  6140
+		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
  6141
+	}
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
 	for (i = 0; ;) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6144
 		/* 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
  6145
 		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
  6146
 			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
  6147
+			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
  6148
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6149
 			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
  6150
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6151
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6152
 			/* 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
  6153
 			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
  6154
+			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
  6155
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6156
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6157
 			i++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6158
@@ -226,7 +242,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6159
 	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
  6160
 	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
  6161
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6162
-#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
  6163
+#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
  6164
 	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
  6165
 		  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
  6166
 		valid = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6167
@@ -270,7 +286,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6168
 	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
  6169
 		/* 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
  6170
 		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
  6171
-#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
  6172
+#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
  6173
 			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
  6174
 #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
  6175
 			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
  6176
@@ -282,6 +298,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6177
 	/* convert and print hostname */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6178
 	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
  6179
 	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
  6180
+	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
  6181
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6182
 	return len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6183
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6184
@@ -292,18 +309,23 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6185
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6186
 	int len = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6187
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6188
-	if (info)
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
 		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
  6191
+		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
  6192
+	}
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
 #ifdef PRINT_MAC_ADDRESSES
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6195
 	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
  6196
 #else	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6197
 	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
  6198
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6199
+	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
  6200
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6201
 	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
  6202
+	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
  6203
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6204
 	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
  6205
+	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
  6206
 	return len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6207
 }
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
@@ -356,7 +378,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6210
 		struct timeval now;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6211
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6212
 		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
  6213
-		extern PtpClock *G_ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6214
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6215
 		fprintf(stderr, "   (ptpd %-9s ",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6216
 			priority == LOG_EMERG   ? "emergency)" :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6217
@@ -387,7 +408,51 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6218
 	va_end(ap);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6219
 }
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6222
+/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6223
+* Dumps a data buffer
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6224
+* 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
  6225
+* (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
  6226
+*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6227
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6228
+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
  6229
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6230
+  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
  6231
+  extern RunTimeOpts rtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6232
+  if(rtOpts.useSysLog) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6233
+    int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6234
+    static Boolean logOpened;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6235
+    if(!logOpened) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6236
+      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
  6237
+      logOpened = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6238
+    }
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
+    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
  6241
+    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
  6242
+      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
  6243
+      if ((i % 8) == 7) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6244
+        syslog(LOG_DEBUG, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6245
+      }
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
+    if ((i % 8) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6248
+      syslog(LOG_DEBUG, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6249
+    }
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
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6252
+    int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6253
+    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
  6254
+    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
  6255
+      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
  6256
+      if ((i % 8) == 7) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6257
+        fprintf(stderr, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6258
+      }
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
+    if ((i % 8) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6261
+      fprintf(stderr, "\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6262
+    }
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
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6267
 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
  6268
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6269
 	static int start = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6270
@@ -402,6 +467,14 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6271
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6272
 	}
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
+  /* 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
  6275
+   * 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
  6276
+   * 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
  6277
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6278
+  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
  6279
+	(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
  6280
+	return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6281
+  }
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
 	if (start && rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6285
@@ -413,7 +486,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6286
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6287
 	memset(sbuf, ' ', sizeof(sbuf));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6288
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6289
-	getTime(&now);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6290
+	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
  6291
 
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
@@ -440,110 +513,167 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6295
 	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
  6296
 	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
  6297
 		       rtOpts->csvStats ? "" : "state: ",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6298
-		       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
  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
 		       translatePortState(ptpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6301
+	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
  6302
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6303
+	if (ptpClock->name != NULL) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6304
+		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
  6305
+		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
  6306
+	}
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
+	if (rtOpts->verboseStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6309
+		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
  6310
+			translatePortState(ptpClock));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6311
+		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
  6312
+	}
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
 	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
  6315
-		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
  6316
-			 &ptpClock->parentPortIdentity, " ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6317
+		if (!rtOpts->verboseStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6318
+			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
  6319
+				+ (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
  6320
 
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
-		 * 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
  6323
-		 * also print GM ID 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6324
-		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6325
-		if (memcmp(ptpClock->grandmasterIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6326
-			   ptpClock->parentPortIdentity.clockIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6327
-			   CLOCK_IDENTITY_LENGTH)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6328
-			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
  6329
-						     sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6330
-						     ptpClock->grandmasterIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6331
-						     " GM:");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6332
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6333
+			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
  6334
+			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
  6335
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6336
-		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
  6337
+			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
  6338
+				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
  6339
+					+ (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
  6340
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6341
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6342
-			len += snprintf(sbuf + len, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6343
-					sizeof(sbuf) - len, "owd: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6344
-        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6345
+				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
  6346
+					(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
  6347
+					offset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6348
+				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
  6349
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6350
+		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6351
+			if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6352
+				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
  6353
+				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
  6354
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6355
+			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
  6356
+				&ptpClock->parentPortIdentity, " ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6357
+			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
  6358
+
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
+       * 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
  6361
+       * also print GM ID
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6362
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6363
+      if (memcmp(ptpClock->grandmasterIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6364
+                 ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6365
+                 CLOCK_IDENTITY_LENGTH)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6366
+        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
  6367
+					sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6368
+                                     ptpClock->grandmasterIdentity, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6369
+				     " GM:");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6370
+        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
  6371
+      }
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
+      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
  6374
+      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
  6375
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6376
+      if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6377
+        len += snprintf(sbuf + len, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6378
+			sizeof(sbuf) - len, "owd: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6379
+        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
  6380
+      }
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
 		if(rtOpts->delayMechanism == E2E) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6383
 			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
  6384
-						    &ptpClock->meanPathDelay);
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
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6387
 			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
  6388
 						    &ptpClock->peerMeanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6389
 		}
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
+		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
  6392
 		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
  6393
+		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
  6394
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6395
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6396
-			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
  6397
+		if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6398
+			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
  6399
 					"ofm: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6400
+			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
  6401
+		}
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
 		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
  6404
-		    &ptpClock->offsetFromMaster);
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
+		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
  6407
 
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
 		/* 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
  6411
 		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
  6412
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6413
+		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
  6414
+		if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6415
 			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
  6416
 			"stm: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6417
-			
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6418
+		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
  6419
+		}
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
 		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
  6422
 				&(ptpClock->delaySM));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6423
+		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
  6424
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6425
 		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
  6426
+		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
  6427
 
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
-		if (!rtOpts->csvStats)
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
 			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
  6432
 			"mts: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6433
+			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
  6434
+		}
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
 		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
  6437
 				&(ptpClock->delayMS));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6438
+		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
  6439
+
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
+		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
  6442
+                     rtOpts->csvStats ? "" : "drift: ",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6443
+		     ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6444
+		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
  6445
 
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
-		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
  6448
-		    rtOpts->csvStats ? "" : "drift: ", 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6449
-			       ptpClock->observed_drift);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6450
-
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
 		/* 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
  6455
 		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
  6456
+		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
  6457
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6458
-		if (!rtOpts->csvStats)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6459
-			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
  6460
-			"last_msg: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6461
+      if (!rtOpts->csvStats) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6462
+        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
  6463
+	"last_msg: ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6464
+        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
  6465
+      }
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
-		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
  6468
-				"%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
  6469
+      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
  6470
+		      "%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
  6471
+      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
  6472
+    }
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
+  else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6475
+    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
  6476
 
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
-	else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6479
-		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
  6480
+      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
  6481
+                                  &ptpClock->parentPortIdentity, " ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6482
+      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
  6483
+    }
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
-			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
  6486
-				 &ptpClock->parentPortIdentity, " ");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6487
-							 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6488
-			//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
  6489
-		}
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
-		/* 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
  6493
-		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
  6494
-			len += snprintf(sbuf + len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6495
-						     sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6496
-						     " %d ", ptpClock->reset_count);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6497
-		}
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
+    /* 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
  6500
+    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
  6501
+      len += snprintf(sbuf + len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6502
+		      sizeof(sbuf) - len,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6503
+                      " 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
  6504
+      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
  6505
+    }
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
-	/* 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
  6510
-	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
  6511
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6512
+  /* 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
  6513
+  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
  6514
+  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
  6515
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6516
 #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
  6517
 	if (rtOpts->nonDaemon) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6518
@@ -551,8 +681,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6519
 		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
  6520
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6521
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6522
-	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
  6523
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6524
+	write(1, sbuf, len);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6525
+
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
@@ -581,6 +711,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6530
 	return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6531
 }
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
+#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
  6534
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6535
 getTime(TimeInternal * time)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6536
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6537
@@ -600,21 +731,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6538
 	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
  6539
 #endif /* linux || __APPLE__ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6540
 }
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6543
-setTime(TimeInternal * time)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6544
-{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6545
-	struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6546
- 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6547
-	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
  6548
-	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
  6549
-	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
  6550
-	       time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6551
-	settimeofday(&tv, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6552
-	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
  6553
-	       time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6554
-}
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
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6557
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6558
 /* 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
  6559
 double 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6560
@@ -627,44 +744,123 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6561
 
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
- * 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
  6566
- * 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
  6567
- * 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
  6568
- * 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
  6569
- */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6570
 #if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6571
-Boolean
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6572
-adjFreq(Integer32 adj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6573
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6574
+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
  6575
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6576
-	struct timex t;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6577
+	struct timex tmx;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6578
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6579
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6580
-	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
  6581
-	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
  6582
-		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
-	} 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
  6584
-		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
+	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
  6586
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6587
+	tmx.modes = MOD_STATUS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6588
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6589
+	tmx.status = getTimexFlags();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6590
+	if(tmx.status == -1) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6591
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6592
+	/* 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
  6593
+	tmx.status &= ~STA_RONLY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6594
+	tmx.status |= flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6595
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6596
+	ret = adjtimex(&tmx);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6597
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6598
+	if (ret < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6599
+		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
  6600
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6601
+	if(!quiet && ret > 2) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6602
+		switch (ret) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6603
+		case TIME_OOP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6604
+			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
  6605
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6606
+		case TIME_WAIT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6607
+			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
  6608
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6609
+#if !defined(TIME_BAD)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6610
+		case TIME_ERROR:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6611
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6612
+		case TIME_BAD:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6613
+#endif /* TIME_BAD */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6614
+		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6615
+			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
  6616
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6617
+		}
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
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6622
+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
  6623
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6624
+	struct timex tmx;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6625
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6626
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6627
+	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
  6628
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6629
+	tmx.modes = MOD_STATUS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6630
+	tmx.status = getTimexFlags();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6631
+	if(tmx.status == -1)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6632
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6633
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6634
+	/* 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
  6635
+	tmx.status &= ~STA_RONLY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6636
+	tmx.status &= ~flags;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6637
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6638
+	ret = adjtimex(&tmx);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6639
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6640
+	if (ret < 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6641
+		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
  6642
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6643
+	if(!quiet && ret > 2) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6644
+		switch (ret) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6645
+		case TIME_OOP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6646
+			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
  6647
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6648
+		case TIME_WAIT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6649
+			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
  6650
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6651
+#if !defined(TIME_BAD)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6652
+		case TIME_ERROR:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6653
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6654
+		case TIME_BAD:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6655
+#endif /* TIME_BAD */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6656
+		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6657
+			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
  6658
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6659
+		}
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
+int getTimexFlags(void)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6664
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6665
+	struct timex tmx;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6666
+	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6667
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6668
+	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
  6669
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6670
+	tmx.modes = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6671
+	ret = adjtimex(&tmx);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6672
+	if (ret < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6673
+		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
  6674
+		return(-1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6675
+
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
-	t.modes = MOD_FREQUENCY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6679
-	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
  6680
+	return( tmx.status );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6681
+}
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
-	/* 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
  6684
-	int t1 = t.freq;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6685
-	int t2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6686
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6687
-	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
  6688
-	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
  6689
-	t2 = (int)round(f);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6690
-	t.freq = t2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6691
+Boolean
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6692
+checkTimexFlags(int flags) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6693
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6694
-	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
  6695
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6696
-	return !adjtimex(&t);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6697
+    int tflags = getTimexFlags();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6698
+    if (tflags == -1) 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6699
+	    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6700
+    return ((tflags & flags) == flags);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6701
 }
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
 #else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6704
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6705
+/* @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
  6706
+* apple and ioctl timestamping */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6707
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6708
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6709
 adjTime(Integer32 nanoseconds)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6710
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6711
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
  6712
--- /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
  6713
+++ 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
  6714
@@ -0,0 +1,1208 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6715
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6716
+ * 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
  6717
+ * 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
  6718
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6719
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6720
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6721
+ * 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
  6722
+ * 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
  6723
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6724
+ * 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
  6725
+ *    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
  6726
+ * 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
  6727
+ *    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
  6728
+ *    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
  6729
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6730
+ * 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
  6731
+ * 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
  6732
+ * 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
  6733
+ * 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
  6734
+ * 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
  6735
+ * 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
  6736
+ * 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
  6737
+ * 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
  6738
+ * 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
  6739
+ * 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
  6740
+ * 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
  6741
+ */
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
+#include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6744
+#include <stdarg.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6745
+#include <math.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6746
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6747
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6748
+#include <unistd.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6749
+#include <stropts.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6750
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6751
+
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
+#ifdef linux
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6754
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6755
+#include <asm/types.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6756
+#include <linux/errqueue.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6757
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6758
+/* 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
  6759
+ * 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
  6760
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6761
+#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
  6762
+#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
  6763
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6764
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6765
+/* 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
  6766
+ * 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
  6767
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6768
+#ifndef SO_TIMESTAMPING
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6769
+#define SO_TIMESTAMPING  37
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6770
+#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
  6771
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6772
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6773
+/* 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
  6774
+ * 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
  6775
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6776
+#ifndef SIOCSHWTSTAMP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6777
+#define SIOCSHWTSTAMP 0x89b0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6778
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6779
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6780
+#endif /*linux*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6781
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6782
+/* 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
  6783
+enum {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6784
+	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
  6785
+	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
  6786
+	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
  6787
+	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
  6788
+	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
  6789
+	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
  6790
+	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
  6791
+	SOF_TIMESTAMPING_MASK =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6792
+	(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
  6793
+	SOF_TIMESTAMPING_RAW_HARDWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6794
+};
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
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6797
+#include "sfxge_ioctl.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6798
+#else 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6799
+#include "efx_ioctl.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6800
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6801
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6802
+/** 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
  6803
+static PtpClock timeBothClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6804
+PtpClock *G_timeBothClock = NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6805
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6806
+/** 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
  6807
+static  RunTimeOpts timeBothRtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6808
+RunTimeOpts *G_timeBothRtOpts = NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6809
+
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
+ * 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
  6812
+ * Reset by getSendTime().
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6813
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6814
+static TimeInternal lastSendTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6815
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6816
+#ifndef RECV_ARRAY_SIZE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6817
+/**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6818
+ * 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
  6819
+ * 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
  6820
+ * 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
  6821
+ * get very full.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6822
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6823
+# 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
  6824
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6825
+
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
+ * 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
  6828
+ * 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
  6829
+ * fashion.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6830
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6831
+static struct {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6832
+  TimeInternal recvTimeStamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6833
+  UInteger16 sequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6834
+  ClockIdentity clockId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6835
+} lastRecvTimes[RECV_ARRAY_SIZE];
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6836
+
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
+ * 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
  6839
+ * 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
  6840
+ * 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
  6841
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6842
+static int oldestRecv, nextFreeRecv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6843
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6844
+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
  6845
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6846
+#ifndef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6847
+	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
  6848
+	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
  6849
+#else	/* __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6850
+	struct strioctl ioc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6851
+	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
  6852
+	int len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6853
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6854
+	switch(req->cmd) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6855
+		case SFXGE_TS_INIT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6856
+			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
  6857
+			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
  6858
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6859
+		case SFXGE_TS_READ:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6860
+			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
  6861
+			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
  6862
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6863
+		case SFXGE_TS_ADJTIME:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6864
+			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
  6865
+			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
  6866
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6867
+		case SFXGE_TS_SETTIME:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6868
+			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
  6869
+			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
  6870
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6871
+		case SFXGE_TS_SYNC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6872
+			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
  6873
+			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
  6874
+			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6875
+		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6876
+			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
  6877
+			exit (1);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6878
+	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6879
+	(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
  6880
+	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
  6881
+	ioc.ic_timout = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6882
+	ioc.ic_len = len;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6883
+	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
  6884
+	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
  6885
+#endif	/* __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6886
+}
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
+ * 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
  6889
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6890
+ * 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
  6891
+ * 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
  6892
+ * the previous one.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6893
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6894
+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
  6895
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6896
+  TimeInternal delay;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6897
+  static TimeInternal zero;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6898
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6899
+  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
  6900
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6901
+  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
  6902
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6903
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6904
+  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
  6905
+    return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6906
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6907
+  /* 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
  6908
+  static TimeInternal lastsync;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6909
+  TimeInternal now, t;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6910
+  LongDouble offset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6911
+  timerNow(&now);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6912
+  subTime(&t, &now, &lastsync);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6913
+  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
  6914
+  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
  6915
+    return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6916
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6917
+  lastsync = now;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6918
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6919
+  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
  6920
+#if  defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6921
+  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
  6922
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6923
+  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
  6924
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6925
+  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
  6926
+    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
  6927
+    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
  6928
+          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
  6929
+          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
  6930
+    return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6931
+  }
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
+  /* 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
  6934
+  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
  6935
+    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
  6936
+      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
  6937
+        ptpClock->name = "[nic->slave]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6938
+      } 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
  6939
+        ptpClock->name = "[master||nic]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6940
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6941
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6942
+      
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6943
+    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
  6944
+      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
  6945
+        ptpClock->name = "[nic->slave]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6946
+      } 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
  6947
+        ptpClock->name = "[master->nic]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6948
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6949
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6950
+      
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6951
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6952
+      /* Do nothing */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6953
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6954
+  }
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
+  /* 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
  6957
+   * 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
  6958
+   * second.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6959
+   */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6960
+  timeBothClock.leapSecondInProgress = ptpClock->leapSecondInProgress;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6961
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6962
+  // 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
  6963
+  // 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
  6964
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6965
+  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
  6966
+  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
  6967
+  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
  6968
+  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
  6969
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6970
+  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
  6971
+  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
  6972
+  /* 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
  6973
+  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
  6974
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6975
+  /* 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
  6976
+  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
  6977
+  /* 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
  6978
+  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
  6979
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6980
+  updateClock(&timeBothRtOpts, &timeBothClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6981
+  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
  6982
+}
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
+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
  6985
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6986
+  NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6987
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6988
+  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
  6989
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6990
+#ifdef linux
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6991
+  /* 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
  6992
+  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
  6993
+    /* 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
  6994
+    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
  6995
+                              | SOF_TIMESTAMPING_RX_SOFTWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6996
+                              | SOF_TIMESTAMPING_SOFTWARE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6997
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  6998
+    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
  6999
+                   &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
  7000
+      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
  7001
+      return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7002
+    }
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
+    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
  7005
+    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
  7006
+    return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7007
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7008
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7009
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7010
+  /* 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
  7011
+   * 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
  7012
+   */
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
+#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
  7015
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7016
+  /* Attempt SO_TIMSTAMPING */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7017
+  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
  7018
+
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
+  struct hwtstamp_config hwconfig;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7021
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7022
+    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
  7023
+                              | SOF_TIMESTAMPING_RX_HARDWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7024
+                              | SOF_TIMESTAMPING_SYS_HARDWARE
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7025
+                              | SOF_TIMESTAMPING_RAW_HARDWARE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7026
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7027
+    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
  7028
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7029
+    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
  7030
+    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
  7031
+    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
  7032
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7033
+    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
  7034
+      if (errno == ERANGE) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7035
+        /* 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
  7036
+        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
  7037
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7038
+        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
  7039
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7040
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7041
+      /* 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
  7042
+      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
  7043
+                     &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
  7044
+        /* 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
  7045
+         * operation succeeded.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7046
+         */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7047
+        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
  7048
+        /* 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
  7049
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7050
+        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
  7051
+        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
  7052
+        return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7053
+      }
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
+#endif /* ifndef __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7058
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7059
+  /* Attempt IOCTL timestamping */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7060
+  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
  7061
+
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
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7064
+  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
  7065
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7066
+  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
  7067
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7068
+    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
  7069
+    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
  7070
+    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
  7071
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7072
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7073
+    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
  7074
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7075
+    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
  7076
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7077
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7078
+    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
  7079
+      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
  7080
+              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
  7081
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7082
+      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
  7083
+      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
  7084
+      return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7085
+    }
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
+  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
  7089
+  return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7090
+}
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
+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
  7093
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7094
+  Boolean rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7095
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7096
+  switch(rtOpts->time_mode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7097
+  case TIME_SYSTEM:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7098
+    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
  7099
+    return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7100
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7101
+  case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7102
+    /* 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
  7103
+     * 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
  7104
+     * "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
  7105
+     * 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
  7106
+     * 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
  7107
+     * accuracy of measurements."
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7108
+     * 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
  7109
+     * 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
  7110
+     * 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
  7111
+     * 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
  7112
+     *    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
  7113
+     *    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
  7114
+     *    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
  7115
+     *    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
  7116
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7117
+    timeBothClock = *ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7118
+    timeBothRtOpts = *rtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7119
+    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
  7120
+    timeBothRtOpts.ap = DEFAULT_AP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7121
+    timeBothRtOpts.ai = DEFAULT_AI;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7122
+    timeBothClock.portState = PTP_SLAVE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7123
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7124
+    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
  7125
+      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
  7126
+        ptpClock->name = "[nic->slave]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7127
+        timeBothClock.name = "[system->nic]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7128
+        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
  7129
+        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
  7130
+        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
  7131
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7132
+        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7133
+      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
  7134
+        ptpClock->name = "[nic->slave]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7135
+        timeBothClock.name = "[nic->system]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7136
+        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
  7137
+        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
  7138
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7139
+        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7140
+      case PTP_MODE_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7141
+        ptpClock->name = "[master->nic]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7142
+        timeBothClock.name = "[nic->system]";
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7143
+        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
  7144
+        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
  7145
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7146
+        
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7147
+      default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7148
+        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
  7149
+        return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7150
+    }
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
+    initClock(&timeBothRtOpts, &timeBothClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7153
+    G_timeBothClock = &timeBothClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7154
+    G_timeBothRtOpts = &timeBothRtOpts;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7155
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7156
+    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
  7157
+    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
  7158
+      /* 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
  7159
+       * 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
  7160
+       * 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
  7161
+       * 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
  7162
+       * time in this mode.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7163
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7164
+      TimeInternal time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7165
+      timerNow(&time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7166
+      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
  7167
+      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
  7168
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7169
+    return rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7170
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7171
+  case TIME_NIC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7172
+    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
  7173
+    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
  7174
+      /* 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
  7175
+       * 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
  7176
+       * 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
  7177
+       * 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
  7178
+       * time in this mode.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7179
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7180
+      TimeInternal time;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7181
+      timerNow(&time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7182
+      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
  7183
+      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
  7184
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7185
+    return rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7186
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7187
+  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
  7188
+  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
  7189
+    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
  7190
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7191
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7192
+    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
  7193
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7194
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7195
+  }
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
+void shutdownTime(PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7199
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7200
+  NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7201
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7202
+  switch (ptpClock->tsMethod) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7203
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7204
+#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
  7205
+    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
  7206
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7207
+      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
  7208
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7209
+      struct hwtstamp_config hwconfig;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7210
+      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
  7211
+      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
  7212
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7213
+      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
  7214
+      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
  7215
+      (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
  7216
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7217
+      (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
  7218
+                       &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
  7219
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7220
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7221
+#endif /* ifndef __sun */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7222
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7223
+    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
  7224
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7225
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7226
+      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
  7227
+      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
  7228
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7229
+      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
  7230
+      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
  7231
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7232
+      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
  7233
+      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
  7234
+      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
  7235
+      (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
  7236
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7237
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7238
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7239
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7240
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7241
+  }
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
+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
  7245
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7246
+  switch(timeMode)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7247
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7248
+  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
  7249
+  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
  7250
+  case TIME_SYSTEM: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7251
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7252
+#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
  7253
+    struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7254
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7255
+    gettimeofday(&tv, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7256
+    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
  7257
+    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
  7258
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7259
+    struct timespec tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7260
+    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
  7261
+    if (err != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7262
+      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
  7263
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7264
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7265
+    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
  7266
+    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
  7267
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7268
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7269
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7270
+  case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7271
+  case TIME_NIC: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7272
+    NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7273
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7274
+    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
  7275
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7276
+    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
  7277
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7278
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7279
+    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
  7280
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7281
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7282
+    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
  7283
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7284
+    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
  7285
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7286
+    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
  7287
+    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
  7288
+      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
  7289
+            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
  7290
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7291
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7292
+    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
  7293
+    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
  7294
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7295
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7296
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7297
+    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
  7298
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7299
+  }
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
+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
  7303
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7304
+  switch(timeMode)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7305
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7306
+  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
  7307
+  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
  7308
+  case TIME_SYSTEM: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7309
+    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
  7310
+            time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7311
+#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
  7312
+    struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7313
+    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
  7314
+    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
  7315
+    settimeofday(&tv, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7316
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7317
+    struct timespec tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7318
+    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
  7319
+    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
  7320
+    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
  7321
+    if (err != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7322
+      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
  7323
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7324
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7325
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7326
+    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
  7327
+            time->seconds, time->nanoseconds);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7328
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7329
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7330
+  case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7331
+  case TIME_NIC: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7332
+    NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7333
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7334
+    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
  7335
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7336
+    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
  7337
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7338
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7339
+    TimeInternal currentTime, offset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7340
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7341
+    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
  7342
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7343
+    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
  7344
+    getTime(&currentTime, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7345
+    subTime(&offset, time, &currentTime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7346
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7347
+    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
  7348
+    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
  7349
+    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
  7350
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7351
+    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
  7352
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7353
+    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
  7354
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7355
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7356
+    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
  7357
+           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
  7358
+           sizeof(req), &req);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7359
+    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
  7360
+      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
  7361
+            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
  7362
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7363
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7364
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7365
+      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
  7366
+           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
  7367
+           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
  7368
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7369
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7370
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7371
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7372
+    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
  7373
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7374
+  }
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
+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
  7379
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7380
+  switch(timeMode)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7381
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7382
+  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
  7383
+  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
  7384
+  case TIME_SYSTEM: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7385
+    struct timex t;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7386
+    static Boolean maxAdjValid;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7387
+    static LongDouble maxAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7388
+    static LongDouble minTick, maxTick;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7389
+    static LongDouble userHZ;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7390
+    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
  7391
+    LongDouble tickAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7392
+    LongDouble freqAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7393
+    long maxError;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7394
+    int res;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7395
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7396
+    if (!maxAdjValid) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7397
+        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
  7398
+        t.modes = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7399
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7400
+#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
  7401
+    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
  7402
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7403
+        adjtimex(&t);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7404
+        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
  7405
+        tickRes = userHZ * 1000.0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7406
+        /* 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
  7407
+        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
  7408
+        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
  7409
+        maxAdjValid = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7410
+    }
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
+     * 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
  7414
+     * 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
  7415
+     * 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
  7416
+     * -tolerance <= frequency <= tolerance
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7417
+     * 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
  7418
+     *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7419
+     * 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
  7420
+     * 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
  7421
+     *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7422
+     * 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
  7423
+     * range check after scaling.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7424
+     */
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
+     /* 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
  7427
+     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
  7428
+
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
+     * 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
  7431
+     *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7432
+     * 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
  7433
+     * 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
  7434
+     *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7435
+     * 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
  7436
+     * 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
  7437
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7438
+    freqAdj = adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7439
+    tickAdj = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7440
+    if(freqAdj > maxAdj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7441
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7442
+      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
  7443
+      if(tickAdj > maxTick)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7444
+        tickAdj = maxTick;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7445
+      freqAdj = adj - tickAdj * tickRes;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7446
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7447
+    else if(freqAdj < -maxAdj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7448
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7449
+      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
  7450
+      if(tickAdj < minTick)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7451
+        tickAdj = minTick;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7452
+      freqAdj = adj - tickAdj * tickRes;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7453
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7454
+    if(freqAdj > maxAdj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7455
+      freqAdj = maxAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7456
+    else if(freqAdj < -maxAdj)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7457
+      freqAdj = -maxAdj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7458
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7459
+    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
  7460
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7461
+#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
  7462
+#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
  7463
+    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
  7464
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7465
+    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
  7466
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7467
+    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
  7468
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7469
+    /* 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
  7470
+    /* 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
  7471
+    /* 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
  7472
+    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
  7473
+      maxError = 0xffffffff;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7474
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7475
+      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
  7476
+      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
  7477
+        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
  7478
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7479
+        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
  7480
+      }
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
+    t.maxerror = maxError;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7483
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7484
+#ifndef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7485
+    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
  7486
+        "(%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
  7487
+        adj,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7488
+        t.freq, freqAdj,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7489
+        (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
  7490
+        ptpClock->frequency_adjustment,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7491
+        -maxAdj, maxAdj,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7492
+        minTick, maxTick);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7493
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7494
+    res = adjtimex(&t);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7495
+    switch (res) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7496
+    case -1:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7497
+        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
  7498
+              t.freq, strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7499
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7500
+    case TIME_OK:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7501
+        DBG("  -> TIME_OK\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7502
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7503
+    case TIME_INS:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7504
+        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
  7505
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7506
+    case TIME_DEL:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7507
+        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
  7508
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7509
+    case TIME_OOP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7510
+        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
  7511
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7512
+    case TIME_WAIT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7513
+        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
  7514
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7515
+    case TIME_BAD:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7516
+        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
  7517
+        /* 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
  7518
+        t.modes = MOD_STATUS;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7519
+        t.status &= ~STA_UNSYNC;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7520
+        (void)adjtimex(&t);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7521
+        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
  7522
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7523
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7524
+        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
  7525
+        break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7526
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7527
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7528
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7529
+  case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7530
+  case TIME_NIC: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7531
+    /* adjust NIC frequency */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7532
+    NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7533
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7534
+    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
  7535
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7536
+    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
  7537
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7538
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7539
+    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
  7540
+    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
  7541
+      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
  7542
+      ptpClock->frequency_adjustment = -adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7543
+    } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7544
+      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
  7545
+      ptpClock->frequency_adjustment = adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7546
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7547
+    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
  7548
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7549
+    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
  7550
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7551
+    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
  7552
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7553
+    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
  7554
+          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
  7555
+    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
  7556
+      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
  7557
+            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
  7558
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7559
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7560
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7561
+  default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7562
+    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
  7563
+    break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7564
+  }
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
+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
  7568
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7569
+  switch(timeMode)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7570
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7571
+    case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7572
+    case TIME_NIC: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7573
+      NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7574
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7575
+      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
  7576
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7577
+      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
  7578
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7579
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7580
+      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
  7581
+      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
  7582
+      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
  7583
+      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
  7584
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7585
+      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
  7586
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7587
+      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
  7588
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7589
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7590
+      /* 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
  7591
+       * 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
  7592
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7593
+      // 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
  7594
+      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
  7595
+        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
  7596
+        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
  7597
+      }
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
+      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
  7600
+          (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
  7601
+      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
  7602
+        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
  7603
+              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
  7604
+              strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7605
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7606
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7607
+    }
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
+    default: {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7610
+      TimeInternal timeTmp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7611
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7612
+      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
  7613
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7614
+      getTime(&timeTmp, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7615
+      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
  7616
+      subTime(&timeTmp, &timeTmp, offset);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7617
+      /* 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
  7618
+      /* 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
  7619
+      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
  7620
+        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
  7621
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7622
+        setTime(&timeTmp, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7623
+        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
  7624
+      }
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
+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
  7630
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7631
+	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
  7632
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7633
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7634
+	switch(timeMode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7635
+	case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7636
+	case TIME_NIC: 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7637
+	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
  7638
+	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7639
+		NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7640
+		LongDouble adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7641
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7642
+		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
  7643
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7644
+		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
  7645
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7646
+		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
  7647
+#if defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7648
+		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
  7649
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7650
+		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
  7651
+#endif 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7652
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7653
+		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
  7654
+		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
  7655
+		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
  7656
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7657
+		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
  7658
+		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
  7659
+			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
  7660
+			      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
  7661
+			      strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7662
+		}
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
+		/* 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
  7665
+		 * 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
  7666
+		 * 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
  7667
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7668
+		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
  7669
+			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
  7670
+			    + ptpClock->observed_drift;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7671
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7672
+			adjTime(-adj, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7673
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7674
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7675
+	}
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
+	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7678
+		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
  7679
+	}
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
+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
  7683
+{
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
+	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
  7686
+		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7687
+	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7688
+	switch(timeMode) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7689
+	case TIME_BOTH:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7690
+	case TIME_NIC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7691
+	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
  7692
+	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7693
+		NetPath *netPath = &ptpClock->netPath;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7694
+		LongDouble adj;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7695
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7696
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7697
+		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
  7698
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7699
+		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
  7700
+		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
  7701
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7702
+		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
  7703
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7704
+		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
  7705
+		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
  7706
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7707
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7708
+		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
  7709
+		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
  7710
+		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
  7711
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7712
+		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
  7713
+		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
  7714
+			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
  7715
+			      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
  7716
+			      strerror(errno));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7717
+		}
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
+		/* 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
  7720
+		 * 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
  7721
+		 * 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
  7722
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7723
+		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
  7724
+			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
  7725
+			    + ptpClock->observed_drift;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7726
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7727
+			adjTime(-adj, timeMode, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7728
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7729
+		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7730
+	}
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
+	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7733
+		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
  7734
+	}
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
+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
  7739
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7740
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7741
+  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
  7742
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7743
+  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
  7744
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7745
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7746
+  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
  7747
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7748
+  /* 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
  7749
+  do {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7750
+    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
  7751
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7752
+    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
  7753
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7754
+    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
  7755
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7756
+    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
  7757
+      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
  7758
+            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
  7759
+      return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7760
+    }
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
+    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
  7763
+         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
  7764
+         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
  7765
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7766
+    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
  7767
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7768
+      int newIndex;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7769
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7770
+      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
  7771
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7772
+        newIndex = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7773
+        nextFreeRecv = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7774
+        oldestRecv = 2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7775
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7776
+      else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7777
+      {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7778
+        newIndex = nextFreeRecv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7779
+        nextFreeRecv++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7780
+        if(oldestRecv && nextFreeRecv == oldestRecv)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7781
+          ++oldestRecv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7782
+      }
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
+      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
  7785
+        oldestRecv = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7786
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7787
+      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
  7788
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7789
+      if (rawTime) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7790
+        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
  7791
+        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
  7792
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7793
+        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
  7794
+        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
  7795
+      }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7796
+      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
  7797
+                                         | (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
  7798
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7799
+      /* 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
  7800
+       * 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
  7801
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7802
+      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
  7803
+      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
  7804
+      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
  7805
+             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
+             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
  7807
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7808
+      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
  7809
+           newIndex,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7810
+           lastRecvTimes[newIndex].recvTimeStamp.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7811
+           lastRecvTimes[newIndex].recvTimeStamp.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7812
+           lastRecvTimes[newIndex].sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7813
+           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
  7814
+           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
  7815
+    }
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
+    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
  7818
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7819
+      if (rawTime) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7820
+        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
  7821
+        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
  7822
+      } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7823
+        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
  7824
+        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
  7825
+      }
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
+      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
  7828
+           lastSendTime.seconds, lastSendTime.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7829
+           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
  7830
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7831
+  } 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
  7832
+}
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
+Boolean getSendTime(TimeInternal *sendTimeStamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7835
+                    TimeMode timeMode, NetPath *netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7836
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7837
+  /* 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
  7838
+  getTimeStamps(timeMode, netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7839
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7840
+  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
  7841
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7842
+    *sendTimeStamp = lastSendTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7843
+    lastSendTime.seconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7844
+    lastSendTime.nanoseconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7845
+    return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7846
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7847
+  else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7848
+    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7849
+}
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
+ * 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
  7853
+ * in lastRecvTimes[leftIndex, rightIndex[
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7854
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7855
+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
  7856
+                                       ClockIdentity clockId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7857
+                                       UInteger16 sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7858
+                                       int leftIndex, int rightIndex)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7859
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7860
+  int i;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7861
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7862
+  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
  7863
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7864
+  //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
  7865
+  //     sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7866
+  //     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
  7867
+  //     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
  7868
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7869
+  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
  7870
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7871
+    //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
  7872
+    //     i,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7873
+    //     lastRecvTimes[i].recvTimeStamp.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7874
+    //     lastRecvTimes[i].recvTimeStamp.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7875
+    //     lastRecvTimes[i].sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7876
+    //     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
  7877
+    //     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
  7878
+    //     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
  7879
+    //     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
  7880
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7881
+    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
  7882
+       lastRecvTimes[i].sequenceId == sequenceId)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7883
+    {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7884
+      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
  7885
+           i,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7886
+           lastRecvTimes[i].recvTimeStamp.seconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7887
+           lastRecvTimes[i].recvTimeStamp.nanoseconds,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7888
+           lastRecvTimes[i].sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7889
+           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
  7890
+           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
  7891
+           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
  7892
+           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
  7893
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7894
+      *recvTimeStamp = lastRecvTimes[i].recvTimeStamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7895
+      // 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
  7896
+      // 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
  7897
+      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
  7898
+      return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7899
+    }
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
+  return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7902
+}
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
+Boolean getReceiveTime(TimeInternal *recvTimeStamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7905
+                       ClockIdentity clockId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7906
+                       UInteger16 sequenceId,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7907
+                       TimeMode timeMode,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7908
+                       NetPath *netPath)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7909
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7910
+  /* 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
  7911
+  getTimeStamps(timeMode, netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7912
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7913
+  if(oldestRecv <= nextFreeRecv)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7914
+    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
  7915
+  else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7916
+  {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7917
+    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
  7918
+      return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7919
+    else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7920
+      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
  7921
+  }
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
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
  7924
--- 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
  7925
+++ 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
  7926
@@ -1,5 +1,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7927
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7928
- * 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
  7929
+ * 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
  7930
+ * 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
  7931
+ * 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
  7932
  *                         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
  7933
  * 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
  7934
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7935
@@ -39,6 +41,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7936
 #include "../ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7937
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7938
 #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
  7939
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7940
+volatile hrtime_t timerInited;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7941
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7942
 volatile unsigned int elapsed;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7943
 
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
@@ -54,15 +59,38 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7946
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7947
 	elapsed++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7948
 	/* 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
  7949
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7950
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7951
+	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7952
+	 * 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
  7953
+	 * 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
  7954
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7955
+	signal(SIGALRM, catch_alarm);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7956
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7957
 }
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7960
+/** 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
  7961
+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
  7962
+{"PDELAYREQ_INTERVAL_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7963
+  "DELAYREQ_INTERVAL_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7964
+  "SYNC_INTERVAL_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7965
+  "ANNOUNCE_RECEIPT_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7966
+  "ANNOUNCE_INTERVAL_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7967
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7968
+  /* non-spec timers */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7969
+  "OPERATOR_MESSAGES_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7970
+  "LEAP_SECOND_PENDING_TIMER",
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7971
+  "LEAP_SECOND_NOW_TIMER"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7972
+};
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
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7975
 initTimer(void)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7976
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7977
-	struct itimerval itimer;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7978
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7979
 	DBG("initTimer\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7980
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7981
+#if !defined(__sun)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7982
+	struct itimerval itimer;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7983
 	signal(SIGALRM, SIG_IGN);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7984
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7985
 	elapsed = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7986
@@ -71,6 +99,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7987
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7988
 	signal(SIGALRM, catch_alarm);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7989
 	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
  7990
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7991
+	timerInited = gethrtime();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7992
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7993
+
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
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7997
@@ -83,8 +115,18 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  7998
 	 * 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
  7999
 	 * 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
  8000
 	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8001
+#ifdef __sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8002
+	/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8003
+	 * 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
  8004
+	 * 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
  8005
+	 * 'delta'.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8006
+	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8007
+	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
  8008
+	timerInited = gethrtime();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8009
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8010
 	delta = elapsed;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8011
 	elapsed = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8012
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8013
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8014
 	if (delta <= 0)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8015
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8016
@@ -100,7 +142,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8017
 		    <= 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8018
 			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
  8019
 			itimer[i].expire = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8020
-			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
  8021
+			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
  8022
+			    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
  8023
 		}
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
@@ -113,7 +156,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8027
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8028
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8029
 	itimer[index].interval = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8030
-	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
  8031
+	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
  8032
+	    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
  8033
 }
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
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8036
@@ -156,12 +200,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8037
 			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
  8038
 				interval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8039
 			);
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
 	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
  8045
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8046
-	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
  8047
+	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
  8048
+	   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
  8049
 }
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
@@ -173,21 +218,22 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8053
  * PTPv1 algorithm was:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8054
  *    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
  8055
  *    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
  8056
- * 
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
 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
  8061
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8062
 	float new_value;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8063
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8064
 	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
  8065
-	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
  8066
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8067
+	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
  8068
+	    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
  8069
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8070
 	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
  8071
 }
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
-Boolean 
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
 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
  8078
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8079
 	timerUpdate(itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8080
@@ -201,7 +247,28 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8081
 	itimer[index].expire = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8082
 
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
-	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
  8085
+	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
  8086
+	    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
  8087
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8088
 	return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8089
 }
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
+void timerNow(TimeInternal *time)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8092
+{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8093
+#if defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8094
+  struct timeval tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8095
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8096
+  gettimeofday(&tv, 0);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8097
+  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
  8098
+  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
  8099
+#else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8100
+  struct timespec tv;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8101
+  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
  8102
+  if (err != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8103
+    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
  8104
+    return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8105
+  }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8106
+  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
  8107
+  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
  8108
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8109
+}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8110
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
  8111
--- 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
  8112
+++ 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
  8113
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8114
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8115
+ * 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
  8116
+ * 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
  8117
  * 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
  8118
  *                         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
  8119
  * 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
  8120
@@ -105,7 +107,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8121
 netPath_display(NetPath * net)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8122
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8123
 	struct in_addr addr;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8124
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8125
+	DBGV(">>>Network Info:\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8126
 	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
  8127
 	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
  8128
 	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
  8129
@@ -114,6 +116,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8130
 	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
  8131
 	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
  8132
 	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
  8133
+	DBGV("<<<\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8134
 }
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
 /**\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
  8137
@@ -201,27 +204,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8138
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8139
 msgHeader_display(MsgHeader * header)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8140
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8141
-	DBGV("Message header : \n");
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("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8144
-	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
  8145
-	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
  8146
-	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
  8147
-	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
  8148
-	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
  8149
-	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
  8150
+	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
  8151
+	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
  8152
+	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
  8153
+	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
  8154
+	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
  8155
+	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
  8156
 	integer64_display(&header->correctionfield);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8157
 	portIdentity_display(&header->sourcePortIdentity);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8158
-	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
  8159
-	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
  8160
-	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
  8161
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8162
+	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
  8163
+	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
  8164
+	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
  8165
+	DBGV("<<<\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8166
 }
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
 /**\brief Display Announce message*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8169
 void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8170
 msgAnnounce_display(MsgAnnounce * announce)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8171
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8172
-	DBGV("Announce Message : \n");
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("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8175
 	DBGV("originTimestamp : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8176
 	DBGV("secondField  : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8177
@@ -235,7 +238,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8178
 	clockIdentity_display(announce->grandmasterIdentity);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8179
 	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
  8180
 	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
  8181
-	DBGV("\n");
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
 }
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
 /**\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
  8186
@@ -292,8 +295,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8187
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8188
 	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
  8189
 	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8190
-	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
  8191
-	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
  8192
+	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
  8193
+	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
  8194
 	clockQuality_display(&(rtOpts->clockQuality));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8195
 	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
  8196
 	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
  8197
@@ -314,7 +317,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8198
 	timeInternal_display(&(rtOpts->outboundLatency));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8199
 	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
  8200
 	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
  8201
-	DBGV("\n");
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
 }
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
@@ -333,7 +336,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8207
 	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
  8208
 	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
  8209
 	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
  8210
-	DBGV("\n");
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
 }
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
@@ -350,7 +353,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8216
 	timeInternal_display(&ptpClock->offsetFromMaster);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8217
 	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
  8218
 	timeInternal_display(&ptpClock->meanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8219
-	DBGV("\n");
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
 }
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
@@ -371,7 +374,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8225
 	clockQuality_display(&ptpClock->grandmasterClockQuality);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8226
 	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
  8227
 	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
  8228
-	DBGV("\n");
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
 }
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
 /**\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
  8233
@@ -390,7 +393,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8234
 	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
  8235
 	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
  8236
 	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
  8237
-	DBGV("\n");
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
 }
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
 /**\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
  8242
@@ -403,6 +406,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8243
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8244
 	portIdentity_display(&ptpClock->portIdentity);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8245
 	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
  8246
+	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
  8247
 	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
  8248
 	DBGV("peerMeanPathDelay : \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8249
 	timeInternal_display(&ptpClock->peerMeanPathDelay);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8250
@@ -412,7 +416,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8251
 	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
  8252
 	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
  8253
 	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
  8254
-	DBGV("\n");
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
 }
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
 /**\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
  8259
@@ -444,7 +448,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8260
 		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
  8261
 	}
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
-	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8264
+	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
  8265
 
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
@@ -506,7 +510,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8269
 	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
  8270
 	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
  8271
 	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8272
-	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
  8273
+	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
  8274
 	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
  8275
 	DBGV("\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8276
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8277
@@ -519,7 +523,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8278
 	netPath_display(&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8279
 	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
  8280
 	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
  8281
-	DBGV("\n");
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
 }
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
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
  8287
--- 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
  8288
+++ 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
  8289
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8290
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8291
+ * 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
  8292
+ * 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
  8293
  * 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
  8294
  *                         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
  8295
  * 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
  8296
@@ -30,10 +32,10 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8297
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8298
  * @file   protocol.c
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8299
  * @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
  8300
- * 
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
  * @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
  8303
- * 
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
 #include "ptpd.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8310
@@ -73,7 +75,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8311
    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
  8312
    '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
  8313
    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
  8314
-void 
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
 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
  8317
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8318
 	DBG("event POWERUP\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8319
@@ -105,75 +107,83 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8320
 
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
 /* 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
  8323
-void 
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
 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
  8326
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8327
 	ptpClock->message_activity = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8328
-	
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
 	/* leaving state tasks */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8331
 	switch (ptpClock->portState)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8332
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8333
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8334
-		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
  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(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
  8337
-		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
  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
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8340
-		
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
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8343
 		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
  8344
-		
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
 		if (ptpClock->delayMechanism == E2E)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8347
 			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
  8348
 		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
  8349
 			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
  8350
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8351
-		initClock(rtOpts, ptpClock); 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8352
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8353
+    /* 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
  8354
+     * 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
  8355
+     * 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
  8356
+     * 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
  8357
+     * initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8358
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8359
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8360
-		
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
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8363
 		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
  8364
 		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
  8365
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8366
-		
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
 	case PTP_LISTENING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8369
 		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
  8370
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8371
-		
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
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8374
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8375
 	}
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
 	/* entering state tasks */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8379
 
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
 	 * 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
  8382
 	 * implementation.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8383
 	 */
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
 	switch (state)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8387
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8388
 	case PTP_INITIALIZING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8389
 		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
  8390
+		INFO("state -> initialising\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8391
 		ptpClock->portState = PTP_INITIALIZING;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8392
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8393
-		
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
 	case PTP_FAULTY:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8396
 		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
  8397
+		INFO("state -> faulty\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8398
 		ptpClock->portState = PTP_FAULTY;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8399
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8400
-		
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
 	case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8403
 		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
  8404
+		INFO("state -> disabled\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8405
 		ptpClock->portState = PTP_DISABLED;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8406
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8407
-		
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
 	case PTP_LISTENING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8410
 		/* 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
  8411
 		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
  8412
 		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
  8413
 		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
  8414
 		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
  8415
-		
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
 		 *  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
  8419
 		 *  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
  8420
@@ -183,51 +193,52 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8421
 		}
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
 		/* 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
  8424
-		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
  8425
+		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
  8426
+		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
  8427
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8428
 		/* 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
  8429
 		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
  8430
 			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
  8431
 		}
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
 		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
  8436
-		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
  8437
-		timerStart(ANNOUNCE_RECEIPT_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8438
+		INFO("state -> listening\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8439
+		timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8440
 			   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8441
-			   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8442
+			   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8443
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8444
 		ptpClock->portState = PTP_LISTENING;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8445
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8446
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8447
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8448
 		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
  8449
-		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
  8450
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8451
+		INFO("state -> master\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8452
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8453
 		timerStart(SYNC_INTERVAL_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8454
-			   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
  8455
-		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
  8456
-		    pow(2,ptpClock->logSyncInterval));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8457
+				rtOpts->syncInterval, ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8458
+		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
  8459
+				rtOpts->syncInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8460
 		timerStart(ANNOUNCE_INTERVAL_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8461
-			   pow(2,ptpClock->logAnnounceInterval), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8462
-			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8463
-		timerStart(PDELAYREQ_INTERVAL_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8464
-			   pow(2,ptpClock->logMinPdelayReqInterval), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8465
+				rtOpts->announceInterval, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8466
+				ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8467
+		timerStart(PDELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8468
+			   pow(2,ptpClock->logMinPdelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8469
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8470
 		ptpClock->portState = PTP_MASTER;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8471
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8472
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8473
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8474
 		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
  8475
-		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
  8476
+		INFO("state -> passive\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8477
 
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
-		timerStart(PDELAYREQ_INTERVAL_TIMER, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8480
-			   pow(2,ptpClock->logMinPdelayReqInterval), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8481
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8482
+		timerStart(PDELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8483
+			   pow(2,ptpClock->logMinPdelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8484
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8485
-		timerStart(ANNOUNCE_RECEIPT_TIMER, 
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
 			   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8488
-			   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8489
+			   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8490
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8491
 		ptpClock->portState = PTP_PASSIVE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8492
 		p1(ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8493
@@ -235,15 +246,21 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8494
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8495
 	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8496
 		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
  8497
+		INFO("state -> uncalibrated\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8498
 		ptpClock->portState = PTP_UNCALIBRATED;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8499
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8500
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8501
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8502
 		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
  8503
-		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
  8504
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8505
-		initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8506
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8507
+		INFO("state -> slave\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8508
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8509
+		/* 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
  8510
+		 * 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
  8511
+		 * 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
  8512
+		 * 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
  8513
+		 * initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8514
+		 */
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
 		ptpClock->waitingForFollow = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8517
 		ptpClock->waitingForDelayResp = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8518
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8519
@@ -252,16 +269,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8520
 		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
  8521
 		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
  8522
 		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
  8523
-		
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
 		timerStart(OPERATOR_MESSAGES_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8526
 			   OPERATOR_MESSAGES_INTERVAL,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8527
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8528
 		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8529
 		timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8530
 			   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8531
-			   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8532
+			   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8533
 			   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8534
-		
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
 		 * 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
  8538
 		 * 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
  8539
@@ -271,6 +288,24 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8540
 		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
  8541
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8542
 		ptpClock->portState = PTP_SLAVE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8543
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8544
+#if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8545
+
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
+		 * 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
  8548
+		 * 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
  8549
+		 * 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
  8550
+		 * 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
  8551
+		 * 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
  8552
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8553
+		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
  8554
+		    !ptpClock->leapSecondInProgress &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8555
+		   (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
  8556
+			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
  8557
+				"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
  8558
+			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
  8559
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8560
+#endif /* apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8561
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8562
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8563
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8564
@@ -283,11 +318,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8565
 }
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
-Boolean 
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
 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
  8571
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8572
+	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
  8573
 	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
  8574
-	
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
 	/* initialize networking */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8577
 	netShutdown(&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8578
 	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
  8579
@@ -295,27 +331,36 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8580
 		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
  8581
 		return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8582
 	}
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
+	/* 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
  8586
+	shutdownTime(ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8587
+	if(!initTime(rtOpts, ptpClock))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8588
+	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8589
+	    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
  8590
+	    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
  8591
+	    return FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8592
+	}
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
 	/* initialize other stuff */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8595
 	initData(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8596
 	initTimer();
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8597
 	initClock(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8598
 	m1(rtOpts, ptpClock );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8599
-	msgPackHeader(ptpClock->msgObuf, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8600
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8601
+	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
  8602
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8603
 	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
  8604
-	
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
 	return TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8607
 }
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
 /* 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
  8610
-void 
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
 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
  8613
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8614
 	UInteger8 state;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8615
-	
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
 	ptpClock->message_activity = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8618
-	
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
 	/* 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
  8621
 	switch (ptpClock->portState)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8622
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8623
@@ -335,11 +380,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8624
 				toState(state, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8625
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8626
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8627
-		
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
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8630
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8631
 	}
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
 	switch (ptpClock->portState)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8636
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8637
@@ -348,14 +393,26 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8638
 		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
  8639
 		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
  8640
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8641
-		
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
 	case PTP_LISTENING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8644
 	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8645
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8646
 	// 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
  8647
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8648
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8649
+		/* 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
  8650
+                 * 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
  8651
+		 * 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
  8652
+		 * 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
  8653
+		 * 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
  8654
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8655
+		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
  8656
+		    ((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
  8657
+			syncSystemWithNIC(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8658
+		}
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
 		handle(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8661
-		
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
 		 * handle SLAVE timers:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8665
 		 *   - 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
  8666
@@ -367,7 +424,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8667
 			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
  8668
 			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
  8669
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8670
-			if(!ptpClock->slaveOnly && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8671
+			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
  8672
 			   ptpClock->clockQuality.clockClass != 255) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8673
 				m1(rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8674
 				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
  8675
@@ -380,7 +437,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8676
 				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
  8677
 			}
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
 		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
  8682
 			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
  8683
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8684
@@ -396,32 +453,113 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8685
 			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
  8686
 					ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8687
 				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
  8688
-				issuePDelayReq(rtOpts,ptpClock);
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
 			}
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
 			/* 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
  8693
 		}
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
+		/* 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
  8696
+		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
  8697
+			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
  8698
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8699
+		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
  8700
+			/* 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
  8701
+			if(ptpClock->leapSecondInProgress) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8702
+				/* 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8703
+				 * 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
  8704
+				 * 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
  8705
+				 * unpaused in handleAnnounce
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8706
+				 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8707
+				ptpClock->leapSecondPending = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8708
+				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
  8709
+			/* 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
  8710
+			} else if(ptpClock->leapSecondPending) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8711
+				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
  8712
+					"offset updates\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8713
+				ptpClock->leapSecondInProgress = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8714
+#if !defined(__APPLE__)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8715
+				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
  8716
+				    !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
  8717
+					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
  8718
+						"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
  8719
+						"again");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8720
+					setTimexFlags(ptpClock->leap61 ? 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8721
+						      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
  8722
+				}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8723
+#endif /* apple */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8724
+				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
  8725
+					getPauseBeforeMidnight(ptpClock->logAnnounceInterval) + 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8726
+					getPauseAfterMidnight(ptpClock->logAnnounceInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8727
+					ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8728
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8729
+				if (ptpClock->leap61) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8730
+					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
  8731
+						secondsToMidnight(),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8732
+						ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8733
+				} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8734
+					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
  8735
+						secondsToMidnight() - 1.0,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8736
+						ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8737
+				}
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
+		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
  8742
+			if (ptpClock->leap61) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8743
+				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
  8744
+				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
  8745
+			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8746
+				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
  8747
+				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
  8748
+			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8749
+			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
  8750
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8751
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8752
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8753
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8754
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8755
+		/* 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
  8756
+		 * 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
  8757
+		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8758
+		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
  8759
+			syncSystemWithNIC(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8760
+		}
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
-		 * handle SLAVE timers:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8764
+		 * handle MASTER timers:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8765
 		 *   - 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
  8766
 		 *   - 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
  8767
 		 *   - 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
  8768
 		 *      (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
  8769
 		 */
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
+#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
  8773
+                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
  8774
+			/* 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
  8775
+			 * and cancel the signalling.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8776
+			 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8777
+			if (ptpClock->leap61)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8778
+				ptpClock->currentUtcOffset++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8779
+			if (ptpClock->leap59)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8780
+				ptpClock->currentUtcOffset--;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8781
+			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
  8782
+			ptpClock->leap61 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8783
+			ptpClock->leap59 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8784
+			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
  8785
+		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8786
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8787
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8788
 		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
  8789
 			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
  8790
 			issueSync(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8791
 		}
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
 		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
  8795
 			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
  8796
 			issueAnnounce(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8797
 		}
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
 		if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8801
 			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
  8802
 					ptpClock->itimer)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8803
@@ -429,19 +567,20 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8804
 				issuePDelayReq(rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8805
 			}
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
 		// 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
  8810
 		handle(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8811
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8812
-		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
  8813
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8814
+		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
  8815
+		   ptpClock->clockQuality.clockClass == 255)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8816
 			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
  8817
-		
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
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8820
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8821
 	case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8822
 		handle(rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8823
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8824
-		
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
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8827
 		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
  8828
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8829
@@ -456,57 +595,54 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8830
 	int ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8831
 	ssize_t length;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8832
 	Boolean isFromSelf;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8833
+	Boolean isEvent;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8834
+	Boolean isLoopedBackTx = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8835
 	TimeInternal time = { 0, 0 };
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8836
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8837
 	if (!ptpClock->message_activity) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8838
-		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
  8839
-		if (ret < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8840
-			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
  8841
+		/* 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
  8842
+		 * 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
  8843
+		 * 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
  8844
+		TimeInternal timeout;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8845
+		double integerPart, fractionalPart;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8846
+		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
  8847
+		timeout.seconds = (Integer32)integerPart;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8848
+		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
  8849
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8850
+		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
  8851
+		if(ret < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8852
+			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
  8853
 			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
  8854
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8855
 		} else if (!ret) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8856
-			/* DBGV("handle: nothing\n"); */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8857
+			/* 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
  8858
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8859
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8860
 		/* else length > 0 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8861
 	}
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
-	DBGV("handle: something\n");
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
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8866
-	/* 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
  8867
-	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
  8868
-
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
+	isEvent = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8871
+	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
  8872
+                          rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8873
+                          &isLoopedBackTx);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8874
 	if (length < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8875
-		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
  8876
+		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
  8877
 		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
  8878
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8879
 	} else if (!length) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8880
+		isEvent = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8881
 		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
  8882
-					&ptpClock->netPath);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8883
+					ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8884
 		if (length < 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8885
-			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
  8886
+			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
  8887
 			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
  8888
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8889
 		} else if (!length)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8890
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8891
 	}
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
-	 * 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
  8895
-	 *
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
-	 * 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
  8898
-	 * 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
  8899
-	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8900
-	 * 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
  8901
-	 *
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
-	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
  8904
-	if (ptpClock->currentUtcOffsetValid) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8905
-		time.seconds += ptpClock->currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8906
-	}
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
 	ptpClock->message_activity = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8909
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8910
 	if (length < HEADER_LENGTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8911
@@ -517,6 +653,30 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8912
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8913
 	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
  8914
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8915
+	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
  8916
+		/* 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
  8917
+		if(!getReceiveTime(&time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8918
+                       ptpClock->msgTmpHeader.sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8919
+                       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
  8920
+				/*
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8921
+				 * 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
  8922
+				 * "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
  8923
+				 * 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
  8924
+				 * 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
  8925
+				 * 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
  8926
+				 * 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
  8927
+				 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8928
+				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
  8929
+				return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8930
+		}
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
+	/* 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
  8934
+	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
  8935
+	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
  8936
+		time.seconds += ptpClock->currentUtcOffset;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8937
+	}	
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
 	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
  8940
 		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
  8941
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8942
@@ -527,13 +687,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8943
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8944
 	}
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
-	/*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
  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
 	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
  8949
 		      && !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
  8950
 
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
 	 * 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
  8953
-	 *  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
  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
 	 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8956
 	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
  8957
 		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
  8958
@@ -576,27 +736,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8959
 	switch (ptpClock->msgTmpHeader.messageType)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8960
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8961
 	case ANNOUNCE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8962
-		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
  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
 			       length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8965
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8966
 	case SYNC:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8967
-		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
  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
 			   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
  8970
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8971
 	case FOLLOW_UP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8972
-		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
  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
 			       length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8975
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8976
 	case DELAY_REQ:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8977
-		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
  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
 			       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
  8980
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8981
 	case PDELAY_REQ:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8982
-		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
  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
 				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
  8985
-		break;  
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
 	case DELAY_RESP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8988
-		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
  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
 				length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8991
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8992
 	case PDELAY_RESP:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8993
@@ -604,16 +764,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8994
 				 &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
  8995
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8996
 	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
  8997
-		handlePDelayRespFollowUp(&ptpClock->msgTmpHeader, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8998
-					 ptpClock->msgIbuf, length, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  8999
+		handlePDelayRespFollowUp(&ptpClock->msgTmpHeader,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9000
+					 ptpClock->msgIbuf, length,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9001
 					 isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9002
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9003
 	case MANAGEMENT:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9004
-		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
  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
 				 length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9007
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9008
 	case SIGNALING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9009
-		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
  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
 				length, isFromSelf, rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9012
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9013
 	default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9014
@@ -627,11 +787,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9015
 }
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
 /*spec 9.5.3*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9018
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9019
-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
  9020
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9021
+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
  9022
 	       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
  9023
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9024
-	Boolean isFromCurrentParent = FALSE; 
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
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9027
 	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
  9028
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9029
@@ -650,40 +810,63 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9030
 	case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9031
 		DBG("Handleannounce : disregard\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9032
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9033
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9034
-	case PTP_UNCALIBRATED:	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9035
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9036
+	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9037
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9038
 		if (isFromSelf) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9039
 			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
  9040
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9041
 		}
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
 		 * 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
  9046
-		 * will be executed 
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
 		 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9049
 		ptpClock->record_update = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9050
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9051
 		isFromCurrentParent = !memcmp(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9052
 			ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9053
 			header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9054
-			CLOCK_IDENTITY_LENGTH)	&& 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9055
-			(ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9056
+			CLOCK_IDENTITY_LENGTH)	&&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9057
+			(ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9058
 			 header->sourcePortIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9059
-	
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
 		switch (isFromCurrentParent) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9062
 		case TRUE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9063
 	   		msgUnpackAnnounce(ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9064
 					  &ptpClock->msgTmp.announce);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9065
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9066
-			/* 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
  9067
+			/* 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
  9068
+			 * 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
  9069
+			 * (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
  9070
+			 * 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
  9071
+			 * 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
  9072
+			 */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9073
+			if(ptpClock->leapSecondInProgress &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9074
+			   !ptpClock->leapSecondPending) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9075
+				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
  9076
+					"resuming offset updates\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9077
+				ptpClock->leapSecondInProgress = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9078
+				ptpClock->leap59 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9079
+				ptpClock->leap61 = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9080
+				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
  9081
+			}
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
+			/* 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
  9084
 	   		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
  9085
 
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
+			/* 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
  9088
+			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
  9089
+			       header,sizeof(MsgHeader));
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9090
+			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
  9091
+			       &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
  9092
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9093
 			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
  9094
 	   		/*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
  9095
 	   		timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9096
 				   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9097
-				   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9098
+				   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9099
 				   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9100
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9101
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9102
@@ -691,20 +874,20 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9103
 			// 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
  9104
 			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
  9105
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9106
-			break;
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
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9109
 		case FALSE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9110
-			/*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
  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
 			/* 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
  9113
-			
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
 			/* 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
  9116
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9117
 			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
  9118
-			timerStart(ANNOUNCE_RECEIPT_TIMER,
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
 				   (ptpClock->announceReceiptTimeout) * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9121
-				   (pow(2,ptpClock->logAnnounceInterval)), 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9122
+				   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9123
 				   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9124
-			break;
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
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9127
 		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9128
 			DBG("HandleAnnounce : (isFromCurrentParent)"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9129
@@ -718,7 +901,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9130
 	 * 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
  9131
 	 * 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
  9132
 	 *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9133
-	 * 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
  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
 	 *
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
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9138
@@ -756,7 +939,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9139
 			/*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
  9140
 			timerStart(ANNOUNCE_RECEIPT_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9141
 				   (ptpClock->announceReceiptTimeout) *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9142
-				   (pow(2,ptpClock->logAnnounceInterval)),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9143
+				   rtOpts->announceInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9144
 				   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9145
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9146
 			/*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
  9147
@@ -769,27 +952,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9148
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9149
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9150
 
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
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9154
-	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
  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
 	default :
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9157
-		if (isFromSelf) {
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
 			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
  9160
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9161
 		}
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
 		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
  9164
 		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
  9165
-		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
  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
 		break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9168
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9169
 	} /* switch on (port_state) */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9170
 }
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9174
-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
  9175
-	   TimeInternal *time, Boolean isFromSelf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9176
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9177
+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
  9178
+	   TimeInternal *time, Boolean isFromSelf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9179
 	   RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9180
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9181
 	TimeInternal OriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9182
@@ -797,12 +980,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9183
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9184
 	Boolean isFromCurrentParent = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9185
 	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
  9186
-	
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
 	if (length < SYNC_LENGTH) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9189
 		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
  9190
 		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
  9191
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9192
-	}	
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
 	switch (ptpClock->portState) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9196
 	case PTP_INITIALIZING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9197
@@ -810,8 +993,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9198
 	case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9199
 		DBGV("HandleSync : disregard\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9200
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9201
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9202
-	case PTP_UNCALIBRATED:	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9203
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9204
+	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9205
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9206
 		if (isFromSelf) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9207
 			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
  9208
@@ -820,27 +1003,27 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9209
 		isFromCurrentParent =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9210
 			!memcmp(ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9211
 				header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9212
-				CLOCK_IDENTITY_LENGTH) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9213
-			(ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9214
+				CLOCK_IDENTITY_LENGTH) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9215
+			(ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9216
 			 header->sourcePortIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9217
-		
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
 		if (isFromCurrentParent) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9220
 			/* 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
  9221
 			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
  9222
 				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
  9223
 				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
  9224
-				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
  9225
-					ptpClock->logMinDelayReqInterval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9226
+				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
  9227
+					ptpClock->minDelayReqInterval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9228
 				);
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
 				if (ptpClock->delayMechanism == E2E)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9231
 					timerStart(DELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9232
-						   pow(2,ptpClock->logMinDelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9233
-						   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9234
+							ptpClock->minDelayReqInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9235
+							ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9236
 				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
  9237
 					timerStart(PDELAYREQ_INTERVAL_TIMER,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9238
-						   pow(2,ptpClock->logMinPdelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9239
-						   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9240
+                               pow(2,ptpClock->logMinPdelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9241
+                               ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9242
 			}
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
 			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
  9245
@@ -852,13 +1035,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9246
 				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
  9247
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9248
 				ptpClock->waitingForFollow = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9249
-				ptpClock->recvSyncSequenceId = 
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
 					header->sequenceId;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9252
 				/*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
  9253
 				integer64_to_internalTime(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9254
 					header->correctionfield,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9255
 					&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9256
-				ptpClock->lastSyncCorrectionField.seconds = 
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
 					correctionField.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9259
 				ptpClock->lastSyncCorrectionField.nanoseconds =
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9260
 					correctionField.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9261
@@ -895,9 +1078,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9262
 		} if (ptpClock->twoStepFlag) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9263
 			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
  9264
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9265
-			/*Add latency*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9266
-			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
  9267
-			issueFollowup(time,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9268
+      /*Add latency*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9269
+      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
  9270
+      issueFollowup(time,rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9271
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9272
 		} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9273
 			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
  9274
@@ -906,17 +1089,17 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9275
 }
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9279
-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
  9280
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9281
+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
  9282
 	       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
  9283
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9284
 	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
  9285
-	
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
 	TimeInternal preciseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9288
 	TimeInternal correctionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9289
 	Boolean isFromCurrentParent = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9290
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9291
-	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
  9292
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9293
+	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
  9294
 	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9295
 		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
  9296
 		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
  9297
@@ -937,19 +1120,19 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9298
 	case PTP_LISTENING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9299
 		DBGV("Handfollowup : disregard\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9300
 		return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9301
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9302
-	case PTP_UNCALIBRATED:	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9303
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9304
+	case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9305
 	case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9306
-		isFromCurrentParent = 
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
 			!memcmp(ptpClock->parentPortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9309
 				header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9310
-				CLOCK_IDENTITY_LENGTH) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9311
-			(ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9312
+				CLOCK_IDENTITY_LENGTH) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9313
+			(ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9314
 			 header->sourcePortIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9315
-	 	
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
 		if (isFromCurrentParent) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9318
 			if (ptpClock->waitingForFollow)	{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9319
-				if ((ptpClock->recvSyncSequenceId == 
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
 				     header->sequenceId)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9322
 					msgUnpackFollowUp(ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9323
 							  &ptpClock->msgTmp.follow);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9324
@@ -979,6 +1162,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9325
 				     "message \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9326
 		} else
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9327
 			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
  9328
+	break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9329
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9330
 	case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9331
 	case PTP_PASSIVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9332
@@ -994,13 +1178,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9333
 
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
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9336
-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
  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
 	       TimeInternal *time, Boolean isFromSelf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9339
 	       RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9340
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9341
 	if (ptpClock->delayMechanism == E2E) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9342
 		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
  9343
-		
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
 		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
  9346
 			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
  9347
 			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
  9348
@@ -1018,7 +1202,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9349
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9350
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9351
 		case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9352
-			if (isFromSelf)	{
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
 				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
  9355
 					 header->sequenceId);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9356
 				
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9357
@@ -1062,14 +1246,14 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9358
 			// 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
  9359
 			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
  9360
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9361
-					
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
 			issueDelayResp(time,&ptpClock->delayReqHeader,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9364
-				       rtOpts,ptpClock);
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
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9367
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9368
 		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9369
 			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
  9370
-			break;
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
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9373
 	} 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
  9374
 		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
  9375
@@ -1108,16 +1292,16 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9376
 			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
  9377
 				    header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9378
 				    CLOCK_IDENTITY_LENGTH) == 0 ) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9379
-			    (ptpClock->parentPortIdentity.portNumber == 
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
 			     header->sourcePortIdentity.portNumber))
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9382
 				isFromCurrentParent = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9383
-			
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
 			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
  9386
 				    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
  9387
 				    CLOCK_IDENTITY_LENGTH) == 0) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9388
-			    ((ptpClock->sentDelayReqSequenceId - 1)== 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9389
+			    ((UInteger16)(ptpClock->sentDelayReqSequenceId - 1)==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9390
 			     header->sequenceId) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9391
-			    (ptpClock->portIdentity.portNumber == 
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->msgTmp.resp.requestingPortIdentity.portNumber)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9394
 			    && isFromCurrentParent) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9395
 				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
  9396
@@ -1131,15 +1315,15 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9397
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9398
 				toInternalTime(&requestReceiptTimestamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9399
 					       &ptpClock->msgTmp.resp.receiveTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9400
-				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
  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
 					requestReceiptTimestamp.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9403
-				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
  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
 					requestReceiptTimestamp.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9406
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9407
 				integer64_to_internalTime(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9408
 					header->correctionfield,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9409
 					&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9410
-				
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
 					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
  9414
 					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
  9415
@@ -1150,7 +1334,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9416
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9417
 				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
  9418
 					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
  9419
-					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
  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
 				}
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
 				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
  9424
@@ -1160,18 +1344,19 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9425
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9426
 					/* 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
  9427
 					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
  9428
-						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
  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
 							 header->logMessageInterval, ptpClock->logMinDelayReqInterval );
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9431
 					}
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
 					// 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
  9434
 					ptpClock->logMinDelayReqInterval = header->logMessageInterval;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9435
-					
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9436
+					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
  9437
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9438
 					/* 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
  9439
 				} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9440
-					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
  9441
+					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
  9442
 						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
  9443
-							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
  9444
+							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
  9445
 					}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9446
 					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
  9447
 				}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9448
@@ -1187,9 +1372,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9449
 }
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9453
-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
  9454
-		TimeInternal *time, Boolean isFromSelf, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9455
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9456
+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
  9457
+		TimeInternal *time, Boolean isFromSelf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9458
 		RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9459
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9460
 	if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9461
@@ -1201,7 +1386,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9462
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9463
 		}
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
-		switch (ptpClock->portState ) {
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
 		case PTP_INITIALIZING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9468
 		case PTP_FAULTY:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9469
 		case PTP_DISABLED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9470
@@ -1222,7 +1407,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9471
 					time->seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9472
 				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
  9473
 					time->nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9474
-			
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
 				/*Add latency*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9477
 				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
  9478
 					&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
@@ -1230,33 +1415,33 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9480
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9481
 			} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9482
 				msgUnpackHeader(ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9483
-						&ptpClock->PdelayReqHeader);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9484
-				issuePDelayResp(time, header, rtOpts, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9485
-						ptpClock);	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9486
+					&ptpClock->PdelayReqHeader);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9487
+				issuePDelayResp(time, header, rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9488
+					ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9489
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9490
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9491
-		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9492
-			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
  9493
-			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9494
-		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9495
-	} 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
  9496
+    default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9497
+      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
  9498
+      break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9499
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9500
+  } 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
  9501
 		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
  9502
 		      "mode \n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9503
 }
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
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9506
 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
  9507
-		 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
  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
 		 RunTimeOpts *rtOpts, PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9510
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9511
 	if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9512
 		/* 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
  9513
 		TimeInternal requestReceiptTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9514
 		TimeInternal correctionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9515
-	
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
 		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
  9518
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9519
-		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
  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
 			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
  9522
 			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
  9523
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9524
@@ -1276,25 +1461,29 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9525
 			if (ptpClock->twoStepFlag && isFromSelf) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9526
 				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
  9527
 				issuePDelayRespFollowUp(time,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9528
-							&ptpClock->PdelayReqHeader,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9529
-							rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9530
+						&ptpClock->PdelayReqHeader,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9531
+						rtOpts,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9532
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9533
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9534
 			msgUnpackPDelayResp(ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9535
 					    &ptpClock->msgTmp.presp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9536
-		
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
 #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
  9539
 			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
  9540
-						      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
  9541
-				(ptpClock->parentPortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9542
+						      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
  9543
+				(ptpClock->parentPortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9544
 				 header->sourcePortIdentity.portNumber);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9545
-#endif	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9546
-			if (!((ptpClock->sentPDelayReqSequenceId == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9547
-			       header->sequenceId) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9548
+#endif  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9549
+      /* 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
  9550
+       * 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
  9551
+       * 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
  9552
+       */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9553
+			if (!((ptpClock->sentPDelayReqSequenceId ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9554
+			       header->sequenceId) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9555
 			      (!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
  9556
 				 && ( 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
  9557
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9558
-				/* Two Step Clock */
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
 				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
  9561
 					/*Store t4 (Fig 35)*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9562
 					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
  9563
@@ -1304,7 +1493,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9564
 						       &ptpClock->msgTmp.presp.requestReceiptTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9565
 					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
  9566
 					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
  9567
-					
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
 					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
  9570
 					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
  9571
 					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
  9572
@@ -1314,7 +1503,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9573
 					/*Store t4 (Fig 35)*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9574
 					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
  9575
 					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
  9576
-					
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
 					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
  9579
 					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
  9580
 					break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9581
@@ -1337,23 +1526,23 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9582
 	}
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9586
-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
  9587
-			 Boolean isFromSelf, RunTimeOpts *rtOpts, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9588
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9589
+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
  9590
+			 Boolean isFromSelf, RunTimeOpts *rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9591
 			 PtpClock *ptpClock){
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9592
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9593
 	if (ptpClock->delayMechanism == P2P) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9594
 		TimeInternal responseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9595
 		TimeInternal correctionField;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9596
-	
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
 		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
  9599
-	
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
 		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
  9602
 			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
  9603
 			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
  9604
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9605
-		}	
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
 		switch(ptpClock->portState) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9610
 		case PTP_INITIALIZING:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9611
 		case PTP_FAULTY:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9612
@@ -1361,29 +1550,29 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9613
 		case PTP_UNCALIBRATED:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9614
 			DBGV("HandlePdelayResp : disregard\n");
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9615
 			return;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9616
-		
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
 		case PTP_SLAVE:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9619
 		case PTP_MASTER:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9620
 			if ((header->sequenceId == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9621
-			    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
  9622
+			      (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
  9623
 				msgUnpackPDelayRespFollowUp(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9624
-					ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9625
-					&ptpClock->msgTmp.prespfollow);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9626
+						ptpClock->msgIbuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9627
+						&ptpClock->msgTmp.prespfollow);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9628
 				toInternalTime(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9629
-					&responseOriginTimestamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9630
-					&ptpClock->msgTmp.prespfollow.responseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9631
-				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
  9632
-					responseOriginTimestamp.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9633
-				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
  9634
-					responseOriginTimestamp.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9635
+						&responseOriginTimestamp,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9636
+						&ptpClock->msgTmp.prespfollow.responseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9637
+				 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
  9638
+					 responseOriginTimestamp.seconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9639
+				 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
  9640
+					 responseOriginTimestamp.nanoseconds;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9641
 				integer64_to_internalTime(
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9642
-					ptpClock->msgTmpHeader.correctionfield,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9643
-					&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9644
+						ptpClock->msgTmpHeader.correctionfield,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9645
+						&correctionField);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9646
 				addTime(&correctionField,&correctionField,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9647
-					&ptpClock->lastPdelayRespCorrectionField);
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
 				updatePeerDelay (&ptpClock->owd_filt,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9650
-						 rtOpts, ptpClock,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9651
-						 &correctionField,TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9652
+						rtOpts, ptpClock,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9653
+						&correctionField,TRUE);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9654
 				break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9655
 			}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9656
 		default:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9657
@@ -1395,26 +1584,26 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9658
 	}
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9662
-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
  9663
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9664
+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
  9665
 		 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
  9666
 {}
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
-void 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9669
-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
  9670
-		     Boolean isFromSelf, RunTimeOpts *rtOpts, 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9671
+void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9672
+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
  9673
+		     Boolean isFromSelf, RunTimeOpts *rtOpts,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9674
 		     PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9675
 {}
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
 /*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
  9679
-void 
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
 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
  9682
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9683
 	msgPackAnnounce(ptpClock->msgObuf,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9684
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9685
-	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
  9686
-			    &ptpClock->netPath, 0)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9687
+	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
  9688
+			    &ptpClock->netPath, 0) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9689
 		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
  9690
 		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
  9691
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9692
@@ -1429,20 +1618,30 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9693
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9694
 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
  9695
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9696
-	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9697
-	TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9698
-	getTime(&internalTime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9699
-	fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9700
+  Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9701
+  TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9702
+  int rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9703
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9704
+  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
  9705
+  fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9706
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9707
-	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
  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
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9710
-	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
  9711
-		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
  9712
-		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
  9713
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9714
-		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
  9715
-		ptpClock->sentSyncSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9716
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9717
+  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
  9718
+  if (rc != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9719
+    /* 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
  9720
+     * 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
  9721
+     * 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
  9722
+     * 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
  9723
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9724
+    if (rc != ENOTIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9725
+      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
  9726
+      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
  9727
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9728
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9729
+    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
  9730
+    ptpClock->sentSyncSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9731
+  }
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
@@ -1452,11 +1651,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9736
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9737
 	Timestamp preciseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9738
 	fromInternalTime(time,&preciseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9739
-	
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
 	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
  9742
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9743
-	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
  9744
-			    &ptpClock->netPath, 0)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9745
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9746
+	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
  9747
+				&ptpClock->netPath, 0) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9748
 		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
  9749
 		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
  9750
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9751
@@ -1471,11 +1670,12 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9752
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9753
 	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9754
 	TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9755
+	int rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9756
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9757
 	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
  9758
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9759
 	/* 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
  9760
-	getTime(&internalTime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9761
+	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
  9762
 	fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9763
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9764
 	// uses current sentDelayReqSequenceId
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9765
@@ -1488,61 +1688,89 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9766
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9767
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9768
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9769
-	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
  9770
-			  &ptpClock->netPath, dst)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9771
-		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
  9772
-		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
  9773
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9774
-		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
  9775
-		ptpClock->sentDelayReqSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9776
+	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
  9777
+			ptpClock,rtOpts, dst);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9778
+  if (rc != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9779
+    /* 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
  9780
+     * 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
  9781
+     * 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
  9782
+     * 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
  9783
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9784
+    if (rc != ENOTIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9785
+      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
  9786
+      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
  9787
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9788
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9789
+    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
  9790
+    ptpClock->sentDelayReqSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9791
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9792
 		/* 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
  9793
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9794
-		/* 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
  9795
-		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
  9796
-		   pow(2,ptpClock->logMinDelayReqInterval),
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9797
-		   ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9798
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9799
+    /* 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
  9800
+    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
  9801
+		    ptpClock->minDelayReqInterval,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9802
+                       ptpClock->itimer);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9803
+  }
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
 /*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
  9807
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9808
 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
  9809
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9810
-	Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9811
-	TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9812
-	getTime(&internalTime);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9813
-	fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9814
-	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9815
-	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
  9816
+  Timestamp originTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9817
+  TimeInternal internalTime;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9818
+  int rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9819
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9820
+  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
  9821
+  fromInternalTime(&internalTime,&originTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9822
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9823
-	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
  9824
-			      &ptpClock->netPath)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9825
-		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
  9826
-		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
  9827
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9828
-		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
  9829
-		ptpClock->sentPDelayReqSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9830
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9831
+  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
  9832
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9833
+  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
  9834
+		  ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9835
+  if (rc != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9836
+    /* 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
  9837
+     * 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
  9838
+     * 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
  9839
+     * 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
  9840
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9841
+    if (rc != ENOTIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9842
+      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
  9843
+      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
  9844
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9845
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9846
+    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
  9847
+    ptpClock->sentPDelayReqSequenceId++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9848
+  }
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
 /*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
  9852
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9853
 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
  9854
-		PtpClock *ptpClock)
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
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9857
-	Timestamp requestReceiptTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9858
-	fromInternalTime(time,&requestReceiptTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9859
-	msgPackPDelayResp(ptpClock->msgObuf,header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9860
-			  &requestReceiptTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9861
+  Timestamp requestReceiptTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9862
+  fromInternalTime(time,&requestReceiptTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9863
+  int rc;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9864
+  
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9865
+  msgPackPDelayResp(ptpClock->msgObuf,header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9866
+		  &requestReceiptTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9867
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9868
-	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
  9869
-			      &ptpClock->netPath)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9870
-		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
  9871
-		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
  9872
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9873
-		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
  9874
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9875
+  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
  9876
+		  ptpClock, rtOpts);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9877
+  if (rc != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9878
+    /* 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
  9879
+     * 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
  9880
+     * 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
  9881
+     * 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
  9882
+     */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9883
+    if (rc != ENOTIMESTAMP) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9884
+      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
  9885
+      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
  9886
+    }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9887
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9888
+    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
  9889
+  }
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
@@ -1562,8 +1790,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9894
 	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9895
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9896
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9897
-	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
  9898
-			    &ptpClock->netPath, dst)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9899
+	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
  9900
+				&ptpClock->netPath, dst) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9901
 		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
  9902
 		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
  9903
 	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9904
@@ -1574,73 +1802,73 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9905
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9906
 void
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9907
 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
  9908
-			     RunTimeOpts *rtOpts, PtpClock *ptpClock)
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
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9911
-	Timestamp responseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9912
-	fromInternalTime(time,&responseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9913
+  Timestamp responseOriginTimestamp;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9914
+  fromInternalTime(time,&responseOriginTimestamp);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9915
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9916
-	msgPackPDelayRespFollowUp(ptpClock->msgObuf,header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9917
-				  &responseOriginTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9918
+  msgPackPDelayRespFollowUp(ptpClock->msgObuf,header,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9919
+		  &responseOriginTimestamp,ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9920
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9921
-	if (!netSendPeerGeneral(ptpClock->msgObuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9922
-				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
  9923
-				&ptpClock->netPath)) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9924
-		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
  9925
-		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
  9926
-	} else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9927
-		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
  9928
-	}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9929
+  if (netSendPeerGeneral(ptpClock->msgObuf,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9930
+			  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
  9931
+			  &ptpClock->netPath) != 0) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9932
+    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
  9933
+    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
  9934
+  } else {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9935
+    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
  9936
+  }
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
-void 
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
 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
  9942
 		PtpClock *ptpClock)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9943
 {}
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
-void 
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
 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
  9948
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9949
 	int i,j;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9950
 	Boolean found = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9951
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9952
 	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
  9953
-	
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
 	/*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
  9956
 	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
  9957
 		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
  9958
 			    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
  9959
-			    CLOCK_IDENTITY_LENGTH) && 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9960
-		    (header->sourcePortIdentity.portNumber == 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9961
+			    CLOCK_IDENTITY_LENGTH) &&
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9962
+		    (header->sourcePortIdentity.portNumber ==
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9963
 		     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
  9964
 		{
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9965
 			/*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
  9966
-			ptpClock->foreign[j].foreignMasterAnnounceMessages++; 
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
 			found = TRUE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9969
 			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
  9970
 			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
  9971
 			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
  9972
 			break;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9973
 		}
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
 		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
  9977
 	}
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
 	/*New Foreign Master*/
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9980
 	if (!found) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9981
-		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
  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
 		    ptpClock->max_foreign_records) {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9984
 			ptpClock->number_foreign_records++;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9985
 		}
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9986
 		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
  9987
-		
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
 		/*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
  9990
 		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
  9991
 		       header->sourcePortIdentity.clockIdentity,
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9992
 		       CLOCK_IDENTITY_LENGTH);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9993
-		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
  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
 			header->sourcePortIdentity.portNumber;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
  9996
 		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
  9997
-		
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
 		 * 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
 10001
 		 * 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
 10002
@@ -1648,9 +1876,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10003
 		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
 10004
 		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
 10005
 		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
 10006
-		
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10007
-		ptpClock->foreign_record_i = 
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+1) % 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10009
-			ptpClock->max_foreign_records;	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10010
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10011
+		ptpClock->foreign_record_i =
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+1) %
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10013
+			ptpClock->max_foreign_records;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10014
 	}
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
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
 10017
--- 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
 10018
+++ 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
 10019
@@ -1,4 +1,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10020
 /*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10021
+ * 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
 10022
+ * 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
 10023
  * 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
 10024
  *                         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
 10025
  * 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
 10026
@@ -57,48 +59,54 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10027
 int
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10028
 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
 10029
 {
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10030
-	PtpClock *ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10031
-	Integer16 ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10032
+    PtpClock *ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10033
+    Integer16 ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10034
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10035
-	/* 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
 10036
-	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
 10037
-	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
 10038
-	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
 10039
-	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
 10040
-	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
 10041
-	rtOpts.priority1 = DEFAULT_PRIORITY1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10042
-	rtOpts.priority2 = DEFAULT_PRIORITY2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10043
-	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
 10044
+    /* 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
 10045
+    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
 10046
+    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
 10047
+    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
 10048
+    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
 10049
+    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
 10050
+    rtOpts.priority1 = DEFAULT_PRIORITY1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10051
+    rtOpts.priority2 = DEFAULT_PRIORITY2;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10052
+    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
 10053
 #ifdef PTP_EXPERIMENTAL
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10054
 	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
 10055
 	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
 10056
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10057
 	
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10058
 	// rtOpts.slaveOnly = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10059
-	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
 10060
-	rtOpts.ifaceName[0] = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10061
-	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
 10062
-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10063
-	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
 10064
-	// rtOpts.displayStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10065
-	// rtOpts.csvStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10066
-	/* 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
 10067
-	rtOpts.displayPackets = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10068
-	// rtOpts.unicastAddress
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10069
-	rtOpts.ap = DEFAULT_AP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10070
-	rtOpts.ai = DEFAULT_AI;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10071
-	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
 10072
-	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
 10073
-	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
 10074
-	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
 10075
-	// rtOpts.ethernet_mode = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10076
-	// 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
 10077
-	// rtOpts.file[0] = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10078
-	rtOpts.logFd = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10079
-	rtOpts.recordFP = NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10080
-	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
 10081
-	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
 10082
-	rtOpts.nonDaemon = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10083
+    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
 10084
+    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
 10085
+    rtOpts.ifaceName[0] = '\0';
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10086
+    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
 10087
+    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
 10088
+    rtOpts.maxReset = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10089
+    rtOpts.maxDelay.seconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10090
+    rtOpts.maxDelay.nanoseconds = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10091
+    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
 10092
+    // rtOpts.displayStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10093
+    rtOpts.verboseStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10094
+    // rtOpts.csvStats = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10095
+    /* 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
 10096
+    rtOpts.displayPackets = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10097
+    // rtOpts.unicastAddress
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10098
+    rtOpts.ap = DEFAULT_AP;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10099
+    rtOpts.ai = DEFAULT_AI;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10100
+    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
 10101
+    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
 10102
+    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
 10103
+    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
 10104
+    rtOpts.ethernet_mode = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10105
+    // 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
 10106
+    // rtOpts.file[0] = 0;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10107
+    rtOpts.logFd = -1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10108
+    rtOpts.recordFP = NULL;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10109
+    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
 10110
+    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
 10111
+    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
 10112
+    rtOpts.nonDaemon = FALSE;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10113
 
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
 	 * defaults for new options
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10116
@@ -112,6 +120,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10117
 #ifdef RUNTIME_DEBUG
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10118
 	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
 10119
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10120
+	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
 10121
+	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
 10122
+	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
 10123
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10124
 	rtOpts.ttl = 1;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10125
 	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
 10126
@@ -121,20 +132,20 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10127
 	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
 10128
 	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
 10129
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10130
-	/* 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
 10131
-	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
 10132
-		return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10133
+    /* 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
 10134
+    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
 10135
+        return ret;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10136
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10137
-	/* 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
 10138
-	G_ptpClock = ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10139
+    /* 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
 10140
+    G_ptpClock = ptpClock;
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10141
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10142
-	/* do the protocol engine */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10143
-	protocol(&rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10144
-	/* forever loop.. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10145
+    /* do the protocol engine */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10146
+    protocol(&rtOpts, ptpClock);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10147
+    /* forever loop.. */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10148
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10149
-	ptpdShutdown(ptpClock);
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
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10152
 	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
 10153
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10154
-	return 1;
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
 }
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10157
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
 10158
--- 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
 10159
+++ 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
 10160
@@ -1,16 +1,47 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10161
+/*-
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10162
+ * 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
 10163
+ * 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
 10164
+ * 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
 10165
+ *                         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
 10166
+ * 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
 10167
+ *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10168
+ * All Rights Reserved
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10169
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10170
+ * 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
 10171
+ * 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
 10172
+ * met:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10173
+ * 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
 10174
+ *    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
 10175
+ * 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
 10176
+ *    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
 10177
+ *    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
 10178
+ * 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10179
+ * 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
 10180
+ * 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
 10181
+ * 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
 10182
+ * 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
 10183
+ * 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
 10184
+ * 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
 10185
+ * 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
 10186
+ * 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
 10187
+ * 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
 10188
+ * 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
 10189
+ * 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
 10190
+ */
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
  * @file   ptpd.h
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10194
  * @mainpage Ptpd v2 Documentation
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10195
- * @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
 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
  *          George Neville-Neil
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10198
  * @version 2.0
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10199
  * @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
 10200
- * 
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
  * @section implementation Implementation
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10203
  * 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
 10204
  * 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
 10205
  * 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
 10206
- * 
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
  * 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
 10209
  * 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
 10210
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10211
@@ -31,7 +62,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10212
 #include <limits.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10213
 #include <netdb.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10214
 #include <sys/time.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10215
-#include <sys/resource.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10216
 #ifndef __APPLE__
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10217
 #include <sys/timex.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10218
 #endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10219
@@ -50,6 +80,11 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10220
 #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
 10221
 #include "datatypes.h"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10222
 #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
 10223
+#ifdef	__sun
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10224
+#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
 10225
+#include <sys/time.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10226
+#include <strings.h>
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10227
+#endif
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10228
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10229
 #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
 10230
 #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
 10231
@@ -61,10 +96,15 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10232
 /* arith.c */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10233
 
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
- * \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
 10236
+ * \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
 10237
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10238
 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
 10239
 /**
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10240
+ * \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
 10241
+ */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10242
+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
 10243
+
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
  * \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
 10246
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10247
 void fromInternalTime(TimeInternal*,Timestamp*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10248
@@ -74,12 +114,6 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10249
  */
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10250
 void toInternalTime(TimeInternal*,Timestamp*);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10251
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10252
-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
 10253
-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
 10254
-
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
  * \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
 10260
  *
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10261
@@ -178,6 +212,7 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10262
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10263
 void clearTime(TimeInternal *time);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10264
 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
 10265
+int log2IntegerSaturateAtZero(LongDouble number);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10266
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10267
 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
 10268
 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
 10269
@@ -193,6 +228,9 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10270
 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
 10271
 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
 10272
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10273
+float secondsToMidnight(void);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10274
+float getPauseBeforeMidnight(Integer8 announceInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10275
+float getPauseAfterMidnight(Integer8 announceInterval);
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10276
 
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
 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
 10279
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
 10280
--- 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
 10281
+++ 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
 10282
@@ -1,10 +1,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10283
 .\" -*- nroff -*"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10284
-.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
 10285
+.\"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10286
+.\" Copyright (c) 2009, 2011, 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
 10287
+.\"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10288
+.TH ptpd "1M" "January, 2012" "version 2.2.0" "System Administration Commands"
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10289
 .SH NAME
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10290
-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
 10291
+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
 10292
 .SH SYNOPSIS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10293
-.B ptpd2
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10294
-[?]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10295
+.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
 10296
+[-?]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10297
 [-B]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10298
 [-c]
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
@@ -22,9 +25,8 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10301
 [-a NUMBER,NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10302
 [-w NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10303
 [-b NAME]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10304
+[-K]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10305
 [-u ADDRESS]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10306
-[-I group]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10307
-[-U]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10308
 [-e]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10309
 [-h]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10310
 [-l NUMBER,NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10311
@@ -41,15 +43,15 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10312
 [-s NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10313
 [-p NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10314
 [-q NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10315
-[-G]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10316
 [-W]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10317
 [-Y NUMBER]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10318
 [-L]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10319
 [-j]
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10320
 .SH DESCRIPTION
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10321
-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
 10322
-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
 10323
-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
 10324
+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
 10325
+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
 10326
+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
 10327
+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
 10328
 .PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10329
 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
 10330
 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
 10331
@@ -59,6 +61,81 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10332
 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
 10333
 .PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10334
 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
 10335
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10336
+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
 10337
+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
 10338
+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
 10339
+.SH SERVICE MANAGEMENT
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10340
+The operation of ptpd is managed as a service by the service
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10341
+management facility, smf(5), under the service identifier:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10342
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10343
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10344
+  svc:/network/ptp:default
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10345
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10346
+.aj
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10347
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10348
+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
 10349
+disabling,  or  requesting  restart,  can be performed using
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10350
+svcadm(1M). The service's status can be  queried  using  the
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10351
+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
 10352
+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
 10353
+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
 10354
+executing the following command:
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10355
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10356
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10357
+  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
 10358
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10359
+.aj
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10360
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10361
+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
 10362
+.PP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10363
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10364
+  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
 10365
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10366
+.aj
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10367
+
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
+See svcadm(1M) and svccfg(1M).
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10370
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10371
+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
 10372
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10373
+.BR config/listen_ifname
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10374
+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
 10375
+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
 10376
+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
 10377
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10378
+.BR config/node_type
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10379
+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
 10380
+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
 10381
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10382
+.BR config/use_hw
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10383
+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
 10384
+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
 10385
+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
 10386
+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
 10387
+with PTP hardware assist.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10388
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10389
+.BR config/domain
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10390
+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
 10391
+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
 10392
+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
 10393
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10394
+.BR config/announce_interval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10395
+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
 10396
+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
 10397
+Default value is 2.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10398
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10399
+.BR config/sync_interval
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10400
+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
 10401
+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
 10402
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10403
+.BR config/logfile
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10404
+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
 10405
+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
 10406
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10407
+.BR  config/other_options
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10408
+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
 10409
+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
 10410
 .SH OPTIONS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10411
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10412
 .B \-?
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10413
@@ -115,15 +192,13 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10414
 .B \-b NAME
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10415
 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
 10416
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10417
+.B \-K
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10418
+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
 10419
+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
 10420
+.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10421
 .B \-u ADDRESS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10422
 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
 10423
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10424
-.B \-I
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10425
-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
 10426
-.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10427
-.B \-U
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10428
-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
 10429
-.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10430
 .B \-e
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10431
 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
 10432
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10433
@@ -172,20 +247,86 @@
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10434
 .B \-q NUMBER
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10435
 specify priority2 attribute
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10436
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10437
-.B \-G
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10438
-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
 10439
-.TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10440
 .B \-W
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10441
-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
 10442
+run as master only
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10443
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10444
 .B \-Y NUMBER
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10445
 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
 10446
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10447
 .B \-L
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10448
-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
 10449
+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
 10450
 .TP
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10451
 .B \-j
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10452
 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
 10453
+.SH EXAMPLES
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10454
+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
 10455
+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
 10456
+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
 10457
+property.
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10458
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10459
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10460
+#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
 10461
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10462
+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
 10463
+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
 10464
+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
 10465
+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
 10466
+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
 10467
+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
 10468
+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
 10469
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10470
+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
 10471
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10472
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10473
+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
 10474
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10475
+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
 10476
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10477
+#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
 10478
+    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
 10479
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10480
+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
 10481
+#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
 10482
+    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
 10483
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10484
+Enable the service -
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10485
+#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
 10486
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10487
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10488
+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
 10489
+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
 10490
+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
 10491
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10492
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10493
+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
 10494
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10495
+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
 10496
+#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
 10497
+    setprop config/use_hw=yes
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10498
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10499
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10500
+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
 10501
+already -
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10502
+.nf
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10503
+#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
 10504
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10505
+.fi
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10506
+.SH NOTES
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10507
+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
 10508
+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
 10509
+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
 10510
+.P
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10511
+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
 10512
+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
 10513
+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
 10514
+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
 10515
+
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10516
+.SH SEE ALSO
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10517
+svcs(1), svcadm(1M), attributes(5), smf(5)
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10518
+
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
+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
 10521
+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
 10522
 
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10523
 .SH AUTHORS
dece556dd5e7 PSARC/2013/284 PTP (Precision Time Protocol) 2.2.0
Prakash Jalan <Prakash.Jalan@oracle.com>
parents:
diff changeset
 10524
 Gael Mace <[email protected]> & Alexandre Van