)]}'
{
  "log": [
    {
      "commit": "a1eae149f5191516d3a5b795bd0b0cf81c2fdcce",
      "tree": "e820b0a5dc41d924faa604ede2b9218a41612687",
      "parents": [
        "f707926ec0a4c68010c3cfabbaf27ae4ad039b0f"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Mar 04 15:53:37 2025 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 04 05:19:10 2025 -0700"
      },
      "message": "port: Refresh link status on faults.\n\nptp4l gets the ENOBUFS error on the netlink socket when the kernel has\nto drop messages due to full socket buffer. If ptp4l has a port in the\nfaulty state waiting for the link to go up and that event corresponds\nto one of the dropped netlink messages, the port will be stuck in the\nfaulty state until the link goes down and up again.\n\nTo prevent the port from getting stuck, request the current link status\nwhen dispatching the EV_FAULT_DETECTED event. Also, reopen the socket to\nget rid of the buffered messages when handling the fault and again when\nreinitializing the port.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "f707926ec0a4c68010c3cfabbaf27ae4ad039b0f",
      "tree": "e50a8f671c30a98982965630878176dec0f3d214",
      "parents": [
        "472247adca6924f8f68de0dec2b634e1bdff94e9"
      ],
      "author": {
        "name": "Miroslav Lichvar (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Thu Jul 31 11:35:50 2025 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 04 04:39:24 2025 -0700"
      },
      "message": "clock: Create compatibility symlinks for UDS.\n\nIf using the new default UDS-RW/RO addresses, create symlinks at the\noriginal location for compatibility with non-linuxptp clients and\nscripts. This works only when ptp4l is not configured to drop root\nprivileges, otherwise it will not be able to respond to a socket owned\nby root.\n\nDon\u0027t call unlink() to remove an existing socket before trying to create\nthe symlink. It might be a different ptp4l instance still running. Print\na warning message if the path is not already a symlink and the symlink\ncannot be created.\n\nSuggested-by: Martin Pecka \u003cpeckama2@fel.cvut.cz\u003e\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "472247adca6924f8f68de0dec2b634e1bdff94e9",
      "tree": "eb41a5422a09eb3398fecddf297fcaa49d8f902c",
      "parents": [
        "e3ac4d19fcb6864e84232e91b3d920e230c59ee3"
      ],
      "author": {
        "name": "Miroslav Lichvar (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Thu Jul 31 11:35:49 2025 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 04 04:39:18 2025 -0700"
      },
      "message": "config: Move default UDS addresses to /var/run/ptp.\n\n/var/run is normally not writable for non-root users. Move the default\nserver UDS and CMLDS addresses to /var/run/ptp, which will be created by\nptp4l the first time it runs if it does not exist. This makes the\ndefault work well in both cases when the linuxptp programs are running\nunder root and non-root user.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "e3ac4d19fcb6864e84232e91b3d920e230c59ee3",
      "tree": "f2b351f9f030eae1690c5a6a9cfbc1a30e271270",
      "parents": [
        "2f963d533fb8abe035d2a7d25b2dcf22da6f195f"
      ],
      "author": {
        "name": "Miroslav Lichvar (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Thu Jul 31 11:35:48 2025 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 04 04:39:13 2025 -0700"
      },
      "message": "Follow server UDS location in pmc clients.\n\nModify pmc, phc2sys, ts2phc, and tz2alt to bind their client sockets in\nthe same directory as the server\u0027s socket instead of hardcoded /var/run.\nIn the pmc program it\u0027s the default, it can still be configured with the\n-i option to any address.\n\nThis allows the clients to be started under the same user as to which\nptp4l is configured to switch, with all their sockets in the same\ndirectory where the user has write permissions. phc2sys and ts2phc will\nneed also permissions to open the PHC devices and the CAP_SYS_TIME\ncapability needed to adjust the clock (e.g. set by setpriv(1)).\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "2f963d533fb8abe035d2a7d25b2dcf22da6f195f",
      "tree": "71b1a9bc4baa0f1f048a957aff7fe0e69ab78b4a",
      "parents": [
        "92a7b10934be5dbd627d3b4ddfaf026b4b739c7e"
      ],
      "author": {
        "name": "Miroslav Lichvar (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Thu Jul 31 11:35:47 2025 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 04 04:39:06 2025 -0700"
      },
      "message": "uds: Don\u0027t call chmod() on client socket.\n\nThe pmc clients should not need to modify the permissions of their\nsocket (following the uds_file_mode setting), they can rely on their\numask.\n\nMake the chmod() call on the bound socket only in the server.\n\nThis removes a race condition between the bind() and chmod() calls that\ncould potentially be exploited by ptp4l running under a non-root user.\nIt could replace the socket with a symlink in order to make the client\nrunning under root to change the mode of a different file.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "92a7b10934be5dbd627d3b4ddfaf026b4b739c7e",
      "tree": "f26f7d5343661aa5567add20bfe7a743515bb063",
      "parents": [
        "0a5ce37f4e505d03e5f377d73c32ec9bc7aa28da"
      ],
      "author": {
        "name": "Miroslav Lichvar (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Thu Jul 31 11:35:46 2025 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 04 04:39:01 2025 -0700"
      },
      "message": "uds: Copy ownership of server socket in pmc clients.\n\nptp4l sending a response to a pmc client needs to have permissions to\nwrite to the client\u0027s UNIX domain socket. If ptp4l runs under a non-root\nuser, it cannot write to sockets bound by the pmc client if it did that\nas root.\n\nAfter binding the client socket, change its owner to the owner of the\nserver socket, so it can send the client a response.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "0a5ce37f4e505d03e5f377d73c32ec9bc7aa28da",
      "tree": "6ccfc2fb2920f2d8cf4e938a440e1efc5e4afd01",
      "parents": [
        "1dd5e8f8e2939c239070226772940fd852bca2fb"
      ],
      "author": {
        "name": "Miroslav Lichvar (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Thu Jul 31 11:35:45 2025 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 04 04:38:55 2025 -0700"
      },
      "message": "clock: Add support for dropping root privileges.\n\nAdd \"user\" option to specify the user to which ptp4l should switch after\nopening the PHC device and before binding the network/UDS ports. Create\nthe directory that will contain the UDS-RW/RO sockets if it does not\nexist and change its ownership to allow the UDS sockets to be bound and\nunlinked there.\n\nThe default is to keep the identity of the user which started ptp4l.\n\nIn the jbod mode, or with a bond interface, the PHC devices need to\nhave the permissions set for the non-root user to be able to open them\n(e.g. by adding the user to a system group owning the PHC devices).\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "1dd5e8f8e2939c239070226772940fd852bca2fb",
      "tree": "4834f067f398c01f663b4baeca79457f5203ebff",
      "parents": [
        "ffc6ca284c6593e39817f586b49bce627d146c2a"
      ],
      "author": {
        "name": "Miroslav Lichvar (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Thu Jul 31 11:35:44 2025 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 04 04:38:33 2025 -0700"
      },
      "message": "util: Add functions for dropping root privileges.\n\nAdd a function to switch the process UID/GID to a specified user in\norder to drop the root privileges. Keep only the capabilities needed to\nadjust the clock, enable HW timestamping, bind to privileged ports and\nraw sockets, using the libcap library. Initialize the supplementary\ngroups of the user to make it easier to give it permissions to open PHC\ndevices by adding it to a system group.\n\nAdd a function to create a directory for a UDS address with a specified\nowner, where the programs will be able to bind and unlink their sockets\nwithout root privileges.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "ffc6ca284c6593e39817f586b49bce627d146c2a",
      "tree": "cfcbee491a23671017e3408be13c46709b677a6d",
      "parents": [
        "84910a827c1553b7dfae31116adebd9f662298d5"
      ],
      "author": {
        "name": "Miroslav Lichvar (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Thu Apr 24 13:05:04 2025 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Sep 03 06:25:54 2025 -0700"
      },
      "message": "ts2phc: Add option for external reference in automatic mode.\n\nts2phc running in the automatic mode assumes that the PPS source is one\nof the PHCs used by ptp4l. That doesn\u0027t always have to be the case. Add\n\"external_pps\" option to use the non-automatic-mode reading of the\nsource timestamp and don\u0027t mark sink clocks as targets if they are\nsynchronized by ptp4l.\n\nThe use case is holdover with an externally controlled stabilized clock.\nThe clock is synchronized by an external process to the PHC when it\u0027s\nsynchronized by ptp4l and the PHC is synchronized to the external clock\nby ts2phc when not synchronized by ptp4l. Multiple PHCs can be connected\nto the external clock to make a JBOD boundary clock.\n\nDon\u0027t require the PHC that is synchronized by ptp4l to be receiving the\nPPS signal (providing timestamps) to make it possible to switch the PPS\ndirection to synchronize the external clock if there is only one\nusable channel.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "84910a827c1553b7dfae31116adebd9f662298d5",
      "tree": "7bf5c73f54c618e1cabe61a010415d489f1d0a1f",
      "parents": [
        "a0154d343e7665c97652b9416e6b9576277c6231"
      ],
      "author": {
        "name": "William Comly",
        "email": "william.comly@nav-timing.safrangroup.com",
        "time": "Wed Feb 19 10:12:28 2025 -0500"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Sep 03 06:15:11 2025 -0700"
      },
      "message": "port_signaling.c: ensure that signaling messages respect ptp_minor_version in message header\n\nSigned-off-by: William Comly \u003cwilliam.comly@nav-timing.safrangroup.com\u003e\n"
    },
    {
      "commit": "a0154d343e7665c97652b9416e6b9576277c6231",
      "tree": "0daed2916a69a03d821f3d6dbd819c4b4149d6d1",
      "parents": [
        "aa823dcbe0819d995e9ae6fd0d412073cc85f786"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Jan 16 15:04:06 2025 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Feb 16 18:15:27 2025 -0800"
      },
      "message": "Add management message for timestamp and delay corrections.\n\nAdd a management message to get and set the port egressLatency,\ningressLatency and delayAsymmetry variables. This enables an external\nprocess to compensate for changes in the network and timestamping\nasymmetries while ptp4l is running.\n\nExchange the values as fractional nanoseconds, but parse and print them\nin pmc as whole nanoseconds.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "aa823dcbe0819d995e9ae6fd0d412073cc85f786",
      "tree": "666e25ff24a32f5c8eb9e812549f1ecd3ff73415",
      "parents": [
        "b0ed4e442f73c8420bab4c2a38bf51a6e9e8a879"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Jan 16 15:04:05 2025 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Feb 16 18:15:27 2025 -0800"
      },
      "message": "Add management message for external grandmaster properties.\n\nAdd EXTERNAL_GRANDMASTER_PROPERTIES_NP management message to get and set\nthe new external grandmasterIdentity and stepsRemoved variables of the\nclock. Together with the GRANDMASTER_SETTINGS_NP message all\ngrandmaster-specific values in announce messages can be now set.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "b0ed4e442f73c8420bab4c2a38bf51a6e9e8a879",
      "tree": "c40880141be6873f1da28dfeff018dc1a379f4c4",
      "parents": [
        "daa30683d98e6aa352cdd54ef0a62a8367190221"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Jan 16 15:04:04 2025 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Feb 16 18:15:27 2025 -0800"
      },
      "message": "clock: Add variables for external grandmaster.\n\nWhen ptp4l is configured to run as the server part of a bridge between\ndifferent domains, or a boundary clock split into multiple instances\n(using one or two clocks), it announces its own clock identity as\ngrandmasterIdentity and stepsRemoved of 0. The clients of the server\ndon\u0027t see the true identity and distance, which can impact the result of\nBMCA if there are multiple bridges/paths to the grandmaster. In the\nworst case it could cause synchronization loops.\n\nAdd new variables to the clock that will override the grandmaster\nidentity and stepsRemoved values included in announce messages to make\nit possible to pass them from the source domain as if the bridge/BC was\na single PTP instance. The variables will be used only when in the\ngrandmaster state and when not zero.\n\nRuntime configuration over the UDS port will follow.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "daa30683d98e6aa352cdd54ef0a62a8367190221",
      "tree": "90bb44a9736e8b5742c2e72554347103a0a50a62",
      "parents": [
        "85765cb6a9ed3d76623e7b30571195b3f62f6b24"
      ],
      "author": {
        "name": "Jakub",
        "email": "myszsoda@gmail.com",
        "time": "Tue Jan 14 22:04:13 2025 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Feb 16 17:53:48 2025 -0800"
      },
      "message": "sad.c: Refactor function to conform with GNU89 standard\n\nWhen compiling with --std\u003dgnu89 cflag, there is following compilation error:\nsad.c: In function ‘sad_config_security_association_key’:\nsad.c:656:17: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode\n  656 |                 for (int i \u003d 0; i \u003c key_len; i +\u003d 2) {\n      |                 ^~~\nsad.c:656:17: note: use option ‘-std\u003dc99’, ‘-std\u003dgnu99’, ‘-std\u003dc11’ or ‘-std\u003dgnu11’ to compile your code\n\nUsage of gnu89 (c89 does not work, since Linuxptp uses some gnu extensions) is\nalmost never default in current compilators, thus this change have appeared.\nBut whole codebase conforms with gnu89, thus change conflicting change to\nwork with it.\n\nSigned-off-by: Jakub Raczynski \u003cmyszsoda@gmail.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "85765cb6a9ed3d76623e7b30571195b3f62f6b24",
      "tree": "6d643f8c58571ca80618f4300ef19bc425b8f9b6",
      "parents": [
        "63ef31966224a362ca81db2c69b329c199eae758"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Nov 26 15:10:34 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Dec 02 06:19:33 2024 -0800"
      },
      "message": "phc2sys: Don\u0027t require -O option without -a and -w.\n\nAllow phc2sys to be started in the static mode without the -O option,\nmeaning it should fetch the UTC offset from ptp4l, even if the -w option\nis not included on the command line to wait for ptp4l to have a port in\nthe master or slave state.\n\nThis is useful when the PHC is synchronized by ts2phc or other\napplication and the system clock needs to be synchronized to the PHC\neven when ptp4l has all ports in the faulty state (e.g. all network\nlinks are down).\n\nIt\u0027s the responsibility of the user to start phc2sys when ptp4l is\nalready running. phc2sys will exit with an error message if it cannot\nget a response with the 1-second timeout.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "63ef31966224a362ca81db2c69b329c199eae758",
      "tree": "0a63d001b8878228aa531f9b7594b876c9549e74",
      "parents": [
        "f7d8e95caa26b4bcbe3b669a12492d339893cb8b"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Nov 26 15:10:33 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Dec 01 13:13:18 2024 -0800"
      },
      "message": "phc2sys: Don\u0027t disable pmc agent with -s -d -w options.\n\nWhen phc2sys is started with -s and -d options to combine a PPS device\nand PHC device as a time source, but without an offset specified by\nthe -O option, the pmc agent is disabled after waiting for ptp4l to have\na port in a synchronized state. This prevents phc2sys from following\nchanges in the currentUtcOffset value.\n\nDisable the pmc agent only if no PHC device is specified by the -s\noption, i.e. there are no PHC readings to which the UTC offset could be\napplied.\n\nFixes: 5f1b419c4102 (\"phc2sys: Replace magical test with a proper test.\")\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "f7d8e95caa26b4bcbe3b669a12492d339893cb8b",
      "tree": "e21f3b7ad12b1437fb7d94cf7bd0b83e71f330b6",
      "parents": [
        "5b72dd3c5d8a4a375d65011883ce250633b1f04e"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Nov 26 15:10:32 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Dec 01 13:13:05 2024 -0800"
      },
      "message": "pmc_agent: Use longer update interval when not subscribed.\n\nWhen phc2sys is started with the -w option, the pmc agent is not\nsubscribed to events by the pmc_agent_subscribe() function, which also\nsets the update interval. The update interval in this case is zero,\nwhich means the pmc agent is trying to update the currentUtcOffset value\non every call of pmc_agent_update(), i.e. on every clock update in\nphc2sys.\n\nSet a default update interval of 60 seconds to reduce the rate of\npmc requests.\n\nFixes: e3ca7ea90a9e (\"pmc_agent: Make update interval configurable.\")\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "5b72dd3c5d8a4a375d65011883ce250633b1f04e",
      "tree": "df6073141f3219a0ddd2adceaa39669f10af1e68",
      "parents": [
        "494c2a8b35d4a0e4d4305fe3d128cc39841d36b6"
      ],
      "author": {
        "name": "William Comly",
        "email": "william.comly@nav-timing.safrangroup.com",
        "time": "Thu Oct 31 15:10:20 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Nov 24 17:23:52 2024 -0800"
      },
      "message": "Fix issue where MAC driver is configured with incorrect adjustment flags sometimes returned by SIOCGHWTSTAMP test.\n\nOnce the check for the VLAN bonding flag is complete, clear the ifreq\nmessage to ensure only the intended configuration and flags are set\nin the driver.\n\nSigned-off-by: William Comly \u003cwilliam.comly@nav-timing.safrangroup.com\u003e\n"
    },
    {
      "commit": "494c2a8b35d4a0e4d4305fe3d128cc39841d36b6",
      "tree": "d117ac56d353d2e6afc80fa2ca4094558ee668ed",
      "parents": [
        "aad61e42d44185c5e67f2a77e6f882789f215f3c"
      ],
      "author": {
        "name": "William Comly",
        "email": "william.comly@nav-timing.safrangroup.com",
        "time": "Tue Oct 29 10:38:10 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Nov 24 17:06:22 2024 -0800"
      },
      "message": "port: add port configuration option for profile identifier\n\nThis commit adds configuration of 6-octet profile identifiers for use\nin the clock description. The option helps identify profiles that may\nnot always have configurations unique from the default or other profiles.\n\nWhen using the default 00:00:00:00:00:00 or when not defined, the clock\ndescription falls back to the existing profile checks.\n\nSigned-off-by: William Comly \u003cwilliam.comly@nav-timing.safrangroup.com\u003e\n"
    },
    {
      "commit": "aad61e42d44185c5e67f2a77e6f882789f215f3c",
      "tree": "cae99602dd9d119668c60297747cb883c2cadfd4",
      "parents": [
        "88b12da2573b5a5e7de1e430d7e33ff579b2e38d"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Oct 24 15:24:08 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Nov 24 16:56:45 2024 -0800"
      },
      "message": "phc2sys: Allow static sink clocks in automatic mode.\n\nAllow the -c option to be used together with the -a option. Add the\nspecified clocks to the first domain, where they will stay in the master\nstate and be synchronized when a source is available in the same domain\nor other domains.\n\nMark the clocks added by -c as static and skip them in the domain\nreconfiguration if they duplicate a clock following a ptp4l port.\n\nA use case is synchronization of clocks of backup interfaces in an\nactive-backup bond to minimize the observed offset when the active\ninterface is switched. ptp4l tracks the active interface, which is\nfollowed by the automatic mode of phc2sys. All interfaces included in\nthe bond are specified by the -c option to keep them all synchronized to\nthe same source. The interface which duplicates the current active\ninterface provided by ptp4l is skipped.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "88b12da2573b5a5e7de1e430d7e33ff579b2e38d",
      "tree": "f1435cee98556be58dc48afa8f30d72007e93bc2",
      "parents": [
        "7d23faf26cc42fcac28fd98df9c4afde16a3dfb3"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Oct 24 15:24:07 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Nov 24 16:56:45 2024 -0800"
      },
      "message": "phc2sys: Keep clocks in command-line or ptp4l order.\n\nWhen adding a new clock to the domain, add it to the end of the list to\nkeep them in the same order as specified on the command line or the port\norder of ptp4l.\n\nThis will be needed by new code in the domain reconfiguration expecting\nthe order of reinitialized clocks to be the same as in which they were\nadded to the domain.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "7d23faf26cc42fcac28fd98df9c4afde16a3dfb3",
      "tree": "057cf7f875f8b3a7449fd7540dee56fa1592edb1",
      "parents": [
        "b64f8bdc4d5ddb673f3a5258154e153bdc8ac05f"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Oct 17 15:05:22 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Nov 24 13:44:33 2024 -0800"
      },
      "message": "phc2sys: Wait until pmc agent is subscribed.\n\nWhen phc2sys is configured with multiple domains, different domains may\nhave their pmc agent subscribed after different number of calls of the\npmc_agent_update() function depending on how quickly responses from\nptp4l are received. If one domain triggers reconfiguration and the other\ndomain does not have its agent subscribed yet, it will not have any of\nits clocks synchronized until a port changes state and triggers another\nreconfiguration of the domain.\n\nTo avoid this problem, wait for each domain to have its agent subscribed\nbefore entering the main synchronization loop. Use a 10ms update\ninterval to speed up the start of phc2sys.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "b64f8bdc4d5ddb673f3a5258154e153bdc8ac05f",
      "tree": "2977649a3edd7619d94a4e846472366bbc9034ec",
      "parents": [
        "407021e710e80818bbd51aa6d9fbd8fc78510a73"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Oct 17 15:05:21 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Nov 24 13:42:39 2024 -0800"
      },
      "message": "pmc: Avoid race conditions in agent update.\n\nThe pmc_agent_update() function updates the subscription to\nnotifications and also the current UTC offset. It uses a timeout of 0\nto avoid blocking. When the pmc client sends the first request, the\nresponse from ptp4l may not come quickly enough to be received in the\nsame run_pmc() call. It then sends the other request and checks for the\nresponse. If it is the response to the first request, it will be ignored.\nThe update works correctly only if both responses are quick enough to be\nreceived in the same call, or are both slow enough that they are\nreceived in the next call of the pmc_agent_update() function.\n\nThe function needs to be called a random number of times in order to\nfinish one update. If the mismatch between requests and responses\nhappened consistently, the agent would never reach the up-to-date state\nand phc2sys would not enter the main synchronization loop.\n\nSplit the update into two phases, where only one thing is updated at a\ntime. The function now needs to be called at most 3 times to update both\nthe subscription and UTC offset, assuming it is not interrupted by\nanother request outside of the agent\u0027s update.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "407021e710e80818bbd51aa6d9fbd8fc78510a73",
      "tree": "165f259dc29618db1fa677f96c5eedcce5d5cd66",
      "parents": [
        "dbc9e7792793600bb94003aa2ae9dba84a37a7bd"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Wed Sep 25 14:37:20 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Nov 24 13:22:00 2024 -0800"
      },
      "message": "udp: Fix port-specific ptp/p2p_dst_ipv4 configuration.\n\nIf different ports are configured with a different ptp_dst_ipv4 or\np2p_dst_ipv4 address, only the last port in the configuration works\ncorrectly. This is caused by a global variable holding the\ndestination address for all ports using the udp transport.\n\nMove the address to the udp structure to avoid the conflict between\ndifferent ports, same as when port-specific scope in udp6 was fixed\nin commit a48666bee3dd (\"udp6: Make mc6_addr transport-local\").\n\nFixes: 8a26c94cc88e (\"udp+udp6: Make IP addresses configurable.\")\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "dbc9e7792793600bb94003aa2ae9dba84a37a7bd",
      "tree": "e82ed679e28ad67ba3a29334eef4ea7fed005854",
      "parents": [
        "d539cf5a0c32f34113dabc3ea676fab6af242f7a"
      ],
      "author": {
        "name": "Vincent Cheng",
        "email": "vscheng@gmail.com",
        "time": "Tue Sep 17 15:23:54 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Nov 24 13:12:53 2024 -0800"
      },
      "message": "port: Fix unicast negotiation doesn\u0027t recover after FAULT_DETECTED\n\n_Problem_\nAfter a port link down/up or a tx_timestamp timeout issue, a port acting\nas unicast master does not issue ANNC messages after granting unicast\nrequest for ANNC.\n\n_Analysis_\nWhen a port FAULT occurs, the port transitions to FAULTY on FAULT_DETECTED\nand subsequently port_disable(p) and port_initialize(p) are called on port recovery.\n\nA port acting as a unicast master, stores clients in p-\u003eunicast_service-\u003equeue.\n\nWhen a port receives a unicast request, unicast_service_add() is called.\n\nIn unicast_service_add(), if the request does not match an entry in\np-\u003eunicast_service-\u003equeue, FD_UNICAST_SRV_TIMER is started via\nunicast_service_rearm_timer().\n\nIf the unicast request matches an existing p-\u003eunicast_service-\u003equeue entry\nthe request is considered an extension and FD_UNICAST_SRV_TIMER must\nalready be running.\n\nport_disable() clears FD_UNICAST_SRV_TIMER, ie. stops FD_UNICAST_SRV_TIMER.\nHowever, port_disable() does not clear p-\u003eunicast_service-\u003equeue.\nWhen the port is restarted, the port retains the previous client data.\n\nAfter port recovery, when the client attempts to restart the unicast\nservice, the request matches an existing entry in p-\u003eunicast_service-\u003equeue,\nand so FD_UNICAST_SRV_TIMER is not started because the port expected\nthat the FD_UNICAST_SRV_TIMER is already running.\n\n_Fix_\nThis patch clears the unicast client data in port_disable() so\nthat upon recovery, the initial unicast request will be considered\na new request and trigger the start of the FD_UNICAST_SRV_TIMER.\n\nv2:\n- Add missing sign-off\n- Send to develop-request instead of users list\n\nSigned-off-by: Vincent Cheng \u003cvincent.cheng.xh@renesas.com\u003e\n"
    },
    {
      "commit": "d539cf5a0c32f34113dabc3ea676fab6af242f7a",
      "tree": "477ad0327ca39eae4552f0450edb5fd3aa3de240",
      "parents": [
        "fd93c6e9fc3865ef7ff95153cb12166a134c805a"
      ],
      "author": {
        "name": "Luke Howard (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Mon Sep 16 06:45:23 2024 +0000"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Oct 30 23:20:58 2024 -0700"
      },
      "message": "transport: fix spelling in header guard\n\nSigned-off-by: Luke Howard \u003clukeh@padl.com\u003e\n"
    },
    {
      "commit": "fd93c6e9fc3865ef7ff95153cb12166a134c805a",
      "tree": "99d782aca2f266937e2134b44a62a2012c891058",
      "parents": [
        "29898ad4b500948fcb849a91cae52a1975eea248"
      ],
      "author": {
        "name": "Luke Howard (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Mon Sep 16 06:45:22 2024 +0000"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Oct 30 23:20:58 2024 -0700"
      },
      "message": "bmc: fix typo in bmc_state_decision() callback\n"
    },
    {
      "commit": "29898ad4b500948fcb849a91cae52a1975eea248",
      "tree": "a562242fe55d800bb4c3157013c08cd3658c3018",
      "parents": [
        "b926fd7d3747e8a2f88b3cb7816f6efec0d35d62"
      ],
      "author": {
        "name": "Luke Howard (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Mon Sep 16 06:45:21 2024 +0000"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Oct 30 23:20:58 2024 -0700"
      },
      "message": "port: use msg_transport_specific()\n\nuse msg_transport_specific() helper function instead of masking\ntransport-specific bits from tsmt\n\nSigned-off-by: Luke Howard \u003clukeh@padl.com\u003e\n"
    },
    {
      "commit": "b926fd7d3747e8a2f88b3cb7816f6efec0d35d62",
      "tree": "730feed248d3a6445a94cb35643902f4675d9c2d",
      "parents": [
        "f6528ab9b042d8cbfcb7785957bdcec956b1bb0f"
      ],
      "author": {
        "name": "Luke Howard (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Mon Sep 16 06:45:20 2024 +0000"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Oct 30 23:20:58 2024 -0700"
      },
      "message": "makefile: use $(TRANSP) in ts2phc\n\nts2phc explicitly included the transport object files, rather than using the\n$(TRANSP) variable defined earlier in the makefile.\n\nSigned-off-by: Luke Howard \u003clukeh@padl.com\u003e\n"
    },
    {
      "commit": "f6528ab9b042d8cbfcb7785957bdcec956b1bb0f",
      "tree": "9f42fb58fd97ffa66945b05eb0ac92de56417486",
      "parents": [
        "8295246ac74c087884a15083e36ef15ac1bce1d5"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Sep 12 13:41:22 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Oct 30 23:05:26 2024 -0700"
      },
      "message": "ptp4l.8: Fix font change in sa_file description.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "8295246ac74c087884a15083e36ef15ac1bce1d5",
      "tree": "71032e0fa2c4b8ab06f89f35a33e4fe012cdd4b3",
      "parents": [
        "0866d91af49011c71caaadf63baaba33d23c90c2"
      ],
      "author": {
        "name": "Michael Galassi",
        "email": "michael@galassi.us",
        "time": "Wed Sep 11 12:42:29 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Oct 30 22:51:54 2024 -0700"
      },
      "message": "Correct typos in ptp4l man page.\n\nA few typos were noted in ptp4l\u0027s man-page, this patch\ncorrects them.\n\nSigned-off-by: Michael Galassi \u003cmichael@galassi.us\u003e\n"
    },
    {
      "commit": "0866d91af49011c71caaadf63baaba33d23c90c2",
      "tree": "c6be6432b4d6e2fdc49a7ea789c2664d7c2a2f39",
      "parents": [
        "0188667308e62b6ac61151193320ec052e2fd023"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Oct 29 21:27:14 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Oct 29 21:27:14 2024 -0700"
      },
      "message": "Fix man page installation for out of tree builds.\n\nThe makefile supports out of tree builds by using the GNU make VPATH\nfacility.  However, the `make install` target fails to install the man\npages because, unlike the generated binaries, the man page files exist\nonly in the source directory and not in the build directory.  Fix the\nissue by adding the source path prefix to the `install` command line.\n\nReported-by: Martin Pecka \u003cpeckama2@fel.cvut.cz\u003e\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "0188667308e62b6ac61151193320ec052e2fd023",
      "tree": "4a0399635e8b5c84436ee53f93c23988fac730e6",
      "parents": [
        "e2dc1e1ee272ed47790f01d78971bb90fa0dc628"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Sep 07 11:36:01 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Sep 07 11:36:01 2024 -0700"
      },
      "message": "Version 4.4\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "e2dc1e1ee272ed47790f01d78971bb90fa0dc628",
      "tree": "4666f026994bd4420d5936353d93425b6be2d866",
      "parents": [
        "f848316c62dfd751dde60ced86d6159233dd6ee3"
      ],
      "author": {
        "name": "Jacob Keller",
        "email": "jacob.e.keller@intel.com",
        "time": "Thu Sep 05 11:42:13 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 05 21:09:42 2024 -0700"
      },
      "message": "ts2phc: check is_running in ts2phc_pps_sink_poll()\n\nA recent bug in the ts2phc_pps_sink_poll() function caused the ts2phc\nprogram to fail to exit in response to the SIGINT, SIGQUIT, SIGTERM, and\nSIGHUP signals.\n\nIn normal behavior, these signals are caught by the handle_int_quit_term()\nfunction, which sets the global running variable to 0. This causes the main\nloop of the ts2phc main function to terminate and the program will clean up\nand then quit.\n\nHowever, if the ts2phc_pps_sink_poll() function does not exit -- as in the\nbuggy situation previously mentioned -- then the ts2phc application will\nnot exit.\n\nAdditional error checking was added to ts2phc_pps_sink_poll() to prevent it\nfrom continuing when a clock device fails to poll. However, the\napplication may still take some time to finish polling while waiting for\nevents on all of the sink clocks.\n\nIf the user has issued a signal, there is no reason to continue polling,\nand the application ought to stop immediately. In practice, if the signal\narrives while the poll() system call is running, it will exit and set errno\nto EINTR. This normally causes the function to exit with a return of 0.\nHowever, if the signal arrives at another point, the function will continue\npolling until its normal exit condition. This could take some time,\npreventing the program from exiting quickly.\n\nAdd a check against is_running() to the loop body, so that the ts2phc\nprogram will exit efficiently upon being signaled.\n\nSigned-off-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "f848316c62dfd751dde60ced86d6159233dd6ee3",
      "tree": "8df7d963f14d65e48a98e036c96ba17b70a154f3",
      "parents": [
        "0f8ff22a9f148bfea0fffea7b776b80030bf0791"
      ],
      "author": {
        "name": "Jacob Keller",
        "email": "jacob.e.keller@intel.com",
        "time": "Thu Sep 05 11:42:12 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Sep 05 21:09:42 2024 -0700"
      },
      "message": "ts2phc: check for errors on polling the sink devices\n\nThe ts2phc_pps_sink_poll() function polls on the sink clock devices to\ncapture PPS events. It attempts to poll until every sink has at least one\nevent.\n\nThe function does not check POLLERR. If one of the sink clocks has an error\nwhile polling, it will be ignored, and the ts2phc_pps_sink_poll() function\nmay iterate in an infinite loop. The poll function will be called\nrepeatably, reporting POLL_ERR on the descriptor for the bad clock.\n\nThe loop will never terminate, because the sink with a bad clock will never\nget a sink event, and the all_sinks_have_events will never be true.\n\nThis is relatively easy to trigger by simply removing the associated PTP\nclock of a running instance of ts2phc. For example, if you remove the\ndriver of the associated networking device.\n\nYou can see the poll() behavior via strace:\n\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n  poll([{fd\u003d4, events\u003dPOLLIN|POLLPRI}], 1, 2000) \u003d 1 ([{fd\u003d4, revents\u003dPOLLERR}])\n\nThe ts2phc_pps_sink_poll() function repeatably calls poll() and never\nexits.\n\nWorse, the interrupts SIGINT, SIGQUIT, SIGTERM, and SIGHUP all fail to stop\nthe program. These interrupts are all handled via\nhandle_int_quit_term(), which sets the global \u0027running\u0027 variable to 0. This\nis checked via is_running(), but only in the main() function in ts2phc.c\nBecause the ts2phc_pps_sink_poll() function does not exit, the is_running()\ncheck is never triggered.\n\nThus, if a user removes the PTP clock, they will be unable to kill the\nts2phc program via usual means and must resort to a SIGKILL.\n\nIf one of the configured clocks is no longer accessible, ts2phc should stop\nattempting to synchronize it. In most other cases where a clock operation\nfails unexpectedly, ts2phc reports an error message and exits.\n\nAdd a check for the POLLERR return event when iterating over the sink\nclocks. When an error is detected, log an error message and exit. Note that\nunlike sockets, there is no equivalent to sk_get_error() to determine the\nspecific cause of the polling error.\n\nReported-by: Alexander Nowlin \u003cAlexander.Nowlin@intel.com\u003e\nSigned-off-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "0f8ff22a9f148bfea0fffea7b776b80030bf0791",
      "tree": "7263e1224f489524695868eeaccf34e7d6d95725",
      "parents": [
        "3cf17956044b35707f84a392faa3937440dba11d"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Wed Sep 04 15:59:30 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Sep 04 13:22:02 2024 -0700"
      },
      "message": "timemaster: Wait for udev to set up vclock devices.\n\ntimemaster created vclock /dev/ptp devices (by writing to\n/sys/class/ptp/ptp?/n_vclocks) and immediately started ptp4l\ninstances using those vclocks. It\u0027s a race condition. On a\nSELinux-enabled system ptp4l was observed to exit with an error due to\nthe device not having its SELinux context set by udev yet.\n\nAdd a 100-millisecond sleep after creating the vclocks to give udev time\nto finish its job before starting ptp4l instances.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "3cf17956044b35707f84a392faa3937440dba11d",
      "tree": "f7a141330a9cff9ba762941e6ef055820afa260f",
      "parents": [
        "bc5d3d0ae0764be691baa2f893f13ba7d85ce5c5"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Mon Sep 02 12:10:42 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Sep 03 21:13:21 2024 -0700"
      },
      "message": "ts2phc: Fix description of holdover option in man page.\n\nFix the man page to explain that the LOCKED_STABLE servo state is\nenabled by setting the servo_offset_threshold, not\nservo_num_offset_values, which is already enabled by default.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "bc5d3d0ae0764be691baa2f893f13ba7d85ce5c5",
      "tree": "a8aa96b5369315704747cf614662330f293d773b",
      "parents": [
        "0bec0dc42e229125b43d3a2a568eb717caf701b6"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Mon Sep 02 12:10:41 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Sep 03 21:13:21 2024 -0700"
      },
      "message": "ts2phc: Describe servo options in man page.\n\nCopy and adapt missing servo options used by ts2phc from the ptp4l man\npage.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "0bec0dc42e229125b43d3a2a568eb717caf701b6",
      "tree": "0452de334c10a463c4992ef2fef057fbecfe41db",
      "parents": [
        "fe7cf81b33e19ba5d2a2021a216c9ae19629b416"
      ],
      "author": {
        "name": "Nicolas",
        "email": "nicolasthivierge24@gmail.com",
        "time": "Mon Aug 26 14:01:42 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Sep 01 19:27:15 2024 -0700"
      },
      "message": "nmea: Fix tm_isdst uninitialized\n\ntm_isdst of the tm struct was uninitialized. Causing it to read random\nvalues and applying daylight savings time in certain cases.\n\nSigned-off-by: Nicolas Thivierge \u003cnicolasthivierge24@gmail.com\u003e\n"
    },
    {
      "commit": "fe7cf81b33e19ba5d2a2021a216c9ae19629b416",
      "tree": "aa89560a1e319e57162f55d2bce7c12a42b3e16d",
      "parents": [
        "7c2b446d56940935e2c5b5f991e4c04d8b901431"
      ],
      "author": {
        "name": "Erez Geva",
        "email": "ErezGeva2@gmail.com",
        "time": "Mon Jul 29 11:35:19 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Aug 31 18:18:53 2024 -0700"
      },
      "message": "Complete SNMP cleanup.\n\nSigned-off-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "7c2b446d56940935e2c5b5f991e4c04d8b901431",
      "tree": "211c19a5f28fe7c8a37f2a0c788221a6389dadc7",
      "parents": [
        "8157559f1a074cfddfabe7aa00182a53186fc062"
      ],
      "author": {
        "name": "Christopher S Hall",
        "email": "christopher.s.hall@intel.com",
        "time": "Mon Jul 29 15:26:47 2024 +0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Aug 31 18:11:56 2024 -0700"
      },
      "message": "Add permanent subscription option\n\nThis patch enhances the subscription expiration logic in the clock module\nby extending the functionality for subscriptions with a duration of UINT16_MAX.\nWith this update, a UINT16_MAX duration now enables a permanent subscription,\nensuring such subscriptions are not prematurely removed and can persist\nindefinitely.\n\nSigned-off-by: Christopher S Hall \u003cchristopher.s.hall@intel.com\u003e\nSigned-off-by: Noor Azura Ahmad Tarmizi \u003cnoor.azura.ahmad.tarmizi@intel.com\u003e\nSigned-off-by: Song Yoong Siang \u003cyoong.siang.song@intel.com\u003e\nSigned-off-by: Lai Peter Jun Ann \u003cpeter.jun.ann.lai@intel.com\u003e\n"
    },
    {
      "commit": "8157559f1a074cfddfabe7aa00182a53186fc062",
      "tree": "319de7602905b2158b8a6c800c8660d5e0a5869f",
      "parents": [
        "365c994ba873cc0593778de757c03ca2855004ff"
      ],
      "author": {
        "name": "Thomas Devoogdt",
        "email": "thomas.devoogdt@barco.com",
        "time": "Mon Aug 12 11:08:23 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Aug 31 17:45:49 2024 -0700"
      },
      "message": "rtnl: check if the kernel provides if_team\n\n\"net: introduce ethernet teaming device\" was introduced in Linux v3.3 [1],\nthis patch adds support for older kernels\n\n[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id\u003d3d249d4ca7d0ed6629a135ea1ea21c72286c0d80\n\nSigned-off-by: Thomas Devoogdt \u003cthomas.devoogdt@barco.com\u003e\n"
    },
    {
      "commit": "365c994ba873cc0593778de757c03ca2855004ff",
      "tree": "428a85df78453386b7f908857cb34842889ebf43",
      "parents": [
        "59e6f2e3a714d898feed409338fc72498e8b5759"
      ],
      "author": {
        "name": "Chwee-Lin Choong",
        "email": "chwee.lin.choong@intel.com",
        "time": "Tue Jul 23 17:39:29 2024 +0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Aug 31 17:38:20 2024 -0700"
      },
      "message": "port: Drop received 802.1AS packets with invalid transportSpecific values\n\nAccording to IEEE Std 1588-2019 Table 2 and IEEE Std 802.1AS-2020\nSections 11.2.17.1 and 13.3.1.2.16, the permitted transportSpecific\n(or majorSdoId) values for 802.1AS are 0x1 for a gPTP domain and 0x2\nfor CMLDS. Any message received with values other than these is not\nfrom an IEEE802.1AS-2020 PTP Instance and should be dropped.\n\nThis fix ensures that incoming 802.1AS packets with an invalid transportSpecific\nvalue, such as 0x3, are dropped. This is particularly necessary when\nignore_transport_specific\u003d1 is set to allow Pdelay measurements between\nCMLDS-enabled (TS_CMLDS value\u003d0x2) and non-CMLDS systems (TS_IEEE_8021AS value\u003d0x1).\n\nv2: Fixed indentation.\nv3: Added pr_err and fixed trailing whitespace.\nv4: Changed pr_err to pr_debug\n\nSigned-off-by: Chwee-Lin Choong \u003cchwee.lin.choong@intel.com\u003e\nSigned-off-by: Andrew Zaborowski \u003candrew.zaborowski@intel.com\u003e\n"
    },
    {
      "commit": "59e6f2e3a714d898feed409338fc72498e8b5759",
      "tree": "f3a47905c16af29d43079db2f0fb90d45658bc34",
      "parents": [
        "66fcd01f861c735b573f7e07e5d297c0996e0a50"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Jun 11 16:17:38 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jul 29 22:06:27 2024 -0700"
      },
      "message": "ts2phc: Fix timestamp conversion for leap seconds.\n\nThe UTC timestamp parsed from the RMC message needs to be converted to\nTAI in order to calculate the PHC offset. This conversion was done after\nadjusting the timestamp for the measured delay between the reception of\nthe message and the following pulse, which caused the offset measured by\nts2phc to have a one-second error if the message expected during or\nafter a leap second was missed.\n\nApply the TAI-UTC offset to the timestamp parsed from the RMC message\nbefore any adjustments are made to avoid the error.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "66fcd01f861c735b573f7e07e5d297c0996e0a50",
      "tree": "d9266c70599bb1c64a05d8cd3c3c90374df6c5a9",
      "parents": [
        "e110cd99e96ac8504e0feffd65048398a46e4ba8"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Jun 11 16:17:37 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jul 29 22:06:21 2024 -0700"
      },
      "message": "nmea: Fix conversion of leap second.\n\nWhen a leap second is inserted, the RMC message reports time of\n23:59:60, which overflows in mktime() to 0:00:00 after the leap second\nwith an incremented TAI-UTC offset. This causes a one-second error in\nthe offset meaured by ts2phc.\n\nCheck the seconds field of the RMC message and convert 60 to 59 to make\nthe timestamp ambiguous per is_utc_ambiguous() and ignored by ts2phc to\navoid updating the clock with the one-second error.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "e110cd99e96ac8504e0feffd65048398a46e4ba8",
      "tree": "ed2adc5f297bd813ea40e033ae838ef4085764d4",
      "parents": [
        "d3f16da4f853728df86e14c5b98b61eac4cc0686"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Jun 11 16:17:36 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jul 29 22:05:56 2024 -0700"
      },
      "message": "ts2phc: Reset parser after RMC message.\n\nWhen the receiver was configured to generate only RMC messages, every\nother message was skipped due to the parser not being in the right\nstate to process another message. Reset the parser to correctly parse\nevery valid message.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "d3f16da4f853728df86e14c5b98b61eac4cc0686",
      "tree": "63e9db59cf47a999687e9234e95588b6aa9a4b2d",
      "parents": [
        "f722bda9153af4f95f98739d77e2099d7b073671"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Wed Jun 12 10:44:27 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 28 16:11:31 2024 -0700"
      },
      "message": "Drop example snmpd.conf.\n\nThe snmp4lptp code was removed in commit 01db4c884998 (\"Remove the\nunfinished SNMP code.\"). Drop also its example config to avoid\nconfusion.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "f722bda9153af4f95f98739d77e2099d7b073671",
      "tree": "10fda35427a560853f11b9de69a9204fdc4398af",
      "parents": [
        "c6e5766b9b71346297cf04a3bf728bb90c130af9"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Mon Jun 03 16:43:54 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 28 15:43:28 2024 -0700"
      },
      "message": "ts2phc: Add option to correct for NMEA delay.\n\nAdd an option to specify the minimum expected delay of NMEA RMC messages\nto correct timestamps returned by the NMEA PPS time source.\n\nThis enables operation with receivers that have delays outside of the\nexpected 0-1.0s interval, or 0-pulsewidth if the PPS edge rejection is\nenabled.\n\n[ RPC: Preserve alphabetical ordering in the ts2phc man page. ]\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "c6e5766b9b71346297cf04a3bf728bb90c130af9",
      "tree": "27be1917f35d46a1a88774b9be197a4003c2cbac",
      "parents": [
        "6967e52d659e9f001e4648826afa1e3021f4580b"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Mon Jun 03 16:43:53 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 28 15:15:18 2024 -0700"
      },
      "message": "ts2phc: Allow longer NMEA delays.\n\nTimestamps from PPS sources are rounded to the nearest pulse, i.e. for\ncorrect synchronization the offset between the source timestamp and\nexternal PPS event timestamp needs to be between -0.5 and +0.5 seconds.\nFor the pulse edge rejection to work correctly it needs to be even\nsmaller, between -pulsewidth/2 and +pulsewidth/2.\n\nWith the NMEA PPS source the offset is the delay in the reception of the\nRMC message. This message is not expected to come exactly on time with\nthe corresponding pulse. A positive delay is expected, typically at\nleast few tens of milliseconds, but some receivers have delays longer\nthan 0.5 seconds.\n\nAdd NMEA-specific rounding of the offset to not expect negative delays\nand allow positive delays of up to 1 second, or whole pulsewidth if the\nedge rejection is enabled.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "6967e52d659e9f001e4648826afa1e3021f4580b",
      "tree": "187442efdfc883e97805fa0560060244ef2a3455",
      "parents": [
        "0011504e216b4e9d3bd0b3185783206b35753dc4"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Mon Jun 03 16:43:52 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 28 15:15:13 2024 -0700"
      },
      "message": "ts2phc: Move upper/lower rejection limit calculation.\n\nThe ignore_upper and ignore_lower fields of the ts2phc_pps_sink struct\nare calculated when the PPS source is not known yet. Replace the fields\nwith the configured pulsewidth and calculate the limits locally later\nwhen needed in ts2phc_pps_sink_ignore(). This will allow an\nNMEA-specific calculation of the limits.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "0011504e216b4e9d3bd0b3185783206b35753dc4",
      "tree": "3dd2cb62ba691464674becbe839367acc1d11740",
      "parents": [
        "ada36c7e781f218e91bda48731bb70954e914c4e"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Mon Jun 03 16:43:51 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 28 15:15:08 2024 -0700"
      },
      "message": "ts2phc: Fix edge rejection for pulse widths over 0.5s.\n\nIf the configured pulse width is longer than 0.5 seconds, the calculated\nrange of ignored offsets is too small to cover the wrong edge. Fix the\ncalculation of the limits to use the minimum of pulsewidth and\n(1.0s - pulsewidth). A pulsewidth of 0.5s should give the shortest interval.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "ada36c7e781f218e91bda48731bb70954e914c4e",
      "tree": "6c26c612bd176258b3a9f537760e30e17cafd6b0",
      "parents": [
        "ab3eb1c0ccf852c75c1e93b8cdea9eb2988727d1"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Mon Jun 03 16:43:50 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 28 15:14:32 2024 -0700"
      },
      "message": "ts2phc: Provide source type.\n\nSave the PPS source type in the instance and add a function to retrieve\nit. This will be needed for NMEA-specific rounding of timestamps.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\n"
    },
    {
      "commit": "ab3eb1c0ccf852c75c1e93b8cdea9eb2988727d1",
      "tree": "033c8b41a073dbf9437fdb28d37bf7b0792098b4",
      "parents": [
        "5ce45bd1a93674fc9cf48552c7a4d2e07b286be5"
      ],
      "author": {
        "name": "Christopher S Hall",
        "email": "christopher.s.hall@intel.com",
        "time": "Mon Apr 15 19:23:52 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 21 18:10:22 2024 -0700"
      },
      "message": "Filter any PTP frames with the source MAC of the local interface\n\nLinux loops outgoing L2 multicast frames to the local device, particularly\nthey\u0027re seen by other ptp4l instances using the same device.  There isn\u0027t\nany setting similar to IP multicast loop for packet sockets.\n\nAdds source MAC filter to the event/general BPF filter that is attached\nto the socket(s).\n\nThis fixes floods of messages like the following in multi-domain setups\non physical devices (not veth and similar):\nport 1 (enp0s30f4): received SYNC without timestamp\nport 1 (enp0s30f4): received PDELAY_RESP without timestamp\n\nSigned-off-by: Christopher S Hall \u003cchristopher.s.hall@intel.com\u003e\nSigned-off-by: Andrew Zaborowski \u003candrew.zaborowski@intel.com\u003e\n"
    },
    {
      "commit": "5ce45bd1a93674fc9cf48552c7a4d2e07b286be5",
      "tree": "105289beb4b1f8861c0a5e979b45b46fe6ff9fc9",
      "parents": [
        "9c48f5d7765f63d54669d202adbd2cf959abd2cf"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu May 16 15:52:49 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 21 17:20:58 2024 -0700"
      },
      "message": "ts2phc: Add holdover support.\n\nIf the external PPS signal is generated by a clock with better long-term\nstability than the clock synchronizing to it, it can work as a good time\nsource for some period of time after losing its own time source (e.g.\nGPS receiver losing its signal).\n\nAdd an option to specify a holdover interval where ts2phc can continue\nsynchronizing the clock without any ToD information. Allow that only in\nthe LOCKED_STABLE servo state, which needs to be enabled by the\nservo_num_offset_values option.\n\nThis is supported only in the non-automatic mode and when the pulse\npolarity detection is disabled.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "9c48f5d7765f63d54669d202adbd2cf959abd2cf",
      "tree": "51b908b3766744a6b5497355e85b55f9e933aa70",
      "parents": [
        "52beedfffce8dc7d2661fbe2d5bebee53e1528ca"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu May 16 15:52:48 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sun Jul 21 17:12:41 2024 -0700"
      },
      "message": "ts2phc: Avoid unnecessary call of getppstime().\n\nDon\u0027t get the ToD timestamp for the pulse polarity detection if it won\u0027t\nbe needed (i.e. extts_polarity is not \"both\"). This allows PPS\ntimestamps to be saved even when the ToD source fails.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "52beedfffce8dc7d2661fbe2d5bebee53e1528ca",
      "tree": "27ea627c9b9283504c98bd07a3e51ace17142563",
      "parents": [
        "d32aa83625d97f1a9de153086ed1faac44e48c52"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Jun 04 19:11:57 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Jun 04 19:11:57 2024 -0700"
      },
      "message": "Version 4.3\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "d32aa83625d97f1a9de153086ed1faac44e48c52",
      "tree": "02ef5fe492a5174c8c4dd6326e13046868c97123",
      "parents": [
        "1a307a1ca75e239730a2ba3c63287b9d6468d814"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Jun 04 08:57:15 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Jun 04 08:03:36 2024 -0700"
      },
      "message": "ts2phc: Use CLOCK_MONOTONIC_RAW for NMEA PPS timestamp.\n\nIn the calculation of the NMEA PPS timestamp is used an interval\nmeasured by the CLOCK_MONOTONIC system clock. This clock may have a\nlarge frequency error when another process (e.g. phc2sys or an NTP\nclient) is correcting a large time error by slewing.\n\nThis frequency error may cause the timestamp to overflow into the next\nsecond and cause a one-second error in the measured offset, or the wrong\nedge of the pulse to be rejected.\n\nSwitch from CLOCK_MONOTONIC to CLOCK_MONOTONIC_RAW to avoid the\nimpact of the system clock adjustments.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "1a307a1ca75e239730a2ba3c63287b9d6468d814",
      "tree": "b59e75af49eecf5aadd42a72fd99670789c29785",
      "parents": [
        "cbb23a6674f5d53f90a39c11225ce06ba958c0e8"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:12 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:07:43 2024 -0700"
      },
      "message": "nsm: add authentication tlv for nsm\n\nadd sad_process_auth() and sad_append_auth_tlv() to the nsm_recv() and\nnsm_request() functions. In addition, add spp to the nsm structure and\nadd sad_create() \u0026 sad_destroy() to functions.\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "cbb23a6674f5d53f90a39c11225ce06ba958c0e8",
      "tree": "264e25f3e68b3f8eb4419e8d02b2def6c35b8999",
      "parents": [
        "0aef576cd0460cc725f65e1e86a145df0f7e92fe"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:11 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:07:37 2024 -0700"
      },
      "message": "pmc: add authentication tlv for pmc\n\nadd sad_process_auth() and sad_append_auth_tlv() to the pmc_recv() and\npmc_send() functions. In addition, add a config pointer \u0026 spp to the\npmc structure and add sad_create() \u0026 sad_destroy() to functions.\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "0aef576cd0460cc725f65e1e86a145df0f7e92fe",
      "tree": "0a08256e01b62cc090787b4ca88cb94d90f8f7fe",
      "parents": [
        "7192046cd0b9b39c141c283a107df147a7aad266"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:10 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:07:31 2024 -0700"
      },
      "message": "msg: add authentication tlv in management handling\n\nexisting code assumed only one tlv was attached to management messages:\na management tlv that started at management.suffix. If an authentication\ntlv is attached, these checks fail as there are now two tlvs.\n\nadd case for this scenario when counting tlvs\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "7192046cd0b9b39c141c283a107df147a7aad266",
      "tree": "6f4e8b0ce441414a9bcb2cd95cfff47b7d14bd80",
      "parents": [
        "15ae0bba01b3e79935bdc47e4118a53163fb3533"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:09 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:07:20 2024 -0700"
      },
      "message": "sad: introduce sad_update_auth_tlv()\n\nSome messages do not need a new authentication tlv attached but instead\nonly require the existing tlv to be updated because a protected field\nwas edited. These include messages being forward via a transparent clock\nand management messages.\n\nIntroduce sad_update_auth_tlv() to search for existing authentication\ntlvs, confirm their spp/security parameters are known, and regenerate\nthe icv.\n\nBecause this function still requires valid tlv pointers, add\nmsg_tlv_copy() to copy the pointers from the formatted message to the\nraw message duplicate.\n\nIn addition add various calls to e2e_tc/p2p_tc to match port.c\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "15ae0bba01b3e79935bdc47e4118a53163fb3533",
      "tree": "ef980671fd931873df911f9fa06f824c627e5592",
      "parents": [
        "d9e70b09a19108e68de551c60fdc5fd40b3410cf"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:08 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:07:12 2024 -0700"
      },
      "message": "man: add man/README updates for authentication tlv\n\nadd necessary updates to the ptp4l man page for how to configure the spp\nand security association files.\n\nadd feature note to README along with disclaimer about openssl license\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "d9e70b09a19108e68de551c60fdc5fd40b3410cf",
      "tree": "39814a20683d083504f4de7ce9a7fae305477d00",
      "parents": [
        "e2e3aa0539323b2fc048684d375641bc569a04b6"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:07 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:07:05 2024 -0700"
      },
      "message": "sad: introduce sad_append_auth_tlv() and sad_generate_icv()\n\nsad_append_auth_tlv() will append an authentication tlv as specified by\nthe security association corresponding to the passed spp. After\nattached, msg_pre_send() is called to put message in network byte order\nand sad_generate_icv() is called to populate the icv field in the tlv.\n\nthe allow_mutable flag will set the correction field to 0 before\ngenerating the icv to allow for configurations where on path auth tlv\nsupport is not present.\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "e2e3aa0539323b2fc048684d375641bc569a04b6",
      "tree": "6f0d71af132db0a6df41daf8d194f1aebfd33be4",
      "parents": [
        "60980bbdd453af991937eaf3c7ceb35553a8a4bf"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:06 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:58 2024 -0700"
      },
      "message": "sad: introduce sad_set_last_seqid() and sad_check_seqid()\n\nThe standard specifies that the header sequence id should be checked to\nconfirm the message has not been replayed. It specifies a seqid check\nfor each message that has it\u0027s own sequence id pool but this is most\nrelevant for sync/followup messages for which slaves do not confirm\nseqid currently.\n\nThe standard also mentioned a seqid window. The seqid window specifies\nhow far the seqid can advance from the last know seqid before it is\nconsidered a replay attack from before a seqid rollover.\n\nThis patch introduces sad_check_seqid() in sad.c to check the seqid and\nsad_set_last_seqid() which is updates the last seqid upon successful\nsync in port_synchronize() and reset upon state transition in\nport_e2e_transition() and port_p2p_transition.\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "60980bbdd453af991937eaf3c7ceb35553a8a4bf",
      "tree": "c25e63d1ab0d58fb87a384e243264cc863f2ed04",
      "parents": [
        "d9511f7b090db24dd560e71c58c1df1899129b1e"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:05 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:51 2024 -0700"
      },
      "message": "port: add security processing to bc_event()\n\nadd sad_process_auth() to bc_event() to check for authentication tlvs on\nincoming messages. This processing happens after msg_post_recv().\nHowever, if security is active, a duplicate message is allocated and\nkept in network byte order to be used for icv calculation.\n\nThe standard proposes a security parameters database (SPD) to specify\npolicy limiting attributes as to which messages should authenticated but\nthis is a lot of overhead for a something that isn\u0027t too helpful. For\nthis patch, the only policy limiting attribute is the port. That is to\nsay, you can specify a spp (and corresponding Security Association) for\neach port. When spp is set to -1, no security processing is done.\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "d9511f7b090db24dd560e71c58c1df1899129b1e",
      "tree": "304cd435fc13eeb827a5ffa8574444012f85e52c",
      "parents": [
        "6e037df120ad8ebd148a3327c744e9eb32a93abe"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:04 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:45 2024 -0700"
      },
      "message": "sad: introduce sad_process_auth() and sad_check_auth_tlv()\n\nsad_process_auth() contains any security processing required for a given\nsecurity association including the actual check of auth tlvs.\n\nsad_check_auth_tlv() will go through all attached tlvs looking for auth\ntlvs and process according to their corresponding security associations.\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "6e037df120ad8ebd148a3327c744e9eb32a93abe",
      "tree": "74e21a9c326f995c9014979fbe218f6e661c4456",
      "parents": [
        "5c56e3923cc485850da8d27d93d9330768359d11"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:03 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:45 2024 -0700"
      },
      "message": "sad: introduce openssl mac library\n\nFour Message Authentication Code (MAC) libraries will be added:\n 1. nettle\n 2. gnutle\n 3. gnupg\n 4. openssl (this patch)\n\nThis patch introduces the openssl mac library along with all functions\nrequired including initialization/deinitialization of mac context using\nkey data and generating the digest/mac/icv\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nAcked-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\n"
    },
    {
      "commit": "5c56e3923cc485850da8d27d93d9330768359d11",
      "tree": "134081a7b30edf752ad5b6645472498bcaca77f1",
      "parents": [
        "b0ceda74e6c8b6e98a992e6c1c0d91042327cda5"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:02 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:45 2024 -0700"
      },
      "message": "sad: introduce gnupg mac library\n\nFour Message Authentication Code (MAC) libraries will be added:\n 1. nettle\n 2. gnutls\n 3. gnupg (this patch)\n 4. openssl\n\nThis patch introduces the gnupg mac library along with all functions\nrequired including initialization/deinitialization of mac handle using\nkey data and generating the digest/mac/icv\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nAcked-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\n"
    },
    {
      "commit": "b0ceda74e6c8b6e98a992e6c1c0d91042327cda5",
      "tree": "581c7b0f463a16e446f83bcaca3deaa80055e302",
      "parents": [
        "875051bb0f8fda7de0f29812df17934c60fa08df"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:01 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:38 2024 -0700"
      },
      "message": "sad: introduce gnutls mac library\n\nFour Message Authentication Code (MAC) libraries will be added:\n 1. nettle\n 2. gnutls (this patch)\n 3. gnupg\n 4. openssl\n\nThis patch introduces the gnutls mac library along with all functions\nrequired including initialization/deinitialization of mac handle using\nkey data and generating the digest/mac/icv\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "875051bb0f8fda7de0f29812df17934c60fa08df",
      "tree": "d9c92aa54768ef8ac2990a65a41c18eb94a20823",
      "parents": [
        "fccebe83ec9496155449fe4a7e858fddc7bd1a92"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:05:00 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:30 2024 -0700"
      },
      "message": "sad: introduce nettle mac library\n\nFour Message Authentication Code (MAC) libraries will be added:\n 1. nettle (this patch)\n 2. gnutls\n 3. gnupg\n 4. openssl\n\nThis patch introduces the nettle mac library along with all functions\nrequired including initialization/deinitialization of mac context using\nkey data and generating the digest/mac/icv\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "fccebe83ec9496155449fe4a7e858fddc7bd1a92",
      "tree": "5734f406aeb2083feacd10217cd6e9a5bfe6dae4",
      "parents": [
        "d7486425d3416d23de7150c7157cf43598cc4acf"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:04:59 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:14 2024 -0700"
      },
      "message": "sad: introduce security association database\n\nThis patch adds a queue to the config structure to house the security\nassociation database and the necessary functions to copy information\n(spps, keys, etc) from a security associations file into the security\nassociation database. Although these functions are similar to those\nfound in config.c, it is important the keys are stored in a separate\nfile from the rest of the config, thus all processing is done in sad.c\n\nCo-authored-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "d7486425d3416d23de7150c7157cf43598cc4acf",
      "tree": "19aa476e5d015ce8b47f99f8d6bcafc1191f0e00",
      "parents": [
        "8a26c94cc88eb04c3b1767e4cb3ab46ee960931b"
      ],
      "author": {
        "name": "Clay Kaiser (via linuxptp-devel Mailing List)",
        "email": "linuxptp-devel@lists.nwtime.org",
        "time": "Fri May 24 16:04:58 2024 -0400"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 23:06:01 2024 -0700"
      },
      "message": "tlv: add authentication tlv\n\nAdd the authentication tlv base structure to tlv.h and basic\ntlv_pre_send() and tlv_post_recv() support. At this layer, there is no\nknowledge of security associations so only basic length checking and\nbyte order swap is performed.\n\nSigned-off-by: Clay Kaiser \u003cClay.Kaiser@ibm.com\u003e\nReviewed-by: Erez Geva \u003cErezGeva2@gmail.com\u003e\nReviewed-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "8a26c94cc88eb04c3b1767e4cb3ab46ee960931b",
      "tree": "70a9748ffa00007264031b04ec1381f3bbc22a3f",
      "parents": [
        "c6f81db9af91a9c8927104ade67592d9ff5528fc"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Apr 25 14:25:57 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 22:00:18 2024 -0700"
      },
      "message": "udp+udp6: Make IP addresses configurable.\n\nAllow configuration of the multicast IPv4/IPv6 addresses, which can be\nuseful for testing. This complements the L2-specific ptp_dst_mac and\np2p_dst_mac options.\n\n[ RPC: removed unused #defines PTP_PRIMARY_MCAST_IPADDR and PTP_PDELAY_MCAST_IPADDR ]\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "c6f81db9af91a9c8927104ade67592d9ff5528fc",
      "tree": "503d57c6880fc1f2052d4279e642fa4d7a1bce5b",
      "parents": [
        "34d7d8b4decb233fe71c85d0aa1ae14dd07df2b3"
      ],
      "author": {
        "name": "Michael Galassi",
        "email": "michael@galassi.us",
        "time": "Wed Apr 24 07:26:47 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 20:47:09 2024 -0700"
      },
      "message": "Add support for \u0027-l\u0027 option to tz2alt.c as documented in its man page.\n\nv2 - reformat commit message\n\nWhile cleaning up print_level/logging_level in other linuxptp programs\nI noticed that even though it\u0027s man page described a \u0027-l\u0027 command line\noption the code did not implement this.\n\nThis patch implements \u0027-l \u003clog level\u003e\u0027 support in tz2alt.\n\nSigned-off-by: Michael Galassi \u003cmichael@galassi.us\u003e\n"
    },
    {
      "commit": "34d7d8b4decb233fe71c85d0aa1ae14dd07df2b3",
      "tree": "a77ef7db19d2f38995ded602b671dabbbed5f631",
      "parents": [
        "2dbe5ef86356df84d089dc36e1a8e104d64ebdda"
      ],
      "author": {
        "name": "Michael Galassi",
        "email": "michael@galassi.us",
        "time": "Wed Apr 24 07:26:44 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 20:47:09 2024 -0700"
      },
      "message": "Clean up compiler warnings about print_level.\n\nv2 - update based on Erez\u0027s review comments\nv3 - reformat commit message\n\nGcc (and presumably other compilers) emits a warning about the\ndeclarations of print_level in various main() function shadowing\nthe global declaration in print.c (made external in print.h).  This\nwarning is completely benign but makes it more difficult to recognize\nwarnings that might be consequential.\n\nThis patch renames local instances of print_level.  It also gets rid\nof a redundant call to print_set_level() in ts2phc.c and relocates a\nmisplaced call to print_set_level() in phc_ctl.c.\n\nSigned-off-by: Michael Galassi \u003cmichael@galassi.us\u003e\n"
    },
    {
      "commit": "2dbe5ef86356df84d089dc36e1a8e104d64ebdda",
      "tree": "bd81fb8bfcbe6a376559c18515466cd12c70ba9f",
      "parents": [
        "b42f1a9962a16ca4fb75059af361362174577a44"
      ],
      "author": {
        "name": "Michael Galassi",
        "email": "michael@galassi.us",
        "time": "Wed Apr 24 07:26:41 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 20:47:09 2024 -0700"
      },
      "message": "Clean up compiler warning in ts2phc_pps_sink.c.\n\nv2 - reformat commit message\n\nGcc (and presumably other compilers) emits a warning about the\ndeclaration of \u0027sink\u0027 shadowing a previous local in ts2phc_pps_sink.c.\nThis warning is completely benign but makes it more difficult to\nrecognize warnings that might be consequential.\n\nThis patch reuses the previous declaration of sink which is also a\npointer to a struct ts2phc_pps_sink.\n\nSigned-off-by: Michael Galassi \u003cmichael@galassi.us\u003e\n"
    },
    {
      "commit": "b42f1a9962a16ca4fb75059af361362174577a44",
      "tree": "583f8d3a1c09941e6f1249cae0ec69bbbb4787d0",
      "parents": [
        "42d3c7ff2fc07ad4c304ddb0826cc7788264f3ad"
      ],
      "author": {
        "name": "Michael Galassi",
        "email": "michael@galassi.us",
        "time": "Wed Apr 24 07:26:39 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 20:47:09 2024 -0700"
      },
      "message": "Clean up compiler warning in ts2phc.c.\n\nv2 - reformat commit message\n\nGcc (and presumably other compilers) emits a warning about the\ndeclaration of \u0027c\u0027 shadowing a previous local in ts2phc.c.  This\nwarning is completely benign but makes it more difficult to recognize\nwarnings that might be consequential.\n\nThis patch renames the variable \u0027c\u0027 to \u0027clk\u0027.\n\nSigned-off-by: Michael Galassi \u003cmichael@galassi.us\u003e\n"
    },
    {
      "commit": "42d3c7ff2fc07ad4c304ddb0826cc7788264f3ad",
      "tree": "966c210383129b88a121175625d9eafb3cfe2164",
      "parents": [
        "22aeb19f2099da353b9ae302ac6b378b1dab4752"
      ],
      "author": {
        "name": "Michael Galassi",
        "email": "michael@galassi.us",
        "time": "Wed Apr 24 07:26:36 2024 -0700"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 20:47:09 2024 -0700"
      },
      "message": "Clean up compiler warning in port.c.\n\nv2 - reformat commit message\n\nGcc (and presumably other compilers) emits a warning about the\ndeclaration of \u0027dscmp\u0027 shadowing a global declaration in bmc.h.\nThis warning is completely benign but makes it more difficult to\nrecognize warnings that might be consequential.\n\nThis patch renames the variable \u0027dscmp\u0027 to \u0027clk_dscmp\u0027.\n\nSigned-off-by: Michael Galassi \u003cmichael@galassi.us\u003e\n"
    },
    {
      "commit": "22aeb19f2099da353b9ae302ac6b378b1dab4752",
      "tree": "6620106ef1d31316bd0038daa266b38166a89d27",
      "parents": [
        "c401d45b96a383d62637a372197f569a4908899d"
      ],
      "author": {
        "name": "Alexandre Esse",
        "email": "alexandre.esse.dev@gmail.com",
        "time": "Sun Mar 24 01:01:26 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Jun 03 09:54:39 2024 -0700"
      },
      "message": "README: update mailing list.\n\nSigned-off-by: Alexandre Esse \u003calexandre.esse@canonical.com\u003e\n"
    },
    {
      "commit": "c401d45b96a383d62637a372197f569a4908899d",
      "tree": "d4fc002107156a6cfe4f262113f1723e7073630f",
      "parents": [
        "b4a7d96c5fe9670d9a006c6fc6b4aef4d178a172"
      ],
      "author": {
        "name": "Xabier Marquiegui",
        "email": "reibax@gmail.com",
        "time": "Thu Apr 11 12:28:04 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Apr 18 23:03:22 2024 -0700"
      },
      "message": "ts2phc: interact with new kernel timestamp channel masks\n\nUse IOCTLs to interact with timestamp channel masks implemented on\nkernel v6.7. This enables the ptp driver to register multiple timestamp\nchannels, and provide only the desired ones to this consumer.\n\nSigned-off-by: Xabier Marquiegui \u003creibax@gmail.com\u003e\n"
    },
    {
      "commit": "b4a7d96c5fe9670d9a006c6fc6b4aef4d178a172",
      "tree": "ed2de8add67a27df8326a8fae604af9a5388146b",
      "parents": [
        "f1bbd40c4837a1868a7de32cd5325fff59e147e5"
      ],
      "author": {
        "name": "Maciek Machnikowski",
        "email": "maciek@machnikowski.net",
        "time": "Fri Apr 05 09:46:54 2024 +0200"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Apr 18 22:58:50 2024 -0700"
      },
      "message": "lstab: Update Leap Second table validity\n\nUpdate the lstab to reflect the latest bulletin with expiry date of\n24 Dec 2024.\n\nSigned-off-by: Maciek Machnikowski \u003cmaciek@machnikowski.net\u003e\n"
    },
    {
      "commit": "f1bbd40c4837a1868a7de32cd5325fff59e147e5",
      "tree": "b6a8ac9309e81d261ec4d4203046495c4568bacf",
      "parents": [
        "838cc501680fc973d0ab8061feb8621a374ea223"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Wed Mar 27 14:12:34 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Apr 18 22:52:54 2024 -0700"
      },
      "message": "Fix indentation in example configs.\n\nUse tabs consistently for indenting values in the example configs.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "838cc501680fc973d0ab8061feb8621a374ea223",
      "tree": "4af0558cacf821e3103b30ecd8a9d7ecc60b0c65",
      "parents": [
        "65f1a7f841724ee0c7f1cb3f503bec78a96738d9"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Wed Mar 27 14:12:33 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Apr 18 22:52:54 2024 -0700"
      },
      "message": "Document allowedLostResponses option.\n\nAdd the allowedLostResponses option to the man page and default config.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "65f1a7f841724ee0c7f1cb3f503bec78a96738d9",
      "tree": "1b1895b6ed80eb5f1dd69252ee3f14647353814c",
      "parents": [
        "57e3cfc42de14b8a74efe8843321c5e95f462219"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Wed Mar 27 14:12:32 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Apr 18 22:52:54 2024 -0700"
      },
      "message": "config: Allow port sections with longer names.\n\nChange the maximum accepted length of the name starting a port\nsection from 16 to 128 characters to enable configuration of UDS ports\nusing a longer address. Use a number instead of the MAX_IFNAME_SIZE\nmacro to avoid having to stringize the value for sscanf.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "57e3cfc42de14b8a74efe8843321c5e95f462219",
      "tree": "9bd363cdf6b9bceac761ccf5375993a8126ec04c",
      "parents": [
        "737ff39faec508c452062be1dbd90ea8430c2b7f"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Tue Feb 27 13:51:10 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Thu Apr 18 22:46:15 2024 -0700"
      },
      "message": "sk: Fix descriptor leak in sk_get_if_info().\n\nFix the code path handling unexpected data to close the socket and also\nreset the interface info, same as the other error handling in the\nfunction.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "737ff39faec508c452062be1dbd90ea8430c2b7f",
      "tree": "0b60eca6e7beb8fa1e6d5901de57649859d17ead",
      "parents": [
        "77c054c379fe4062254430d7ff04e5319be520e6"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Feb 22 14:57:56 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 27 23:18:42 2024 -0800"
      },
      "message": "lstab: Don\u0027t free lstab on update.\n\nThe modification timestamp of the leapfile is checked with every\ncall of lstab_utc2tai(). If the file is modified, the provided lstab\nstructure is freed and a new one is allocated from the updated leapfile.\nBut the new lstab is not returned to the caller as the function doesn\u0027t\naccept a pointer to the pointer to lstab. This causes reading from the\nfreed memory and leak of the newly allocated memory.\n\nModify update_leapsecond_table() to read the updated leapfile into the\nexisting lstab structure instead of the reallocation.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "77c054c379fe4062254430d7ff04e5319be520e6",
      "tree": "feef844191fc2617bccdeed5bb2dce5eb35af5c0",
      "parents": [
        "accd35c3913b396d46c36c6463c5b8f5aa940a42"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Feb 22 14:57:55 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 27 23:18:42 2024 -0800"
      },
      "message": "lstab: Limit number of parsed leap seconds.\n\nThe lstab structure has a fixed-size array for leap seconds\n(currently 28 + 200). Don\u0027t read more leap seconds from the leapfile to\navoid corrupting memory.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "accd35c3913b396d46c36c6463c5b8f5aa940a42",
      "tree": "3947f7a571db27c30923dcccbf75772c1b7d121f",
      "parents": [
        "7996b9d491350420d625b8245f81069008b3dd51"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Feb 22 11:57:06 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 27 22:52:21 2024 -0800"
      },
      "message": "uds: Warn if replacing existing socket.\n\nWhen running multiple ptp4l instances, they need to be configured with\ndifferent UDS addresses in order for pmc/phc2sys to be able to\ncommunicate with all instances. If this is not the case, the socket is\nsilently replaced in the order of started ptp4l instances and they\ncannot be all reached over UDS.\n\nLog a warning message if the socket is removed to make it more obvious\nthat something is wrong.\n\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "7996b9d491350420d625b8245f81069008b3dd51",
      "tree": "66e55870f8ec36aa5dd6b50c31917efc256d0586",
      "parents": [
        "9aaadc3b06d86d6074a2b6a8cc8cce87bfa1c01c"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Dec 02 13:28:55 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 20 05:57:00 2024 -0800"
      },
      "message": "Add example Common Mean Link Delay Service configuration files.\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "9aaadc3b06d86d6074a2b6a8cc8cce87bfa1c01c",
      "tree": "5affa3e0d4de32ce05b4f2582868da0d17bd68e3",
      "parents": [
        "342e7ad4b89c85bcbaf247bbd7080f1e362e4746"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Fri Dec 01 22:28:25 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 20 05:57:00 2024 -0800"
      },
      "message": "Implement the COMMON_P2P delay mechanism.\n\nIf a given port selects the COMMON_P2P delay mechanism, let it open a\nlocal PTP Management channel to the Common Mean Link Delay Service\nover a UNIX domain socket.\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "342e7ad4b89c85bcbaf247bbd7080f1e362e4746",
      "tree": "6f0092a30899b6bc3a4ddbcc1255b48a550b931c",
      "parents": [
        "69a3af1baa7ef291ab0b5fd81154b55e60856f2c"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Nov 29 10:00:06 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 20 05:20:27 2024 -0800"
      },
      "message": "Add a push notification for the CMLDS TLV.\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "69a3af1baa7ef291ab0b5fd81154b55e60856f2c",
      "tree": "1f4352530a122b2edb3016fd49b576b8f2d75d37",
      "parents": [
        "eb2b8e73b94dbcd7e7f734ebdae586b36ab55ac5"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Nov 27 22:05:58 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 20 05:20:27 2024 -0800"
      },
      "message": "Introduce the Common Mean Link Delay Information TLV.\n\nAdd a new TLV to convey link delay measurements by the Common Mean\nLink Delay Service (CMLDS) (as specified in IEEE 1588/16.6.3) over the\nmanagement interface.\n\nCo-authored-by: Andrew Zaborowski \u003candrew.zaborowski@intel.com\u003e\nSigned-off-by: Kishen Maloor \u003ckishen.maloor@intel.com\u003e\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "eb2b8e73b94dbcd7e7f734ebdae586b36ab55ac5",
      "tree": "9ee6630a2e66717d6edf38522f6e2da5ba0f8789",
      "parents": [
        "044e2af2ea77bc58c7fa9b5198641703fd534a2a"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 20 05:14:17 2024 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 20 05:20:27 2024 -0800"
      },
      "message": "pmc: Make SET SUBSCRIBE_EVENTS_NP forwards compatible.\n\nThe code that parses the subscribed events requires an on/off value\nfor each supported event type.  However, going forward, as new events\nare added, this will break existing scripts.  Relax the check to\nrequire the duration value only, thus setting the omitted events to\n\"off\" implicitly.\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "044e2af2ea77bc58c7fa9b5198641703fd534a2a",
      "tree": "6b61afca0da8aa1147c322a6a8691dc1a233e8cc",
      "parents": [
        "653c71f9223309858a289fa184d49b93fbed4eb2"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Nov 29 17:05:55 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 20 05:20:27 2024 -0800"
      },
      "message": "pmc/uds: Configure the remote server address using the interface API.\n\nThe UDS uses a global setting from the configuration to set the remote\nserver address.  As a result, a program cannot act as both a UDS\nclient and server, because the source and destination addresses would\nbe identical.  Fix the issue by allowing the remote address to be\nconfigurable.\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "653c71f9223309858a289fa184d49b93fbed4eb2",
      "tree": "9c945ec9f22883c1a4faa92e4e4340aa516af3b8",
      "parents": [
        "f271257b799d390d9ec09d5c7dafb7f10a3bd99b"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Wed Nov 29 16:43:56 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Feb 20 04:58:00 2024 -0800"
      },
      "message": "interface: Add an optional remote address for use by the UDS transport.\n\nBecause of the implementation of the UDS module, it is not possible\nfor a process to act as both a PTP management client (PMC) and server.\nGoing forward, one ptp4l instance will need to subscribe to another\nusing the PMC methods.  Pave the way by allowing the interface to\ninclude an optional remote UDS address.\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "f271257b799d390d9ec09d5c7dafb7f10a3bd99b",
      "tree": "a611c72f096b7b17ed51131043cc3505cd4372dc",
      "parents": [
        "17195fd9cd8f2aaebe76cbb914f161307f81cbf1"
      ],
      "author": {
        "name": "Miroslav Lichvar",
        "email": "mlichvar@redhat.com",
        "time": "Thu Jan 25 11:26:15 2024 +0100"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Mon Feb 19 13:42:26 2024 -0800"
      },
      "message": "ts2phc: Don\u0027t switch system clock to nanosecond mode.\n\nts2phc is not synchronizing the system clock and should not switch the\nclock to the nanosecond mode with adjtimex(modes\u003dADJ_NANO) or make any\nother modifications to it. The process that is controlling the clock\n(e.g. an NTP client) might not be using the nanosecond mode.\n\nThere are two instances of the adjtimex() call in the code. One is used\nonly to read the clock and can be replaced with faster clock_gettime().\nThe other instance is also reading the TAI offset. Instead of switching\nto the nanosecond mode, change the timestamp conversion to handle both\nmicrosecond and nanosecond modes according to the current clock status.\n\nReviewed-by: Jacob Keller \u003cjacob.e.keller@intel.com\u003e\nSigned-off-by: Miroslav Lichvar \u003cmlichvar@redhat.com\u003e\n"
    },
    {
      "commit": "17195fd9cd8f2aaebe76cbb914f161307f81cbf1",
      "tree": "cce61d6ece2799cf74a4e22e872153c22fc58d90",
      "parents": [
        "37dc7c966af586e3693145cc5381da5f971fb1a7"
      ],
      "author": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Dec 05 06:05:32 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Tue Dec 05 06:05:32 2023 -0800"
      },
      "message": "Version 4.2\n\nSigned-off-by: Richard Cochran \u003crichardcochran@gmail.com\u003e\n"
    },
    {
      "commit": "37dc7c966af586e3693145cc5381da5f971fb1a7",
      "tree": "5e763b89203dde5b7c2d91e6a317d8dc684badda",
      "parents": [
        "a4014a6add8744ddbdcf01cda76976b1f0d30aea"
      ],
      "author": {
        "name": "Rahul Rameshbabu via Linuxptp-devel",
        "email": "linuxptp-devel@lists.sourceforge.net",
        "time": "Wed Nov 22 09:36:36 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Dec 02 13:52:16 2023 -0800"
      },
      "message": "phc_ctl: Use util.h NSEC_PER_SEC macro instead of local macro\n\nUse the common NSEC_PER_SEC macro in phc_ctl.\n\nSigned-off-by: Rahul Rameshbabu \u003crrameshbabu@nvidia.com\u003e\n"
    },
    {
      "commit": "a4014a6add8744ddbdcf01cda76976b1f0d30aea",
      "tree": "ae04b607d5e973e0b7a8e60fa2f74bc61cb42456",
      "parents": [
        "be3b264b048433de37dc9ae94802788af6b5742f"
      ],
      "author": {
        "name": "Rahul Rameshbabu via Linuxptp-devel",
        "email": "linuxptp-devel@lists.sourceforge.net",
        "time": "Wed Nov 22 09:36:35 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Dec 02 13:41:52 2023 -0800"
      },
      "message": "servo: Use util.h NSEC_PER_SEC macro instead of local macro\n\nUse the common NSEC_PER_SEC macro in servo source code.\n\nSigned-off-by: Rahul Rameshbabu \u003crrameshbabu@nvidia.com\u003e\n"
    },
    {
      "commit": "be3b264b048433de37dc9ae94802788af6b5742f",
      "tree": "76e42b6f8ed17b84d38e1540b3fb231b713dd088",
      "parents": [
        "c834ab07c63cc45a9e4eea1fd2a5af92a6e30d4f"
      ],
      "author": {
        "name": "Rahul Rameshbabu via Linuxptp-devel",
        "email": "linuxptp-devel@lists.sourceforge.net",
        "time": "Wed Nov 22 09:36:34 2023 -0800"
      },
      "committer": {
        "name": "Richard Cochran",
        "email": "richardcochran@gmail.com",
        "time": "Sat Dec 02 13:41:52 2023 -0800"
      },
      "message": "port: Use util.h NSEC_PER_SEC macro instead of local macro\n\nUse the common NSEC_PER_SEC macro in port-related source code.\n\nSigned-off-by: Rahul Rameshbabu \u003crrameshbabu@nvidia.com\u003e\n"
    }
  ],
  "next": "c834ab07c63cc45a9e4eea1fd2a5af92a6e30d4f"
}
