components/ptp/patches/03-add_hybrid_mode.patch
changeset 4581 021d774e32e1
equal deleted inserted replaced
4580:5c702246a898 4581:021d774e32e1
       
     1 Add support for hybrid mode of operation. An user can provide -U option
       
     2 to ptpd to have hybrid mode enabled. ptpd version higher than 2.2.0 may have
       
     3 hybrid mode enabled by default in which case this patch should be removed.
       
     4 
       
     5 diff -r 1a6514e3570d src/Makefile
       
     6 --- a/src/Makefile	Fri Apr 03 18:07:43 2015 -0700
       
     7 +++ b/src/Makefile	Fri Apr 03 21:12:39 2015 -0700
       
     8 @@ -43,7 +43,7 @@
       
     9  #CFLAGS += -DDBG_SIGUSR2_CHANGE_DEBUG
       
    10  #CFLAGS += -DPTPD_FULL_OPTIONS
       
    11  
       
    12 -#CFLAGS += -DPTP_EXPERIMENTAL
       
    13 +CFLAGS += -DPTP_EXPERIMENTAL
       
    14  
       
    15  LDFLAGS+= -lm -lrt
       
    16  LDFLAGS += -lnsl -lsocket -lv12n -m64
       
    17 diff -r 1a6514e3570d src/datatypes.h
       
    18 --- a/src/datatypes.h	Fri Apr 03 18:07:43 2015 -0700
       
    19 +++ b/src/datatypes.h	Fri Apr 03 21:12:39 2015 -0700
       
    20 @@ -473,6 +473,11 @@
       
    21  
       
    22    Statistics statistics;
       
    23    
       
    24 +#ifdef PTP_EXPERIMENTAL
       
    25 +	Integer32 MasterAddr;                           // used for hybrid mode, when receiving announces
       
    26 +	Integer32 LastSlaveAddr;                        // used for hybrid mode, when receiving delayreqs
       
    27 +#endif
       
    28 +
       
    29  } PtpClock;
       
    30  
       
    31  /**
       
    32 diff -r 1a6514e3570d src/dep/datatypes_dep.h
       
    33 --- a/src/dep/datatypes_dep.h	Fri Apr 03 18:07:43 2015 -0700
       
    34 +++ b/src/dep/datatypes_dep.h	Fri Apr 03 21:12:39 2015 -0700
       
    35 @@ -133,6 +133,12 @@
       
    36  
       
    37    /* used by IGMP refresh */
       
    38    struct in_addr interfaceAddr;
       
    39 +
       
    40 +#ifdef PTP_EXPERIMENTAL
       
    41 +  /* used for Hybrid mode */
       
    42 +  Integer32 lastRecvAddr;
       
    43 +#endif
       
    44 +
       
    45  } NetPath;
       
    46  
       
    47  #endif /*DATATYPES_DEP_H_*/
       
    48 diff -r 1a6514e3570d src/dep/msg.c
       
    49 --- a/src/dep/msg.c	Fri Apr 03 18:07:43 2015 -0700
       
    50 +++ b/src/dep/msg.c	Fri Apr 03 21:12:39 2015 -0700
       
    51 @@ -40,6 +40,10 @@
       
    52  
       
    53  #include "../ptpd.h"
       
    54  
       
    55 +#ifdef PTP_EXPERIMENTAL
       
    56 +extern RunTimeOpts rtOpts; 
       
    57 +#endif
       
    58 +
       
    59  /*Unpack Header from IN buffer to msgTmpHeader field */
       
    60  void 
       
    61  msgUnpackHeader(Octet * buf, MsgHeader * header)
       
    62 @@ -328,6 +332,12 @@
       
    63  	/* Table 19 */
       
    64  	*(UInteger16 *) (buf + 2) = flip16(DELAY_RESP_LENGTH);
       
    65  	*(UInteger8 *) (buf + 4) = header->domainNumber;
       
    66 +
       
    67 +#ifdef PTP_EXPERIMENTAL
       
    68 +	if(rtOpts.do_hybrid_mode)    
       
    69 +		*(char *)(buf + 6) |= PTP_UNICAST;
       
    70 +#endif
       
    71 +
       
    72  	memset((buf + 8), 0, 8);
       
    73  
       
    74  	/* Copy correctionField of PdelayReqMessage */
       
    75 diff -r 1a6514e3570d src/dep/startup.c
       
    76 --- a/src/dep/startup.c	Fri Apr 03 18:07:43 2015 -0700
       
    77 +++ b/src/dep/startup.c	Fri Apr 03 21:12:39 2015 -0700
       
    78 @@ -662,7 +662,7 @@
       
    79  #endif
       
    80  */
       
    81  
       
    82 -   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:XZKF";
       
    83 +   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:XZKFU";
       
    84  
       
    85    /* parse command line arguments */
       
    86    while ((c = getopt(argc, argv, getopt_string)) != -1) {
       
    87 --- a/src/ptpd2.8	2015-05-18 14:05:20.934031705 -0700
       
    88 +++ b/src/ptpd2.8	2015-05-18 13:59:54.195214157 -0700
       
    89 @@ -27,6 +27,7 @@
       
    90  [-b NAME]
       
    91  [-K]
       
    92  [-u ADDRESS]
       
    93 +[-U]
       
    94  [-e]
       
    95  [-h]
       
    96  [-l NUMBER,NUMBER]
       
    97 @@ -204,6 +205,9 @@
       
    98  .B \-u ADDRESS
       
    99  also send uni-cast to ADDRESS
       
   100  .TP
       
   101 +.B \-U
       
   102 +enable hybrid mode which uses both unicast and multicast
       
   103 +.TP
       
   104  .B \-e
       
   105  run in ethernet mode (currently unimplemented)
       
   106  .TP