Hello community, here is the log from the commit of package chrony for openSUSE:Factory checked in at 2018-08-07 10:50:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/chrony (Old) and /work/SRC/openSUSE:Factory/.chrony.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chrony" Tue Aug 7 10:50:06 2018 rev:14 rq:627295 version:3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/chrony/chrony.changes 2018-04-20 17:23:52.186723723 +0200 +++ /work/SRC/openSUSE:Factory/.chrony.new/chrony.changes 2018-08-07 10:50:10.608592995 +0200 @@ -1,0 +2,39 @@ +Fri Aug 3 07:56:06 UTC 2018 - [email protected] + +- Update clknetsim to revision 42b693b + * Drop not needed chrony-fix-open.patch +- Build tests with optflags as well +- Do not run tests on i586 +- Enable signd + +------------------------------------------------------------------- +Thu Aug 2 07:52:58 UTC 2018 - [email protected] + +- Mention all sources as such in spec file +- Fix formatting of changelog +- Drop reference to change is not present + +------------------------------------------------------------------- +Wed Aug 1 16:36:17 UTC 2018 - [email protected] + +- Update to version 3.3 + * Enhancements: + + Add burst option to server/pool directive + + Add stratum and tai options to refclock directive + + Add support for Nettle crypto library + + Add workaround for missing kernel receive timestamps on Linux + + Wait for late hardware transmit timestamps + + Improve source selection with unreachable sources + + Improve protection against replay attacks on symmetric mode + + Allow PHC refclock to use socket in /var/run/chrony + + Add shutdown command to stop chronyd + + Simplify format of response to manual list command + + Improve handling of unknown responses in chronyc + * Bug fixes: + + Respond to NTPv1 client requests with zero mode + + Fix -x option to not require CAP_SYS_TIME under non-root user + + Fix acquisitionport directive to work with privilege separation + + Fix handling of socket errors on Linux to avoid high CPU usage + + Fix chronyc to not get stuck in infinite loop after clock step + +------------------------------------------------------------------- Old: ---- chrony-3.2.tar.gz chrony-fix-open.patch clknetsim-71dbbc5.tar.gz New: ---- chrony-3.3.tar.gz chrony-3.3.tar.gz.sig chrony.keyring clknetsim-42b693b.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chrony.spec ++++++ --- /var/tmp/diff_new_pack.1SfhXL/_old 2018-08-07 10:50:11.868595250 +0200 +++ /var/tmp/diff_new_pack.1SfhXL/_new 2018-08-07 10:50:11.880595271 +0200 @@ -17,24 +17,26 @@ %define vendorzone opensuse. -%global clknetsim_ver 71dbbc5 +%global clknetsim_ver 42b693b #Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif Name: chrony -Version: 3.2 +Version: 3.3 Release: 0 Summary: System Clock Synchronization Client and Server License: GPL-2.0-only Group: Productivity/Networking/Other -Url: http://chrony.tuxfamily.org/ -Source: http://download.tuxfamily.org/chrony/chrony-%{version}.tar.gz +URL: https://chrony.tuxfamily.org/ +Source: https://download.tuxfamily.org/chrony/chrony-%{version}.tar.gz Source2: chrony.sysconfig Source3: chrony.dhclient Source4: chrony.helper Source5: [email protected] Source6: [email protected] +Source7: https://download.tuxfamily.org/chrony/chrony-3.3-tar-gz-asc.txt#/chrony-%{version}.tar.gz.sig +Source8: chrony.keyring # Simulator for test suite Source10: https://github.com/mlichvar/clknetsim/archive/%{clknetsim_ver}/clknetsim-%{clknetsim_ver}.tar.gz # PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines @@ -42,7 +44,6 @@ # Add NTP servers from DHCP when starting service Patch1: chrony-service-helper.patch Patch2: chrony-logrotate.patch -Patch5: chrony-fix-open.patch BuildRequires: NetworkManager-devel BuildRequires: bison BuildRequires: gcc-c++ @@ -93,7 +94,6 @@ %patch0 -p1 %patch1 -p1 %patch2 -p1 -%patch5 -p1 # If this is an openSUSE build, use our vendor zone # (2.*pool.ntp.org names include IPv6 addresses). If not @@ -109,7 +109,7 @@ cat << EOF >> chrony.conf # Also include any directives found in configuration files in /etc/chrony.d -include /etc/chrony.d/*.conf +include %{_sysconfdir}/chrony.d/*.conf EOF touch -r examples/chrony.conf.example2 chrony.conf @@ -130,7 +130,8 @@ %endif --with-user=chrony \ --with-hwclockfile=%{_sysconfdir}/adjtime \ - --with-sendmail=%{_sbindir}/sendmail + --with-sendmail=%{_sbindir}/sendmail \ + --enable-ntp-signd make %{?_smp_mflags} all docs %install @@ -159,9 +160,9 @@ ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcchronyd ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcchrony-wait -install -d %{buildroot}%{_prefix}/lib/systemd/ntp-units.d +install -d %{buildroot}%{_libexecdir}/systemd/ntp-units.d echo 'chronyd.service' > \ - %{buildroot}%{_prefix}/lib/systemd/ntp-units.d/50-chronyd.list + %{buildroot}%{_libexecdir}/systemd/ntp-units.d/50-chronyd.list install -Dpm 0644 %{SOURCE2} \ %{buildroot}%{_fillupdir}/sysconfig.chrony @@ -171,11 +172,14 @@ install -d %{buildroot}%{_localstatedir}/log/chrony touch %{buildroot}%{_localstatedir}/lib/chrony/{drift,rtc} +%ifnarch %ix86 %check # Set random seed to get deterministic results export CLKNETSIM_RANDOM_SEED=24501 +export CFLAGS="%{optflags}" make %{?_smp_mflags} -C test/simulation/clknetsim make %{?_smp_mflags} check +%endif %pre getent group %{name} >/dev/null || groupadd -r %{name} @@ -207,10 +211,10 @@ %{_bindir}/chronyc %{_sbindir}/chronyd %{_datadir}/chrony-helper -%{_mandir}/man1/chronyc.1%{ext_man} -%{_mandir}/man5/chrony.conf.5%{ext_man} -%{_mandir}/man8/chronyd.8%{ext_man} -%{_prefix}/lib/systemd/ntp-units.d/*.list +%{_mandir}/man1/chronyc.1%{?ext_man} +%{_mandir}/man5/chrony.conf.5%{?ext_man} +%{_mandir}/man8/chronyd.8%{?ext_man} +%{_libexecdir}/systemd/ntp-units.d/*.list %{_unitdir}/chrony*.service %{_unitdir}/chrony*.timer %{_sbindir}/rcchrony* ++++++ chrony-3.2.tar.gz -> chrony-3.3.tar.gz ++++++ ++++ 4035 lines of diff (skipped) ++++++ clknetsim-71dbbc5.tar.gz -> clknetsim-42b693b.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clknetsim-71dbbc509eee05cb29e33468be93d5ba52b79429/README new/clknetsim-42b693b1a4d0126a10faf9ef564a41f55a138f29/README --- old/clknetsim-71dbbc509eee05cb29e33468be93d5ba52b79429/README 2017-07-25 09:46:32.000000000 +0200 +++ new/clknetsim-42b693b1a4d0126a10faf9ef564a41f55a138f29/README 2018-06-18 13:04:13.000000000 +0200 @@ -21,7 +21,7 @@ - chronyd and chronyc from chrony (http://chrony.tuxfamily.org/) - ntpd, ntpdate, sntp and ntpq from ntp (http://www.ntp.org/) - ntpd from busybox (http://www.busybox.net/) -- ptp4l, phc2sys and pmc from linuxptp (http://linuxptp.sourceforge.net/) +- ptp4l, phc2sys, pmc and nsm from linuxptp (http://linuxptp.sourceforge.net/) Limitations: - only Linux is supported diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clknetsim-71dbbc509eee05cb29e33468be93d5ba52b79429/client.c new/clknetsim-42b693b1a4d0126a10faf9ef564a41f55a138f29/client.c --- old/clknetsim-71dbbc509eee05cb29e33468be93d5ba52b79429/client.c 2017-07-25 09:46:32.000000000 +0200 +++ new/clknetsim-42b693b1a4d0126a10faf9ef564a41f55a138f29/client.c 2018-06-18 13:04:13.000000000 +0200 @@ -111,6 +111,14 @@ IFACE_ETH0, }; +struct ts_message { + char data[MAX_PACKET_SIZE]; + unsigned int len; + unsigned int subnet; + unsigned int to; + unsigned int port; +}; + struct socket { int used; int type; @@ -121,20 +129,12 @@ int broadcast; int pkt_info; int time_stamping; + struct ts_message last_ts_msg; }; static struct socket sockets[MAX_SOCKETS]; static int subnets; -struct ts_msg { - char data[MAX_PACKET_SIZE]; - int len; - int subnet; - int to; - int port; - int sockfd; -} last_ts_msg; - static double real_time = 0.0; static double monotonic_time = 0.0; static double network_time = 0.0; @@ -724,7 +724,8 @@ if (exceptfds) { /* chronyd waiting for TX timestamp from the error queue */ for (i = 0; i < nfds; i++) { - if (!FD_ISSET(i, exceptfds) || i != last_ts_msg.sockfd) + if (!FD_ISSET(i, exceptfds) || get_socket_from_fd(i) < 0 || + !sockets[get_socket_from_fd(i)].last_ts_msg.len) continue; if (readfds) FD_ZERO(readfds); @@ -942,7 +943,12 @@ tv.tv_usec = req->tv_nsec / 1000 + 1; r = select(0, NULL, NULL, NULL, &tv); - assert(r == 0); + assert(r <= 0); + + if (r < 0) { + assert(!rem); + return r; + } if (rem) rem->tv_sec = rem->tv_nsec = 0; @@ -1261,7 +1267,7 @@ SOF_TIMESTAMPING_RAW_HARDWARE | SOF_TIMESTAMPING_TX_HARDWARE | SOF_TIMESTAMPING_RX_HARDWARE; info->tx_types = HWTSTAMP_TX_ON; - info->rx_filters = HWTSTAMP_FILTER_NONE | HWTSTAMP_FILTER_ALL; + info->rx_filters = 1 << HWTSTAMP_FILTER_NONE | 1 << HWTSTAMP_FILTER_ALL; } else ret = -1, errno = EINVAL; #endif @@ -1272,6 +1278,19 @@ /* maximum frequency in 32-bit timex.freq */ caps->max_adj = 32767999; #endif +#ifdef PTP_SYS_OFFSET_PRECISE + } else if (request == PTP_SYS_OFFSET_PRECISE && fd == REFCLK_FD) { + struct ptp_sys_offset_precise *sys_off = va_arg(ap, struct ptp_sys_offset_precise *); + struct timespec ts; + + clock_gettime(REFCLK_ID, &ts); + sys_off->device.sec = ts.tv_sec; + sys_off->device.nsec = ts.tv_nsec; + + clock_gettime(CLOCK_REALTIME, &ts); + sys_off->sys_realtime.sec = ts.tv_sec; + sys_off->sys_realtime.nsec = ts.tv_nsec; +#endif #ifdef SIOCSHWTSTAMP } else if (request == SIOCSHWTSTAMP && s >= 0) { #endif @@ -1378,15 +1397,14 @@ make_request(REQ_SEND, &req, offsetof(struct Request_send, data) + req.len, NULL, 0); if (sockets[s].time_stamping & (SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_TX_HARDWARE)) { - assert(req.len <= sizeof (last_ts_msg.data)); - memcpy(last_ts_msg.data, req.data, req.len); - last_ts_msg.len = req.len; - last_ts_msg.subnet = req.subnet; - last_ts_msg.to = req.to; - last_ts_msg.port = req.dst_port; - last_ts_msg.sockfd = sockfd; - } else { - last_ts_msg.sockfd = -1; + struct ts_message *last_ts_msg = &sockets[s].last_ts_msg; + + assert(req.len <= sizeof (last_ts_msg->data)); + memcpy(last_ts_msg->data, req.data, req.len); + last_ts_msg->len = req.len; + last_ts_msg->subnet = req.subnet; + last_ts_msg->to = req.to; + last_ts_msg->port = req.dst_port; } return req.len; @@ -1467,18 +1485,20 @@ if (sockets[s].time_stamping & (SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_TX_HARDWARE) && flags & MSG_ERRQUEUE) { + struct ts_message *last_ts_msg; uint32_t addr; uint16_t port; /* last message looped back to the error queue */ - assert(sockfd == last_ts_msg.sockfd); - last_ts_msg.sockfd = -1; + last_ts_msg = &sockets[s].last_ts_msg; + assert(last_ts_msg->len); + msg->msg_flags = MSG_ERRQUEUE; - rep.subnet = last_ts_msg.subnet; - rep.from = last_ts_msg.to; - rep.src_port = last_ts_msg.port; + rep.subnet = last_ts_msg->subnet; + rep.from = last_ts_msg->to; + rep.src_port = last_ts_msg->port; rep.dst_port = sockets[s].port; addr = htonl(NODE_ADDR(rep.subnet, rep.from)); @@ -1492,10 +1512,12 @@ memcpy(rep.data + 30, &addr, sizeof (addr)); memcpy(rep.data + 36, &port, sizeof (port)); - assert(last_ts_msg.len + 42 <= sizeof (rep.data)); - memcpy(rep.data + 42, last_ts_msg.data, last_ts_msg.len); + assert(last_ts_msg->len + 42 <= sizeof (rep.data)); + memcpy(rep.data + 42, last_ts_msg->data, last_ts_msg->len); + + rep.len = 42 + last_ts_msg->len; - rep.len = 42 + last_ts_msg.len; + last_ts_msg->len = 0; } else make_request(REQ_RECV, NULL, 0, &rep, sizeof (rep)); @@ -1539,6 +1561,7 @@ memset(&ipi, 0, sizeof (ipi)); ipi.ipi_spec_dst.s_addr = htonl(NODE_ADDR(rep.subnet, node)); ipi.ipi_addr.s_addr = ipi.ipi_spec_dst.s_addr; + ipi.ipi_ifindex = rep.subnet + 1; memcpy(CMSG_DATA(cmsg), &ipi, sizeof (ipi)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clknetsim-71dbbc509eee05cb29e33468be93d5ba52b79429/clknetsim.bash new/clknetsim-42b693b1a4d0126a10faf9ef564a41f55a138f29/clknetsim.bash --- old/clknetsim-71dbbc509eee05cb29e33468be93d5ba52b79429/clknetsim.bash 2017-07-25 09:46:32.000000000 +0200 +++ new/clknetsim-42b693b1a4d0126a10faf9ef564a41f55a138f29/clknetsim.bash 2018-06-18 13:04:13.000000000 +0200 @@ -83,6 +83,10 @@ phc2sys) args=(-s /dev/ptp0 -O 0 $opts $config) ;; + nsm) + args=($opts) + while read line; do args+=("$line"); done <<< "$config" + ;; *) echo "unknown client $client" exit 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clknetsim-71dbbc509eee05cb29e33468be93d5ba52b79429/examples/nsm.test new/clknetsim-42b693b1a4d0126a10faf9ef564a41f55a138f29/examples/nsm.test --- old/clknetsim-71dbbc509eee05cb29e33468be93d5ba52b79429/examples/nsm.test 1970-01-01 01:00:00.000000000 +0100 +++ new/clknetsim-42b693b1a4d0126a10faf9ef564a41f55a138f29/examples/nsm.test 2018-06-18 13:04:13.000000000 +0200 @@ -0,0 +1,19 @@ +#!/bin/bash + +CLKNETSIM_PATH=.. +. ../clknetsim.bash + +generate_config4 "1 3" "1 2 3" 0.01 "(sum (* 1e-9 (normal)))" "(* 1e-8 (exponential))" + +echo 'node3_start = 50' >> tmp/conf + +start_client 1 ptp4l "hybrid_e2e 1 +net_sync_monitor 1" "" "-i eth0" +start_client 2 ptp4l "hybrid_e2e 1 +net_sync_monitor 1" "" "-i eth0" +start_client 3 nsm "NSM 192.168.123.1 +NSM 192.168.123.2" "" "-i eth0" + +start_server 3 -l 110 + +cat tmp/log.3
