Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package netperfmeter for openSUSE:Factory 
checked in at 2026-08-01 18:35:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/netperfmeter (Old)
 and      /work/SRC/openSUSE:Factory/.netperfmeter.new.16738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "netperfmeter"

Sat Aug  1 18:35:44 2026 rev:9 rq:1368985 version:2.0.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/netperfmeter/netperfmeter.changes        
2026-07-13 14:29:10.109676598 +0200
+++ /work/SRC/openSUSE:Factory/.netperfmeter.new.16738/netperfmeter.changes     
2026-08-01 18:38:22.006494564 +0200
@@ -1,0 +2,9 @@
+Sat Aug  1 08:42:38 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to version 2.0.10
+  * Bugfix: need to check for null-pointer, since host can be NULL.
+  * Updated QUIC setup scripts.
+  * QUIC configuration improvements.
+  * Improved check for enhanced getopt.
+
+-------------------------------------------------------------------

Old:
----
  netperfmeter-2.0.9.tar.xz
  netperfmeter-2.0.9.tar.xz.asc

New:
----
  netperfmeter-2.0.10.tar.xz
  netperfmeter-2.0.10.tar.xz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ netperfmeter.spec ++++++
--- /var/tmp/diff_new_pack.m0Xh3M/_old  2026-08-01 18:38:22.602515063 +0200
+++ /var/tmp/diff_new_pack.m0Xh3M/_new  2026-08-01 18:38:22.606515201 +0200
@@ -18,7 +18,7 @@
 
 %define services netperfmeter.service netperfmeter-module-loader.service
 Name:           netperfmeter
-Version:        2.0.9
+Version:        2.0.10
 Release:        0
 Summary:        Network performance meter for the UDP, TCP, SCTP and DCCP 
protocols
 License:        GPL-3.0-or-later

++++++ netperfmeter-2.0.9.tar.xz -> netperfmeter-2.0.10.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/CMakeLists.txt 
new/netperfmeter-2.0.10/CMakeLists.txt
--- old/netperfmeter-2.0.9/CMakeLists.txt       2026-07-11 13:21:18.000000000 
+0200
+++ new/netperfmeter-2.0.10/CMakeLists.txt      2026-07-31 12:49:37.000000000 
+0200
@@ -30,7 +30,7 @@
 
 SET(BUILD_MAJOR "2")
 SET(BUILD_MINOR "0")
-SET(BUILD_PATCH "9")
+SET(BUILD_PATCH "10")
 SET(BUILD_VERSION ${BUILD_MAJOR}.${BUILD_MINOR}.${BUILD_PATCH})
 
 
@@ -83,7 +83,7 @@
 
 
 #############################################################################
-#### OS DEPENDENT                                                        ####
+#### OS-DEPENDENT                                                        ####
 #############################################################################
 
 IF (CMAKE_SYSTEM_NAME MATCHES "Linux")
@@ -92,8 +92,14 @@
    MESSAGE(STATUS "${CMAKE_SYSTEM_NAME} supported")
 ELSEIF (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
    MESSAGE(STATUS "${CMAKE_SYSTEM_NAME} supported")
+   IF(NOT DEFINED CMAKE_INSTALL_RPATH_USE_LINK_PATH)
+      SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON)
+   ENDIF()
+   # SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
 ELSEIF (CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
    MESSAGE(STATUS "${CMAKE_SYSTEM_NAME} supported")
+ELSEIF (CMAKE_SYSTEM_NAME MATCHES "SunOS")
+   MESSAGE(STATUS "${CMAKE_SYSTEM_NAME} supported")
 ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
    MESSAGE(STATUS "${CMAKE_SYSTEM_NAME} supported")
 ELSE()
@@ -201,6 +207,29 @@
 # ====== Threads ============================================================
 FIND_PACKAGE(Threads REQUIRED)
 
+# ====== Solaris: libsocket and libnsl ======================================
+IF (CMAKE_SYSTEM_NAME MATCHES "SunOS")
+   FIND_LIBRARY(SOCKET_LIBRARY socket REQUIRED)
+   FIND_LIBRARY(NSL_LIBRARY    nsl    REQUIRED)
+   FIND_LIBRARY(KSTAT_LIBRARY  kstat  REQUIRED)
+ENDIF()
+
+# ====== NetBSD: liberty ====================================================
+IF (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
+   FIND_LIBRARY(LIBIBERTY_LIBRARY NAMES iberty PATHS /usr/pkg/lib)
+   FIND_PATH(LIBIBERTY_INCLUDE_DIR NAMES libiberty.h PATHS /usr/pkg/include)
+   IF ((LIBIBERTY_LIBRARY) AND (LIBIBERTY_INCLUDE_DIR))
+      ADD_DEFINITIONS(-DHAVE_LIBIBERTY)
+      MESSAGE(STATUS "Libiberty library found:")
+      MESSAGE(STATUS " LIBIBERTY_LIBRARY:     ${LIBIBERTY_LIBRARY}")
+      MESSAGE(STATUS " LIBIBERTY_INCLUDE_DIR: ${LIBIBERTY_INCLUDE_DIR}")
+   ELSE()
+      MESSAGE(FATAL_ERROR
+              "Cannot find Libiberty library! Try:\n"
+              " * NetBSD: sudo pkgin -y install liberty")
+   ENDIF()
+ENDIF()
+
 # ====== libbz2 =============================================================
 FIND_LIBRARY(BZ2_LIBRARY NAMES bz2)
 FIND_PATH(BZ2_INCLUDE_DIR NAMES bzlib.h)
@@ -213,11 +242,12 @@
            "Cannot find BZip2 library! Try:\n"
            " * Ubuntu/Debian: sudo apt install -y libbz2-dev\n"
            " * Fedora:        sudo dnf install -y bzip2-devel\n"
-           " * OpenSUSE:      sudo zypper install -y libbz2-devel\n"
+           " * SuSE:          sudo zypper install -y libbz2-devel\n"
            " * Alpine:        sudo apk add bzip2-dev\n"
            " * FreeBSD:       sudo pkg install -y bzip2\n"
            " * NetBSD:        (should be installed by default)\n"
            " * OpenBSD:       (should be installed by default)\n"
+           " * Solaris:       sudo pkg install bzip2\n"
            " * Apple:         brew install bzip2")
 ENDIF()
 
@@ -350,22 +380,6 @@
    ENDIF()
 ENDIF()
 
-# ====== Liberty ============================================================
-IF (CMAKE_SYSTEM_NAME MATCHES "NetBSD")
-   FIND_LIBRARY(LIBIBERTY_LIBRARY NAMES iberty PATHS /usr/pkg/lib)
-   FIND_PATH(LIBIBERTY_INCLUDE_DIR NAMES libiberty.h PATHS /usr/pkg/include)
-   IF ((LIBIBERTY_LIBRARY) AND (LIBIBERTY_INCLUDE_DIR))
-      ADD_DEFINITIONS(-DHAVE_LIBIBERTY)
-      MESSAGE(STATUS "Libiberty library found:")
-      MESSAGE(STATUS " LIBIBERTY_LIBRARY:     ${LIBIBERTY_LIBRARY}")
-      MESSAGE(STATUS " LIBIBERTY_INCLUDE_DIR: ${LIBIBERTY_INCLUDE_DIR}")
-   ELSE()
-      MESSAGE(FATAL_ERROR
-              "Cannot find Libiberty library! Try:\n"
-              " * NetBSD: sudo pkgin -y install liberty")
-   ENDIF()
-ENDIF()
-
 # ====== Graphics tools for icons and logo ==================================
 IF (WITH_ICONS)
    MESSAGE("Building with icons (WITH_ICONS=${WITH_ICONS})")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/ChangeLog 
new/netperfmeter-2.0.10/ChangeLog
--- old/netperfmeter-2.0.9/ChangeLog    2026-07-11 13:21:19.000000000 +0200
+++ new/netperfmeter-2.0.10/ChangeLog   2026-07-31 12:49:37.000000000 +0200
@@ -1,3 +1,111 @@
+commit 11c6dc78853f203a3d967c8002a3f327410d725f
+Author: Thomas Dreibholz <[email protected]>
+Date:   Tue Jul 28 14:40:04 2026 +0200
+
+    Improved check for enhanced getopt.
+
+commit 80eecb2405fe0cb32cf0173cbf4d8b1cb7ea288d
+Author: Thomas Dreibholz <[email protected]>
+Date:   Mon Jul 27 15:52:14 2026 +0200
+
+    Minor CMakeLists.txt clean-up.
+
+commit 33e798223c9ac91685e62be998a01b0c1f99f760
+Author: Thomas Dreibholz <[email protected]>
+Date:   Mon Jul 27 15:51:41 2026 +0200
+
+    QUIC configuration improvements.
+
+commit 5528699e0c3b24d862144594a55e258c7e6787c3
+Author: Thomas Dreibholz <[email protected]>
+Date:   Sun Jul 26 23:13:10 2026 +0200
+
+    Improved documentation.
+
+commit d7d53ec354b43f57062e74e1b1340654706c41d2
+Author: Thomas Dreibholz <[email protected]>
+Date:   Sun Jul 26 23:13:00 2026 +0200
+
+    Updated QUIC setup scripts.
+
+commit ae56081266e37c3683d2729c3f82b0845270aa7e
+Author: Thomas Dreibholz <[email protected]>
+Date:   Sun Jul 26 22:51:53 2026 +0200
+
+    Bugfix: need to check for null-pointer, since host can be NULL.
+
+commit fb35aa73a95c3d6a4c897adcdf2dd27689170483
+Author: Thomas Dreibholz <[email protected]>
+Date:   Tue Jul 21 14:23:29 2026 +0200
+
+    Minor clean-ups.
+
+commit fa2b1d1a693ef1e2f9ec025cafd2f787763faa37
+Author: Thomas Dreibholz <[email protected]>
+Date:   Tue Jul 21 13:59:41 2026 +0200
+
+    CMakeLists.txt clean-ups.
+
+commit dec9de6a4a907e3b22e29591388b362425778b3b
+Author: Thomas Dreibholz <[email protected]>
+Date:   Tue Jul 21 13:56:57 2026 +0200
+
+    Added Solaris support to CMakeLists.txt.
+
+commit ecd2638dc17ce367558d4cb3ef3cfcba1d7ea9c3
+Author: Thomas Dreibholz <[email protected]>
+Date:   Tue Jul 21 11:33:42 2026 +0200
+
+    Added missing Solaris parts.
+
+commit 6cc75b1c383ee373dabbaf10146f406979df79ed
+Author: Thomas Dreibholz <[email protected]>
+Date:   Tue Jul 21 11:32:15 2026 +0200
+
+    Another Solaris build update.
+
+commit c833ace33db8bc23f79a385ee202b1453c865894
+Author: Thomas Dreibholz <[email protected]>
+Date:   Tue Jul 21 11:31:37 2026 +0200
+
+    Minor updates for building under Solaris.
+
+commit 7d4823464b791cd0bac9cd27b67ca38faaed49ec
+Author: Thomas Dreibholz <[email protected]>
+Date:   Tue Jul 21 10:58:44 2026 +0200
+
+    Added Solaris support.
+
+commit 84becda425597ca5779700af49bd17593689aa95
+Author: Thomas Dreibholz <[email protected]>
+Date:   Sat Jul 18 16:44:16 2026 +0200
+
+    Updated build helper script.
+
+commit 105e55dc5f0c5028ce23f97c5c5eb09a7b2de453
+Author: Thomas Dreibholz <[email protected]>
+Date:   Sat Jul 18 15:26:50 2026 +0200
+
+    Further NetBSD improvements in CMakeLists.txt.
+
+commit 0585fc16e1134c7f8ef106ddaa10c21f7354a19d
+Author: Thomas Dreibholz <[email protected]>
+Date:   Sat Jul 18 15:13:08 2026 +0200
+
+    Updated build helper script.
+
+commit 38d92137e4f0bddfd7ac63a732c2f9f8ffbe153e
+Author: Thomas Dreibholz <[email protected]>
+Date:   Sat Jul 18 15:00:58 2026 +0200
+
+    CMakeLists.txt fix for NetBSD: need to set 
CMAKE_INSTALL_RPATH_USE_LINK_PATH if necessary.
+
+commit 7c26eec091cb989f163d9ee7ca6b2c0fc46c99c4
+Author: Thomas Dreibholz <[email protected]>
+Date:   Sat Jul 11 13:21:19 2026 +0200
+
+    New release netperfmeter-2.0.9.
+
 commit 95090e53e0e13cb387e8519c01009d47397baf28
 Author: Thomas Dreibholz <[email protected]>
 Date:   Mon Jul 6 12:10:52 2026 +0200
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/README.md 
new/netperfmeter-2.0.10/README.md
--- old/netperfmeter-2.0.9/README.md    2026-07-03 10:11:27.000000000 +0200
+++ new/netperfmeter-2.0.10/README.md   2026-07-27 09:59:00.000000000 +0200
@@ -419,16 +419,14 @@
   * `TestCA/server.domain.example/server.domain.example.key`: The server key.
   * `TestCA/server.domain.example/server.domain.example.crt`: The 
corresponding server certificate.
 
-  The server certificate can be verified using the CA certificate:
+  The 
[X.509-Tools](https://www.nntb.no/~dreibh/system-tools/index.html#x.509-tools) 
from the [System-Tools](https://www.nntb.no/~dreibh/system-tools/) package 
provide further helpful utilities to handle X.509 certificates. Particularly, 
[Check-Certificate](https://www.nntb.no/~dreibh/system-tools/#check-certificate)
 verifies a certificate and its chain from a trusted CA certificate. With 
X.509-Tools installed, the server certificate can be verified using the CA 
certificate:
 
   ```bash
-  ./check-certificate \
+  check-certificate \
      TestCA/TestLevel1/certs/TestLevel1.crt \
      TestCA/server.domain.example/server.domain.example.crt
   ```
 
-  The 
[X.509-Tools](https://www.nntb.no/~dreibh/system-tools/index.html#x.509-tools) 
provide further helpful utilities to handle X.509 certificates.
-
 * Run a passive instance (i.e.&nbsp;server side), using base port 9000, and 
specifying server key, server certificate, as well as root CA certificate:
 
   ```bash
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/autogen.sh 
new/netperfmeter-2.0.10/autogen.sh
--- old/netperfmeter-2.0.9/autogen.sh   2026-06-23 13:11:41.000000000 +0200
+++ new/netperfmeter-2.0.10/autogen.sh  2026-07-19 13:57:38.000000000 +0200
@@ -79,7 +79,7 @@
 
 UNAME="$(uname)"
 case "${UNAME}" in
-   Linux)
+   Linux|SunOS)
       installPrefix="/usr"
       ;;
    NetBSD)
@@ -120,7 +120,9 @@
    elif [ "${UNAME}" == "FreeBSD" ] ; then
       CORES="$(sysctl -n hw.ncpu || echo "1")"
    elif [ "${UNAME}" == "NetBSD" ] || [ "${UNAME}" == "OpenBSD" ] ; then
-      CORES="$(sysctl -n hw.ncpuonline || echo "1")"
+      CORES="$(/sbin/sysctl -n hw.ncpuonline || echo "1")"
+   elif [ "${UNAME}" == "SunOS" ] ; then
+      CORES="$(psrinfo -t)"
    elif [ "${UNAME}" == "Darwin" ] ; then
       CORES="$(sysctl -n machdep.cpu.core_count)"
    else
@@ -132,4 +134,4 @@
 
 # ====== Build ==============================================================
 echo "Starting build using up to ${CORES} cores ..."
-${COMMAND} make -j"${CORES}"
+${COMMAND} make -j "${CORES}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/debian/changelog 
new/netperfmeter-2.0.10/debian/changelog
--- old/netperfmeter-2.0.9/debian/changelog     2026-07-11 13:21:18.000000000 
+0200
+++ new/netperfmeter-2.0.10/debian/changelog    2026-07-31 12:49:37.000000000 
+0200
@@ -1,3 +1,9 @@
+netperfmeter (2.0.10-1ubuntu1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Thomas Dreibholz <[email protected]>  Fri, 31 Jul 2026 12:49:37 +0200
+
 netperfmeter (2.0.9-1ubuntu1) unstable; urgency=medium
 
   * New upstream release.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/freebsd/netperfmeter/Makefile 
new/netperfmeter-2.0.10/freebsd/netperfmeter/Makefile
--- old/netperfmeter-2.0.9/freebsd/netperfmeter/Makefile        2026-07-11 
13:21:18.000000000 +0200
+++ new/netperfmeter-2.0.10/freebsd/netperfmeter/Makefile       2026-07-31 
12:49:37.000000000 +0200
@@ -1,5 +1,5 @@
 PORTNAME=      netperfmeter
-DISTVERSION=   2.0.9
+DISTVERSION=   2.0.10
 CATEGORIES=    benchmarks
 MASTER_SITES=  https://www.nntb.no/~dreibh/netperfmeter/download/
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/rpm/netperfmeter.spec 
new/netperfmeter-2.0.10/rpm/netperfmeter.spec
--- old/netperfmeter-2.0.9/rpm/netperfmeter.spec        2026-07-11 
13:21:18.000000000 +0200
+++ new/netperfmeter-2.0.10/rpm/netperfmeter.spec       2026-07-31 
12:49:37.000000000 +0200
@@ -1,5 +1,5 @@
 Name: netperfmeter
-Version: 2.0.9
+Version: 2.0.10
 Release: 1
 Summary: Network performance meter for the UDP, TCP, MPTCP, SCTP and DCCP 
protocols
 License: GPL-3.0-or-later
@@ -304,6 +304,8 @@
 
 
 %changelog
+* Fri Jul 31 2026 Thomas Dreibholz <[email protected]> - 2.0.10-1
+- New upstream release.
 * Sat Jul 11 2026 Thomas Dreibholz <[email protected]> - 2.0.9-1
 - New upstream release.
 * Wed Jul 01 2026 Thomas Dreibholz <[email protected]> - 2.0.8-1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/CMakeLists.txt 
new/netperfmeter-2.0.10/src/CMakeLists.txt
--- old/netperfmeter-2.0.9/src/CMakeLists.txt   2026-07-03 10:11:27.000000000 
+0200
+++ new/netperfmeter-2.0.10/src/CMakeLists.txt  2026-07-23 17:49:42.000000000 
+0200
@@ -82,7 +82,7 @@
    transfer.h
 )
 TARGET_INCLUDE_DIRECTORIES(netperfmeter PRIVATE ${BZ2_INCLUDE_DIR} 
${SCTP_INCLUDE_DIR} ${QUIC_INCLUDE_DIR} ${LIBIBERTY_INCLUDE_DIR})
-TARGET_LINK_LIBRARIES(netperfmeter ${BZ2_LIBRARY} ${SCTP_LIBRARY} 
${QUIC_LIBRARY} ${LIBIBERTY_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
+TARGET_LINK_LIBRARIES(netperfmeter ${BZ2_LIBRARY} ${SCTP_LIBRARY} 
${QUIC_LIBRARY} ${LIBIBERTY_LIBRARY} ${KSTAT_LIBRARY} ${SOCKET_LIBRARY} 
${CMAKE_THREAD_LIBS_INIT})
 INSTALL(TARGETS netperfmeter     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 INSTALL(FILES   netperfmeter.1   DESTINATION         
${CMAKE_INSTALL_MANDIR}/man1)
 INSTALL(FILES   netperfmeter.xml DESTINATION         
${CMAKE_INSTALL_DATAROOTDIR}/mime/packages)
@@ -207,7 +207,7 @@
 
 # ====== Test Programs ======================================================
 # ADD_EXECUTABLE(t1 t1.cc assure.cc cpustatus.cc loglevel.cc tools.cc mutex.cc)
-# TARGET_LINK_LIBRARIES(t1 ${SCTP_LIBRARY})
+# TARGET_LINK_LIBRARIES(t1 ${SCTP_LIBRARY} ${KSTAT_LIBRARY} ${SOCKET_LIBRARY})
 # ADD_EXECUTABLE(qs qs.cc assure.cc loglevel.cc tools.cc mutex.cc)
 # TARGET_LINK_LIBRARIES(qs ${SCTP_LIBRARY} ${QUIC_LIBRARY})
 # ADD_EXECUTABLE(qc qc.cc assure.cc loglevel.cc tools.cc mutex.cc)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/cpustatus.cc 
new/netperfmeter-2.0.10/src/cpustatus.cc
--- old/netperfmeter-2.0.9/src/cpustatus.cc     2026-06-23 13:11:41.000000000 
+0200
+++ new/netperfmeter-2.0.10/src/cpustatus.cc    2026-07-23 17:49:42.000000000 
+0200
@@ -45,6 +45,9 @@
 #include <sys/sysctl.h>
 #elif defined(__APPLE__)
 #include <mach/mach.h>
+#elif defined(__sun__)
+#include <kstat.h>
+#include <sys/sysinfo.h>
 #endif
 
 
@@ -67,6 +70,12 @@
    "User", "Nice", "System", "Spinning", "Interrupt", "Idle"
 };
 
+#elif defined(__sun__)
+#define IDLE_INDEX 3
+const char* CPUStatus::CpuStateNames[] = {
+   "User", "System", "Wait", "Idle"
+};
+
 #elif defined(__APPLE__)
 #define IDLE_INDEX 2
 const char* CPUStatus::CpuStateNames[] = {
@@ -123,6 +132,13 @@
    };
    CPUs = (unsigned int)hinfo.max_cpus;
 
+#elif defined(__sun) || defined(__sun__)
+   CpuStates = 4;
+   CPUs = sysconf(_SC_NPROCESSORS_CONF);
+   if(CPUs < 1) {
+      CPUs = 1;
+   }
+
 #else
 #error Missing case!
 #endif
@@ -267,6 +283,29 @@
    }
    vm_deallocate(mach_task_self(), (vm_address_t)processorInfoArray,
                  infoCount * sizeof(integer_t));
+#elif defined(__sun) || defined(__sun__)
+   kstat_ctl_t* kc = kstat_open();
+   if(kc == nullptr) {
+      LOG_FATAL
+      stdlog << "Unable to open kstat!" << "\n";
+      LOG_END_FATAL
+   }
+
+   unsigned int cpuIndex = 0;
+   for(kstat_t* ksp = kc->kc_chain; (ksp != nullptr) && (cpuIndex < CPUs); ksp 
= ksp->ks_next) {
+      if(strcmp(ksp->ks_module, "cpu_stat") == 0) {
+         if(kstat_read(kc, ksp, nullptr) != -1) {
+            const cpu_stat_t* cs = static_cast<cpu_stat_t*>(ksp->ks_data);
+            const unsigned int base = (cpuIndex + 1) * CpuStates;
+            CpuTimes[base + 0] = cs->cpu_sysinfo.cpu[CPU_USER];
+            CpuTimes[base + 1] = cs->cpu_sysinfo.cpu[CPU_KERNEL];
+            CpuTimes[base + 2] = cs->cpu_sysinfo.cpu[CPU_WAIT];
+            CpuTimes[base + 3] = cs->cpu_sysinfo.cpu[CPU_IDLE];
+            cpuIndex++;
+         }
+      }
+   }
+   kstat_close(kc);
 #endif
 
    // ------ Compute total values -------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/cpustatus.h 
new/netperfmeter-2.0.10/src/cpustatus.h
--- old/netperfmeter-2.0.9/src/cpustatus.h      2026-06-23 13:11:41.000000000 
+0200
+++ new/netperfmeter-2.0.10/src/cpustatus.h     2026-07-23 17:49:42.000000000 
+0200
@@ -73,7 +73,7 @@
    typedef unsigned long long tick_t;
 #elif defined(__NetBSD__)
    typedef uint64_t           tick_t;
-#elif defined(__FreeBSD__) || defined(__OpenBSD__)
+#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__sun__)
    typedef unsigned long      tick_t;
 #elif defined(__APPLE__)
    typedef unsigned int       tick_t;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/flow.cc 
new/netperfmeter-2.0.10/src/flow.cc
--- old/netperfmeter-2.0.9/src/flow.cc  2026-06-23 13:11:41.000000000 +0200
+++ new/netperfmeter-2.0.10/src/flow.cc 2026-07-27 15:50:47.000000000 +0200
@@ -542,6 +542,42 @@
          return false;
       }
    }
+#if defined(HAVE_QUIC)
+   else if(TrafficSpec.Protocol == IPPROTO_QUIC) {
+      quic_config quicCnfig;
+      socklen_t   quicCnfigLength = sizeof(quicCnfig);
+      if(ext_getsockopt(socketDescriptor, SOL_QUIC, QUIC_SOCKOPT_CONFIG, 
&quicCnfig, &quicCnfigLength) < 0) {
+
+         LOG_ERROR
+         stdlog << format("Failed to obtain configuration (QUIC_SOCKOPT_CONFIG 
option) on QUIC socket %d: %s!",
+                           socketDescriptor, strerror(errno)) << "\n";
+         LOG_END
+         return false;
+      }
+      const char* congestionControl = TrafficSpec.CongestionControl.c_str();
+      if( (strcmp(congestionControl, "reno") == 0) || 
(strcmp(congestionControl, "default") == 0) ) {
+         quicCnfig.congestion_control_algo = QUIC_CONG_ALG_RENO;
+      }
+      else if(strcmp(congestionControl, "cubic") == 0) {
+         quicCnfig.congestion_control_algo = QUIC_CONG_ALG_CUBIC;
+      }
+      else {
+         LOG_ERROR
+         stdlog << format("Invalid congestion control %s for QUIC requested on 
socket %d",
+                          congestionControl, socketDescriptor) << "\n";
+         LOG_END
+         return false;
+      }
+      if(ext_setsockopt(socketDescriptor, SOL_QUIC, QUIC_SOCKOPT_CONFIG, 
&quicCnfig, quicCnfigLength) < 0) {
+
+         LOG_ERROR
+         stdlog << format("Failed to set configuration (QUIC_SOCKOPT_CONFIG 
option) on QUIC socket %d: %s!",
+                           socketDescriptor, strerror(errno)) << "\n";
+         LOG_END
+         return false;
+      }
+   }
+#endif
 #endif
 
    return true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/loglevel.cc 
new/netperfmeter-2.0.10/src/loglevel.cc
--- old/netperfmeter-2.0.9/src/loglevel.cc      2026-06-23 13:11:41.000000000 
+0200
+++ new/netperfmeter-2.0.10/src/loglevel.cc     2026-07-23 17:49:42.000000000 
+0200
@@ -42,7 +42,7 @@
 unsigned int  gLogLevel      = LOGLEVEL_INFO;
 bool          gColorMode     = true;
 bool          gCloseStdLog   = false;
-char          gHostName[256] = { 0x00 };
+char          gHostName[258] = { 0x00 };
 Mutex         gLogMutex;
 
 
@@ -85,7 +85,7 @@
                << "\n\n";
    }
 
-   utsname hostInfo;
+   struct utsname hostInfo;
    if(uname(&hostInfo) != 0) {
       safestrcpy(gHostName, "?", sizeof(gHostName));
    }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/loglevel.h 
new/netperfmeter-2.0.10/src/loglevel.h
--- old/netperfmeter-2.0.9/src/loglevel.h       2026-05-08 08:50:40.000000000 
+0200
+++ new/netperfmeter-2.0.10/src/loglevel.h      2026-07-23 17:49:42.000000000 
+0200
@@ -48,7 +48,7 @@
 extern unsigned int  gLogLevel;
 extern bool          gColorMode;
 extern bool          gCloseStdLog;
-extern char          gHostName[256];
+extern char          gHostName[258];
 extern Mutex         gLogMutex;
 
 #define stdlog (*gStdLog)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/netperfmeter.cc 
new/netperfmeter-2.0.10/src/netperfmeter.cc
--- old/netperfmeter-2.0.9/src/netperfmeter.cc  2026-07-06 13:07:31.000000000 
+0200
+++ new/netperfmeter-2.0.10/src/netperfmeter.cc 2026-07-27 09:59:00.000000000 
+0200
@@ -302,7 +302,7 @@
                gLocalDataAddresses = 0;
                char* address = optarg;
                while(gLocalDataAddresses < MAX_LOCAL_ADDRESSES) {
-                  char* idx = index(address, ',');
+                  char* idx = strchr(address, ',');
                   if(idx) {
                      *idx = 0x00;
                   }
@@ -325,7 +325,7 @@
                gLocalControlAddresses = 0;
                char* address = optarg;
                while(gLocalControlAddresses < MAX_LOCAL_ADDRESSES) {
-                  char* idx = index(address, ',');
+                  char* idx = strchr(address, ',');
                   if(idx) {
                      *idx = 0x00;
                   }
@@ -986,7 +986,7 @@
             error = quic_session_set_alpn(session, alpns, strlen(alpns));
          }
          if(!error) {
-            error = gnutls_server_name_set(session, GNUTLS_NAME_DNS, host, 
strlen(host));
+            error = gnutls_server_name_set(session, GNUTLS_NAME_DNS, host, 
(host != NULL) ? strlen(host) : 0);
          }
          if(!error) {
             gnutls_session_set_verify_cert(session, host, 0);
@@ -2285,7 +2285,7 @@
    if(argc - optind != 1) {
       usage(argv[0], 1);
    }
-   const unsigned int localPort     = (index(argv[optind], ':') == nullptr) ?
+   const unsigned int localPort     = (strchr(argv[optind], ':') == nullptr) ?
                                          atol(argv[optind]) : 0;
    const bool         inPassiveMode = (localPort >= 1) && (localPort < 65535);
    if( (!inPassiveMode) && (gAssocSpecs.size() < 1) ) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/pdfembedfonts 
new/netperfmeter-2.0.10/src/pdfembedfonts
--- old/netperfmeter-2.0.9/src/pdfembedfonts    2026-07-03 10:11:27.000000000 
+0200
+++ new/netperfmeter-2.0.10/src/pdfembedfonts   2026-07-28 14:39:26.000000000 
+0200
@@ -53,6 +53,9 @@
    OpenBSD)
       GETOPT="$(command -v gnugetopt || true)"
       ;;
+   SunOS)
+      GETOPT="$(PATH="/usr/gnu/bin:${PATH}" command -v getopt || true)"
+      ;;
    Darwin)
       GETOPT="$(env PATH="/opt/homebrew/opt/gnu-getopt/bin:${PATH}" command -v 
getopt || true)"
       ;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/plot-netperfmeter-results 
new/netperfmeter-2.0.10/src/plot-netperfmeter-results
--- old/netperfmeter-2.0.9/src/plot-netperfmeter-results        2026-07-03 
10:11:27.000000000 +0200
+++ new/netperfmeter-2.0.10/src/plot-netperfmeter-results       2026-07-28 
14:39:34.000000000 +0200
@@ -60,6 +60,9 @@
    OpenBSD)
       GETOPT="$(command -v gnugetopt || true)"
       ;;
+   SunOS)
+      GETOPT="$(PATH="/usr/gnu/bin:${PATH}" command -v getopt || true)"
+      ;;
    Darwin)
       GETOPT="$(env PATH="/opt/homebrew/opt/gnu-getopt/bin:${PATH}" command -v 
getopt || true)"
       ;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/netperfmeter-2.0.9/src/quic-setup/CertificateHelper.py 
new/netperfmeter-2.0.10/src/quic-setup/CertificateHelper.py
--- old/netperfmeter-2.0.9/src/quic-setup/CertificateHelper.py  2026-07-03 
10:11:27.000000000 +0200
+++ new/netperfmeter-2.0.10/src/quic-setup/CertificateHelper.py 2026-07-27 
09:59:00.000000000 +0200
@@ -29,6 +29,7 @@
 
 import ipaddress
 import os
+import platform
 import re
 import shlex
 import shutil
@@ -41,11 +42,11 @@
 if sys.version_info < MIN_PYTHON:
    sys.exit('Python %s.%s or later is required!' % MIN_PYTHON)
 
-# This library also requires the netifaces package:
+# This library also requires the psutil package:
 try:
-   import netifaces
+   import psutil
 except ImportError:
-   sys.exit('The Python netifaces package is required!')
+   sys.exit('The Python psutil package is required!')
 
 from typing import Final
 from enum   import Enum
@@ -84,6 +85,25 @@
 VerboseMode : bool = True
 
 
+# ###### Find OpenSSL #######################################################
+system      : Final[str] = platform.system()
+currentPath : Final[str] = os.environ.get('PATH', '')
+
+if system == 'Darwin':
+   searchPath = f'/opt/homebrew/opt/openssl/bin{os.pathsep}{currentPath}'
+   opensslExecutable = shutil.which('openssl', path = searchPath)
+elif system == 'SunOS':
+   searchPath = f'/usr/openssl/3/bin{os.pathsep}{currentPath}'
+   opensslExecutable = shutil.which('openssl', path = searchPath)
+else:
+   opensslExecutable = shutil.which('openssl')
+
+if not opensslExecutable:
+   print('ERROR: OpenSSL is not installed!', file = sys.stderr)
+   sys.exit(1)
+
+# print(f'Using OpenSSL executable {opensslExecutable}!')
+
 
 # ###### Execute command ####################################################
 def execute(command : str, mayFail : bool = False) -> int:
@@ -122,15 +142,15 @@
             subjectAltName = subjectAltName + ',DNS:' + fqdn
 
          # ------ Add all IP addresses --------------------------------------
-         interfaces = netifaces.interfaces()
-         for family in [ netifaces.AF_INET, netifaces.AF_INET6 ]:
-            for interface in interfaces:
-               interfaceAddresses = 
netifaces.ifaddresses(interface).get(family)
-               if interfaceAddresses:
-                  for interfaceAddress in interfaceAddresses:
-                     address = ipaddress.ip_address(interfaceAddress['addr'])
-                     if (not address.is_link_local) and (not 
address.is_loopback):
-                        addresses.add(address)
+         interfaces = psutil.net_if_addrs()
+         for interface in interfaces:
+            interfaceAddresses = interfaces[interface]
+            for interfaceAddress in interfaceAddresses:
+               if ( (interfaceAddress.family == socket.AF_INET) or
+                  (interfaceAddress.family == socket.AF_INET6) ):
+                  address = ipaddress.ip_address(interfaceAddress.address)
+                  if (not address.is_link_local) and (not address.is_loopback):
+                     addresses.add(address)
 
       # ====== Look up addresses ============================================
       elif hint == 'LOOKUP':
@@ -456,7 +476,7 @@
             raise Exception('Unsupported key algorithm!')
 
          execute(f"""\
-openssl genpkey \
+{opensslExecutable} genpkey \
    {algorithmOptions} \
    -aes256 \
    -out {shlex.quote(self.KeyFileName + '.tmp')} \
@@ -479,7 +499,7 @@
          if not os.path.isfile(self.CertFileName):
             sys.stdout.write('\x1b[33mGenerating self-signed root CA 
certificate ' + self.CertFileName + ' ...\x1b[0m\n')
             execute(f"""\
-openssl req \
+{opensslExecutable} req \
    -x509 -new \
    -config {shlex.quote(self.ConfigFileName)} \
    -extensions v3_ca \
@@ -510,7 +530,7 @@
             csrFileName : Final[str] = self.CertFileName + '.csr'
             sys.stdout.write('\x1b[33mGenerating CSR ' + csrFileName + ' 
...\x1b[0m\n')
             execute(f"""\
-openssl req \
+{opensslExecutable} req \
    -new \
    -config {shlex.quote(self.ConfigFileName)} \
    -extensions v3_ca \
@@ -526,7 +546,7 @@
 
             tmpCertFileName = self.CertFileName + '.tmp'
             execute(f"""\
-openssl ca \
+{opensslExecutable} ca \
    -batch \
    -notext \
    -config {shlex.quote(parentCA.ConfigFileName)} \
@@ -556,7 +576,7 @@
             #       all certificates of the chain.
             #       -> 
https://stackoverflow.com/questions/25482199/verify-a-certificate-chain-using-openssl-verify
             command : str = f"""\
-openssl verify \
+{opensslExecutable} verify \
  -verbose \
  -CAfile {shlex.quote(self.RootCA.CertFileName)}"""
             if self.ParentCA:
@@ -573,7 +593,7 @@
       # ====== Print certificate ============================================
       if VerboseMode:
          execute(f"""\
-openssl x509 \
+{opensslExecutable} x509 \
  -noout \
  -subject \
  -in {shlex.quote(self.CertFileName)}""")
@@ -590,7 +610,7 @@
 
       tmpCertFileName = certificate.CertFileName + '.tmp'
       execute(f"""\
-openssl ca \
+{opensslExecutable} ca \
  -batch \
  -notext \
  -config {shlex.quote(self.ConfigFileName)} \
@@ -615,7 +635,7 @@
       sys.stdout.write('\x1b[33mVerifying certificate ' + 
certificate.CertFileName + ' ...\x1b[0m\n')
       assert self.RootCA is not None
       result = execute(f"""\
-openssl verify \
+{opensslExecutable} verify \
  -verbose \
  -crl_check \
  -CAfile {shlex.quote(self.RootCA.CertFileName)} \
@@ -630,7 +650,7 @@
       sys.stdout.write('\x1b[33mRevoking CA ' + ca.CertFileName + ' 
...\x1b[0m\n')
       assert os.path.isfile(ca.CertFileName)
       result = execute(f"""\
-openssl ca \
+{opensslExecutable} ca \
  -revoke {shlex.quote(ca.CertFileName)} \
  -config {shlex.quote(self.ConfigFileName)} \
  -passin file:{shlex.quote(self.PasswordFileName)}""")
@@ -646,7 +666,7 @@
       sys.stdout.write('\x1b[33mRevoking certificate ' + 
certificate.CertFileName + ' ...\x1b[0m\n')
       assert os.path.isfile(self.CertFileName)
       result = execute(f"""\
-openssl ca \
+{opensslExecutable} ca \
  -revoke {shlex.quote(certificate.CertFileName)} \
  -config {shlex.quote(certificate.CA.ConfigFileName)} \
  -passin file:{shlex.quote(certificate.CA.PasswordFileName)}""")
@@ -661,7 +681,7 @@
    def generateCRL(self) -> None:
       sys.stdout.write('\x1b[33mGenerating CRL ' + self.CRLFileName + ' 
...\x1b[0m\n')
       execute(f"""\
-openssl ca \
+{opensslExecutable} ca \
  -gencrl \
  -config {shlex.quote(self.ConfigFileName)} \
  -passin file:{shlex.quote(self.PasswordFileName)} \
@@ -761,7 +781,7 @@
             raise Exception('Unsupported key algorithm!')
 
          execute(f"""\
-openssl genpkey \
+{opensslExecutable} genpkey \
  {algorithmOptions} \
  -out {shlex.quote(keyFileName + '.tmp')} && \
 mv {shlex.quote(keyFileName + '.tmp')} {shlex.quote(keyFileName)}""")
@@ -777,7 +797,7 @@
          csrFileName : Final[str] = os.path.join(self.Directory, safeName + 
'.csr')
          sys.stdout.write('\x1b[33mGenerating CSR ' + csrFileName + ' 
...\x1b[0m\n')
          execute(f"""\
-openssl req \
+{opensslExecutable} req \
  -new \
  -config {shlex.quote(self.CA.ConfigFileName)} \
  -extensions {shlex.quote(self.Extension)} \
@@ -802,7 +822,7 @@
       # ====== Verify certificate ===========================================
       # Print certificate:
       execute(f"""\
-openssl x509 \
+{opensslExecutable} x509 \
  -noout \
  -subject \
  -in {shlex.quote(self.CertFileName)}""")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/quic-setup/view-certificate 
new/netperfmeter-2.0.10/src/quic-setup/view-certificate
--- old/netperfmeter-2.0.9/src/quic-setup/view-certificate      2026-07-03 
10:11:27.000000000 +0200
+++ new/netperfmeter-2.0.10/src/quic-setup/view-certificate     1970-01-01 
01:00:00.000000000 +0100
@@ -1,203 +0,0 @@
-#!/usr/bin/env bash
-# ==========================================================================
-#         ____            _                     _____           _
-#        / ___| _   _ ___| |_ ___ _ __ ___     |_   _|__   ___ | |___
-#        \___ \| | | / __| __/ _ \ '_ ` _ \ _____| |/ _ \ / _ \| / __|
-#         ___) | |_| \__ \ ||  __/ | | | | |_____| | (_) | (_) | \__ \
-#        |____/ \__, |___/\__\___|_| |_| |_|     |_|\___/ \___/|_|___/
-#               |___/
-#                             --- System-Tools ---
-#                  https://www.nntb.no/~dreibh/system-tools/
-# ==========================================================================
-#
-# X.509 Certificate Viewer
-# Copyright (C) 2025-2026 by Thomas Dreibholz
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# Contact: [email protected]
-
-# Bash options:
-set -euo pipefail
-
-# gettext options:
-export TEXTDOMAIN="view-certificate"
-# export TEXTDOMAINDIR="${PWD}/locale"   # Default: "/usr/share/locale"
-
-# shellcheck disable=SC1091
-. gettext.sh
-
-
-# ###### Usage ##############################################################
-usage () {
-   local exitCode="$1"
-   echo >&2 "$(gettext "Usage:") $0 [-h|--help] [-v|--version] certificate 
[...]"
-   exit "${exitCode}"
-}
-
-
-# ###### Version ############################################################
-version () {
-   echo "view-certificate @BUILD_MAJOR@.@BUILD_MINOR@.@BUILD_PATCH@"
-   exit 0
-}
-
-
-# ###### Print date in current locale and current time zone #################
-print-date ()
-{
-   local input="$1"
-   local unixTS
-   local datetime
-   if date --version >/dev/null 2>&1; then
-      unixTS="$(date -d "${input}" +"%s")"
-      datetime="$(date -d "@${unixTS}" +"%c %Z")"
-   else
-      unixTS="$(LC_ALL=C.UTF-8 date -j -f "%b %d %T %Y %Z" "${input}" +"%s")"
-      datetime="$(date -r "${unixTS}" +"%c %Z")"
-   fi
-   echo "${datetime}"
-}
-
-
-
-# ###### Main program #######################################################
-
-# ====== Handle arguments ===================================================
-GETOPT="$(PATH=/usr/local/bin:${PATH} which getopt || true)"
-options="$(${GETOPT} -o hv --long help,version -a -- "$@")"
-# shellcheck disable=SC2181
-if [[ $? -ne 0 ]]; then
-   usage 1
-fi
-eval set -- "${options}"
-
-while [ $# -gt 0 ] ; do
-   case "$1" in
-      -h | --help)
-         usage 0
-         # shift
-         ;;
-      -v | --version)
-         version
-         # shift
-         ;;
-      --)
-         shift
-         break
-         ;;
-  esac
-done
-if [ $# -lt 1 ] ; then
-   usage 1
-fi
-
-# ====== Check availability of tools ========================================
-OPENSSL="$(which openssl || true)"
-if [ "${OPENSSL}" == "" ] ; then
-   gettext >&2 "ERROR: OpenSSL is not installed!"
-   echo >&2
-   exit 1
-fi
-
-# ====== Check each certificate =============================================
-while [ $# -gt 0 ] ; do
-
-   # ====== Look for certificate ============================================
-   CERTIFICATE_FILE="$1"
-   shift
-   if [ "${CERTIFICATE_FILE}" == "-" ] ; then
-      CERTIFICATE_FILE="/dev/stdin"
-   fi
-   if [ ! -e "${CERTIFICATE_FILE}" ] ; then
-      eval_gettext >&2 "ERROR: Unable to find certificate file 
\${CERTIFICATE_FILE}!"
-      echo >&2
-      exit 1
-   fi
-
-   # ====== Display certificate details =====================================
-   echo -e "\e[34m$(eval_gettext "Certificate in \${CERTIFICATE_FILE}:")\e[0m"
-   "${OPENSSL}" x509 -in "${CERTIFICATE_FILE}" -noout -subject -dates -ext 
subjectAltName,basicConstraints,keyUsage,extendedKeyUsage,subjectKeyIdentifier,authorityKeyIdentifier
 | (
-      validityFrom="?"
-      validityTo="?"
-      subject="?"
-      declare -A extensions=(
-         ["Subject Alternative Name"]="(none)"
-         ["Key Usage"]="(none)"
-         ["Basic Constraints"]="(none)"
-         ["Extended Key Usage"]="(none)"
-         ["Subject Key Identifier"]="(none)"
-         ["Authority Key Identifier"]="(none)"
-      )
-      while read -r line ; do
-         if [[ "${line}" =~ ^(subject=)(.*)$ ]] ; then
-            # Subject with underlined CN:
-            # shellcheck disable=SC2001
-            subject="$(echo "${BASH_REMATCH[2]}" | sed -e 's/\(CN = 
\)\([^,]*\)/\x1b[4m\1\2\x1b[24m/')"
-         elif [[ "${line}" =~ ^(notBefore=)(.*)$ ]] ; then
-            validityFrom="$(print-date "${BASH_REMATCH[2]}")"
-         elif [[ "${line}" =~ ^(notAfter=)(.*)$ ]] ; then
-            validityTo="$(print-date "${BASH_REMATCH[2]}")"
-         elif [[ "${line}" =~ ^([ \t]*)(X509v3 )(.*)(:[[:space:]]*)(.*)$ ]] ; 
then
-            extension="${BASH_REMATCH[3]}"
-            critical="${BASH_REMATCH[5]}"
-            if [ "${critical}" != "" ] ; then
-               extensions["${extension}"]="\\e[4m${critical}:\\e[24m "
-            else
-               extensions["${extension}"]=""
-            fi
-         elif [ "${extension}" != "" ] && [[ "${line}" =~ ^([[:space:]]*)(.*)$ 
]] ; then
-            extensions["${extension}"]+="${BASH_REMATCH[2]}"
-            extension=""
-         fi
-      done
-      label="$(gettext "%-25s")"
-      printf "\e[33m${label} \e[35m%s\e[0m\n"          \
-         "$(gettext "Subject:")"  "$(echo -e "${subject}")"
-      printf "\e[33m${label} \e[35m%s\e[0m\n"          \
-         "$(gettext "Subject Alt Name:")"  "${extensions["Subject Alternative 
Name"]}"
-      printf "\e[33m${label} \e[36m%s — %s\e[0m\n"     \
-         "$(gettext "Validity:")" "${validityFrom}" "${validityTo}"
-      for extension in "Basic Constraints" \
-                       "Key Usage" "Extended Key Usage" \
-                       "Subject Key Identifier" "Authority Key Identifier" ; do
-         printf "\e[33m${label} \e[33m%s\e[0m\n"      \
-            "${extension}:" "$(echo -e "${extensions["${extension}"]}")"
-      done
-   )
-   echo -en "\e[0m"
-
-   # ====== Display certificate hierarchy ===================================
-   echo -e "\e[34m$(eval_gettext "Hierarchy in \${CERTIFICATE_FILE}"):\e[0m"
-   "${OPENSSL}" crl2pkcs7 -nocrl -certfile "${CERTIFICATE_FILE}" | \
-      "${OPENSSL}" pkcs7 -print_certs -noout | (
-         entry=0
-         while read -r line ; do
-            if [[ "${line}" =~ ^(subject=)(.*)$ ]] ; then
-               # Subject with underlined CN:
-               # shellcheck disable=SC2001
-               subject="$(echo "${BASH_REMATCH[2]}" | sed -e 's/\(CN = 
\)\([^,]*\)/\x1b[4m\1\2\x1b[24m/')"
-
-               entry=$((entry + 1))
-               echo -en " \x1b[33m$(eval_gettext "#\${entry}.") "
-               if [ ${entry} -eq 1 ] ; then
-                  echo -e "\e[35m${subject}\e[0m"
-               else
-                  echo -e "\e[37m${subject}\e[0m"
-               fi
-            fi
-         done
-      )
-
-done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/runtimeestimator.cc 
new/netperfmeter-2.0.10/src/runtimeestimator.cc
--- old/netperfmeter-2.0.9/src/runtimeestimator.cc      2026-06-23 
13:11:41.000000000 +0200
+++ new/netperfmeter-2.0.10/src/runtimeestimator.cc     2026-07-23 
17:49:42.000000000 +0200
@@ -38,7 +38,7 @@
 #include <endian.h>
 #elif defined(__FreeBSD__) || defined(__NetBSD__)
 #include <sys/endian.h>
-#elif defined(__OpenBSD__)
+#elif defined(__OpenBSD__) || defined(__sun__)
 #include <endian.h>
 #elif defined(__APPLE__)
 #include <libkern/OSByteOrder.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/netperfmeter-2.0.9/src/tools.h 
new/netperfmeter-2.0.10/src/tools.h
--- old/netperfmeter-2.0.9/src/tools.h  2026-06-23 13:11:41.000000000 +0200
+++ new/netperfmeter-2.0.10/src/tools.h 2026-07-23 17:49:42.000000000 +0200
@@ -44,7 +44,7 @@
 #include <ext_socket.h>
 
 // Endianess conversions: htobe*(), be*toh():
-#if defined(__linux__) || defined(__OpenBSD__)
+#if defined(__linux__) || defined(__OpenBSD__) || defined(__sun__)
 #include <endian.h>
 #elif defined(__FreeBSD__) || defined(__NetBSD__)
 #include <sys/endian.h>

Reply via email to