Changes in 1.0-beta2: * cfg.cpp: - [MISC] Make it an error if certain command line arguments are given more than once, to prevent surprising results. * log.cpp: - [FIX] Fix a small logical error in makeMessageAndLog() and ensure that errno isn't changed by this method in any way. * main.cpp: - [FIX] Signals revisited: protect syslog() inside the crash handler by blocking all signals. - [FIX] Fix and cleanup a few error and log messages. - [MISC] Set up the server before dropping privileges, to allow the user to make XSI listen on a privileged port. * linux.cpp: - [FIX] Properly initialize private sensor data; should be a no-op, but better safe than sorry. Any potential issue would be easier to debug now. * various: - [MISC] Clean up the startup procedure of XMLSysInfo. No more chit-chat, and do not spam syslog if the startup is going to fail anyways. - [FIX] Minor #include fixes; no-op on all supported platforms. - [MISC] Reorganize and improve platform/compiler compatibility related code. (Affects libxsicompat mostly.) Sync with Proxsi where applicable. * Documentation: - [MISC] Some tweaks and cleanups. Changes in 1.0-beta1: * fuzzer.{cpp,h}: - [FIX] Unbreak the Fuzzer after the beta0 changes by ensuring that XSICommon methods do nothing. * netbsd.cpp: - [FIX] Initialize last_cp_time[] properly to prevent bogus output in , and before the first stats update. * main.cpp: - [FIX] Fix informational [config] message in debug mode. * Documentation: - [MISC] various small tweaks Changes in 1.0-beta0: ! XMLSysInfo IS NOW "BETA", meaning that only important bug fixes may be done to the XML Schema from now on. No new features that affect the output will be added. Development concentrates on bug fixes and cleanups in preparation for the 1.0 release. ! ! There were incompatible changes to the XML Schema in this release. ! ! The versioning scheme of both the XML Schema and XMLSysInfo itself changed. ! ! This release adds a new command line parameter `-l', which allows logging via syslog. ! * XML Schema / xmlsysinfo.cpp / system.{cpp,h} / storage.{cpp,h}: - [MISC] Revert an earlier change and make the element optional again. This will make it easier in the future to have XSI ports on more exotic platforms, and help dummy-os.cpp to produce valid output. - [MISC] Make the element optional. However, it can be expected to exist on all supported platforms, which all have the element. This allows dummy-os.cpp to produce valid output. - [MISC] Also make , and elements optional. This allows dummy-os.cpp to produce output that does not contain false information. - [MISC] Rename to for consistency. - [MISC] Reorganize the element and its children, changing and adding elements to contains (per second) values as well. * XML Schema / xmlsysinfo.cpp / sensor.cpp: - [MISC] Rename all *_pct elements to *_percent, and call a percentage- sensor's unit "percent". Pct is no valid abbreviation and will not be used in an "externally visible" fashion. * XML Schema / xmlsysinfo.h: - [MISC] Bump schema version to 1.0-beta (new versioning scheme!) * XML Schema / timekeeper.cpp: - [MISC] Change the element to be of the type xs:decimal and include milliseconds in the output. * XML Schema / xmlsysinfo.cpp: - [MISC] Inside the element, nest the children in and elements for consistency. - [MISC] Inside the element, nest the children in and elements for consistency. * XML Schema: - [FIX] Change the type of the element from xs:decimal to xs:integer. * - [MISC] Change the XML Schema's versioning scheme, so that backwards compatible, minor version bumps are possible. This means: Clients supporting a higher minor version always support lower version output, and the other way round works if clients can ignore unknown (to them) elements (or just dump output.) Different major version numbers stay incompatible to each other. * main.cpp: - [FIX] Reorganize and comment code, fix a memory leak when using compression, and fix a few other (minor) buglets. Improve error and warning messages. - [ADD] Add handler for fatal signals, which logs crashes to syslog and/or stderr if logging or debug mode are enabled, respectively. - [ADD] Add XSI runtime and resource usage to the internal stats printed upon receiving SIGUSR1. * util.cpp: - [MISC] Add error checks for snprintf() return values, in order to be able to detect string truncation or format/encoding errors. * storage.{cpp,h} / xmlsysinfo.cpp: - [MISC] Make XSIStorage more efficient by taking care of the updateIOTotals() method. Now it is called only once per query and updates I/O totals only when necessary. * linux.cpp / netbsd.cpp: - [FIX] Filesystem space output was often wrong (duh!) due to using the wrong member of struct statvfs. Use f_frsize instead of f_bsize, unless f_frsize is 0. - [MISC] Do not include tmpfs filesystems in the output, just like on Solaris. * freebsd.cpp / netbsd.cpp / openbsd.cpp / solaris.cpp: - [ADD] Add support for transfers per second output on disk devices. * linux.cpp - [FIX] Add support for transfers per second output on disk devices, and remove output of I/O bytes per second output. The output is wrong for all devices that do not have a sector size of 512 bytes, and we can't find out the proper size without root privileges. * solaris.cpp: - [FIX] Explicitly ignore ZFS filesystems in the output. ZFS is so different that it cannot be squeezed into a data layout that is suited for "traditional" filesystems. This change prevents bogus output in the element. * - [MISC] Add precaution, as on Linux and NetBSD, and use f_bsize if the f_frsize member of struct statvfs64 is 0. * configure.in: - [MISC] Find pfvar.h in net/pf/pfvar.h as well, as seen on DragonFly. - [MISC] Use new versioning scheme, in sync with the XML Schema. * libxsicompat: - [MISC] Remove err*() and warn*() compatibility functions, they are no longer required. - [MISC] Remove daemon(3) function and use our own instead. * various: - [ADD] New feature: Logging to syslog (on demand,) with the new command line parameter `-l'. - [MISC] Switch to using the new XSI_Log class. - [MISC] Clean up constructors in platform-dependent code. - [MISC] Handle packet filter statistics in the XSICommon class, instead of the platform-dependent code. - [MISC] Set certain uname() information in the XSICommon class (uname() is a POSIX standard function.) - [FIX] Fix arithmetic to calculate the size of memory, swap space and filesystem space by adding explicit casts to 64-bit integers as appropriate. Changes in 0.98.30: ! The XML Namespace definitions have changed. ! ! This release adds a new build configuration `--enable-fuzzer' (disabled by default.) ! * XML Schema / xmlsysinfo.{cpp,h}: - [MISC] Adjust the XML Schema/output namespace and location to the new project location at SourceForge. This is an incompatible change to the XML Schema. * various: - [ADD] A fuzzer has been added to XSI, which can be enabled at build time. With the --enable-fuzzer configuration setting, the resulting binary will output nasty random junk instead of system information. Useful for debugging and testing both XSI itself and front-ends / clients. - [FIX] Complete, and - more importantly - correct string sanitization on all string data in elements and attributes. While there, ensure that string sanitization occurs only once. Found with the fuzzer. - [FIX] Miscellaneous mini-fixes of no real consequence, such as fixed error messages, and adding means to select a random enumeration value. (Used by the fuzzer.) - [MISC] Eliminate all single-precision floats and replace them with doubles, for added consistency and maintainability at almost no cost. * main.cpp: - [FIX] Fix a serious reliability issue by ignoring SIGPIPE. - [FIX] Squelch a harmless warning seen with gcc on NetBSD 4. * sensor.cpp: - [FIX] Fix a double-free() crash in code that handles the element. Found with the fuzzer. - [FIX] Fix a buglet introduced with the re-write, that caused silly output of the element. Found with the fuzzer. - [FIX] When setting the value age with a struct timeval, allow zero to be returned as the result. Also return zero on nonsensical input. Found with the fuzzer. * xmlsysinfo.cpp: - [FIX] Sync behavior with what is intended and documented: Output the element only if one or more _valid_ sensors are present and have its element show the number of _valid_ sensors. Found with the fuzzer. Changes in 0.98.29: ! Some possible values of restricted tokens changed in the XML Schema. ! * XML Schema / various: - [MISC] Major cleanup and revamp of the sensors related code, making it more flexible and easier to use internally (sensor.cpp is now almost 4kB smaller after a rewrite.) While doing so, the "type" attribute's possible values have changed, and two new elements and were added (for sensors that XSI does not anticipate.) * various: - [MISC] internal consistency cleanup wrt class names * openbsd.cpp: - [FIX] OpenBSD -current as of December 23rd 2006 has a new sensor API. Adjust so that XSI works again. * netbsd.cpp: - [FIX] Be more thorough when collecting vmstat child processes in the get-interrupt-stats hack. Changes in 0.98.28: ! New XML output documentation (in HTML format) is now installed with the rest of XMLSysInfo. ! ! While writing the documentation, several bugs and inconsistencies have been found and subsequently fixed. ! * XML Schema / cfg.cpp: - [MISC] Removed the element, as it is actually useless. The output is not affected by not running XSI as a daemon. This is an incompatible change to the XML Schema. * XML Schema / netifstat.cpp: - [FIX] Restrict the possible content of attribute "family" further, in order to match XSI reality more closely while keeping flexibility in this area. * XML Schema / xmlsysinfo.cpp: - [MISC] Always include the element in the output. - [FIX] Consistency fix: Let the values of indicator and drive sensors be element content instead of attributes. This is an incompatible change to the XML Schema. - [FIX] Consistency fix: Rename to . This is an incompatible change to the XML Schema. - [FIX] Consistency fix: Rename a RAID disk's to . This is an incompatible change to the XML Schema. - [FIX] Consistency fix: Make the element contain the CARP status and remove the status attribute. - [FIX] Consistency fix: Make the sensor status a new element and remove the attribute. This is an incompatible change to the XML Schema. * XML Schema / netifstat.cpp / xmlsysinfo.cpp: - [FIX] Change the address family attribute values INET and INET6 to IPv4 and IPv6, respectively. No need to be obscure ... This is an incompatible change to the XML Schema. * XML Schema: - [FIX] Additional token/string type fixes. - [FIX] Remove default value from ' element. (Only in theory an incompatible change to the Schema.) - [FIX] Change the order the and elements occur, to sync with reality. - [FIX] Remove <*_avg/> default values, as they cannot have any if is not available. Therefore, must not have a default value either. - [FIX] add missing types to a few attributes * network.cpp / network.h: - [MISC] Always return a fresh, sanitized readout of the hostname. Remove the now empty constructor of XSI_Network * raid.cpp: - [MISC] Return a real token as the RAID level, e.g. "RAID0". * util.cpp: - [FIX] improve string sanitization method * openbsd.cpp: - [FIX] No longer include inactive pages when calculating the size of available memory. * linux.cpp: - [MISC] Do not set the redundant sensor "description", as it has no real value. * doc/Makefile.am: - [ADD] Add the new HTML output documentation to the installation in $docdir. * configure: - [MISC] Update to autoconf-2.61 Changes in 0.98.27: ! The element was replaced with , with different semantics. New elements and (state) added. ! ! The element was renamed to . ! ! Even though Netfilter support is still missing on Linux, elevate the Linux port to "fully supported" status, as it is as complete as possible in every other aspect. ! * main.cpp: - [FIX] Ensure that handled signals are suspended during updates, to prevent accidential interruptions of system calls during regular usage. * XML Schema: - [FIX] In multipath routing setups, more than one default route per address family is possible. Therefore, unrestrict the number of default routes. - [FIX] Consistency: rename to to bring it in line with other elements showing totals. This is an incompatible change to the XML Schema. - [FIX] Clean up no longer used reference. - [FIX] String types cleanup. No functional change. * openbsd.cpp / freebsd.cpp / netbsd.cpp / solaris.cpp (+ netifstat.*): - [FIX] Ensure that local IPv6 addresses include their scope. * various: - [FIX] Replace the awkward element with a better element. This is an incompatible change to the XML Schema. - [ADD] Add new element to provide a proper method to output the duplex status of network interfaces. - [ADD] New element inside shows when the number of states comes dangerously close to the hard limit (pf only.) Changes in 0.98.26: ! The unit for timedelta sensors changed from "s" to "ms" ! * various: - [ADD] Add more top(1)-like functionality by including some process information inside the element. Report number of processes, number of running/zombie processes, and information about the top CPU and memory using processes. - [ADD] New command line parameter: -N ("No (user) names") Prevents username lookups and removes all usernames from the output. - [ADD] New command line parameter: -h ("help") Print a more verbose command line help and exit. - [ADD] print some statistics when receiving SIGUSR1 in debug mode * freebsd.cpp: - [FIX] Plug a nasty memory leak in FreeBSD's setDisks() method, which happened due to wrong libdevstat usage. - [FIX] fix a crash in setInterrupts() * netbsd.cpp: - [FIX] also ignore ENXIO when trying to open an unconfigured /dev/sysmon, to prevent premature self-termination * sensors.cpp / XML Schema: - [FIX] Timedelta sensors report milliseconds, not seconds. This small schema change is NOT backwards compatible. * main.cpp: - [FIX] Due to the different signal(3) behavior on Solaris from all the other OSes, switch to using sigaction(). This brings the behaviors in line, and also fixes SIGHUP catching on Solaris. Changes in 0.98.25: * openbsd.{cpp,h} / netbsd.{cpp,h} / darwin.{cpp,h}: - [FIX] merge per-sysctl methods into one, which actually enables UUID reporting on OpenBSD (it was forgotten) * sensor.{cpp,h} / openbsd.cpp / xmlsysinfo.cpp / XML Schema: - [ADD] If a sensor reports its value's age or the time of the value's last change, report it in a new element. Old, unused code in sensor.* was changed and made usable for this. * xmlsysinfo.cpp / XML Schema: - [MISC] Relax the schema a bit and no longer print the rather boring 0 when no sensor data is available. This also improves logic, since not being able to get sensor data doesn't necessarily mean that no sensors exist in the system. * main.cpp: - [FIX] Fix up compressed output support so that it can be actually used by clients. This introduces some "magic" that is explained in the FRONTENDS file. Changes in 0.98.24: * solaris.cpp: - [ADD] Most of the information and statistics are now implemented. Only information about default route(s) are still missing. - [FIX] A seemingly pointless API change in kstat(3kstat) broke XSI on Solaris 11. This is now being dealt with. - [FIX] The kernel version parser was broken on OpenSolaris, which is now fixed, hopefully. - [FIX] ignore NFS "disks" and USB controllers/root HUBs in disk I/O stats Changes in 0.98.23: ! This release makes the NetBSD port feature-complete, and elevates it to "fully supported" status. ! * ipf.cpp: - [FIX] both and (wrt states) are enabled, now that they are calculated correctly * netbsd.cpp - [ADD] implement sensors support on NetBSD via envsys(4) - [FIX] adjust updateDiskStats() method to cope with incompatible changes to the API in NetBSD -current/4.0 * netifstat.cpp / xmlsysinfo.cpp / XML Schema: - [ADD] introduce new elements to report errors and collisions per second, per interface * xmlsysinfo.cpp: - [FIX] Allow for packet filter stats to be displayed on systems that don't "have network interfaces", i.e. do not support network interfae stats, yet. (For Solaris.) Changes in 0.98.22: ! This release focuses on fixes and improvements of the XML Schema and output according to valuable feedback from several front-end authors. ! * cfg.cpp / netifstat.cpp: - [FIX] make these two build again on architectures with gcc 2.9*, whose libs don't offer std::string::clear(), yet. * Util / netifstat.cpp / system.cpp: - [ADD] rudimentary string sanitization implemented to ensure valid output (wrt unknown or unterminated entity references) - [ADD] string normalization method that strips excess whitespaces from strings - used on vendor/serial information from RAID disks * xmlsysinfo.cpp: - [FIX] Do not output a tag in sensors if it's an indicator or a drive sensor, as those two are special and don't report decimal values. The new, more strict schema made the previous behavior illegal. * configure.in: - [MISC] remove redundant checks, which (surprise, surprise) speeds up configuration of the software Changes in 0.98.21: ! NEW: Solaris 10 (and newer) port ! ! Solaris introduces a slightly different format, see the XML Schema's comments for details. | ! This release has incompatible changes in the XML Schema in the packet filter area. ! * various: - [MISC] further portability tweaks, XSI now builds with Sun's cc/CC compilers - [ADD] Support multiple packet filters per system and implement ipfilter support on FreeBSD, NetBSD and Solaris. Intrusive changes in the XML Schema's packet filter parts had to be done to ensure valid output fed with data from less sophisticated packet filters. - [MISC] various documentation, comment and header cleanups * util.cpp / linux.cpp: - [FIX] reliability fixes; ensure that indices are non-negative: e.g. line[line.size() - 1] * linux.cpp: - [FIX] ignore I/O errors when trying to gather stats from broken media, as this should not be fatal to XSI Changes in 0.98.20: ! This release has a trivial change and an addition to the XML Schema ! * various: - [ADD] carp(4) status report on OpenBSD and FreeBSD - [MISC] strip element name lengths in RAID section - [MISC] several portability improvements and related fixes * main.cpp: - [ADD] support systems whose libc does not define __progname - [FIX] reset the SIGALRM handler every time in the main loop to catch all timer alerts on systems like Solaris, IRIX, etc * netbsd.cpp: - [ADD] add unaesthetic method to gather interrupt stats using vmstat(8). Workable, but worth an entry in BUGS. - [ADD] add CPU speed reporting on some architectures * configure.in: - [MISC] generic cleanup Changes in 0.98.19: ! This release has incompatible changes to the XML Schema ! * various: - [MISC] XML output optimized wrt network interface, packet filter and disk I/O statistics to make it smaller by at least ~10% - [MISC] consistency; let the Server class determine the port number xsi is supposed to listen on Changes in 0.98.18: ! NEW: NetBSD 3.0 (and newer) port ! * freebsd.cpp: - [FIX] network media information - [MISC] minor code cleanup * openbsd.cpp: - [FIX] more reliable network media information - [MISC] code cleanups w/ slightly improved efficiency * packetfilter.cpp/xmlsysinfo.cpp: - [MISC] state counters will no longer be included in the output if they would show zeroes only Changes in 0.98.17: ! Dropped support for FreeBSD 5.x -- the new minimum requirement is 6.0 ! * freebsd.cpp: - [FIX] CPU state percentages output - [FIX] OS information - [ADD] disk I/O support - [ADD] interrupts support - [ADD] network interface information and stats - [ADD] pf(4) support - [ADD] ACPI (temperature) sensors support * linux.cpp: - [MISC] code cleanups * main.cpp: - [MISC] small fixes: proper warnings on write(2) errors and a more reasonable place to print the first startup message in debug mode * openbsd.cpp: - [FIX] consider the possibility that all disks are removed from the system Post-0.98.16 release: * begin maintenance of CHANGELOG