osmo-sysmon (0.3.0) unstable; urgency=medium

  [ Daniel Willmann ]
  * simple_ctrl: Don't cause an error if GET response is empty
  * Cleaner output if sections are empty
  * Add oneshot mode that exits after one iteration

  [ Harald Welte ]
  * exit(2) on unsupported positional arguments on command line
  * configure.ac: Make configure.ac and debian/control agree on versions

 -- Harald Welte <laforge@osmocom.org>  Wed, 06 Jan 2021 16:56:14 +0100

osmo-sysmon (0.2.0) unstable; urgency=medium

  [ Harald Welte ]
  * Initial empty repository
  * initial checkin
  * simple_ctrl: Add timeout to blocking I/O
  * simple_ctrl.c: Support an indefinite timeout (using tout_msec=0)
  * simple_ctrl.c: API for setting timeout + raw CTRL msgb read
  * osmo-ctrl-client: Implement "monitor" mode
  * simple-ctrl-client: Add basic help/usage information
  * simple_ctrl: Abstract out timeval_from_msec() function
  * simple_ctrl: Non-blocking connect() with timeout
  * initial implementation of 'osysmon' main program + CTRL client
  * add osysmon_sysinfo for uptime/ram/load
  * osysmon_ctrl: Use variable name, not ctrl-client name as val->name
  * osysmon_main: Show hierarchical/tree structure during printing
  * value_node: add combined find_or_add() and avoid duplicate names
  * value_node: Add 'idx' member to handle lookup by ifindex.
  * Add network link + address monitiring via osysmon_rtnl.c
  * add osysmon_file.c for reading/monitoring files (like sysfs)
  * migrate to autoconf
  * add .gitignore file
  * rename to osmo-sysmon
  * simple_ctrl: Check for NULL return of simple_ctrl_xceive
  * add contrib/jenkins.sh for build verification

  [ Daniel Willmann ]
  * Remove unused function
  * Fix compilation issue on my machine, remove unused include
  * Remove unused last_value handling code
  * Add zero termination char to received ctrl cmd message
  * Disconnect properly on errors so we can reconnect
  * git-version-gen: Don't check for .git directory

  [ Martin Hauke ]
  * Makefile.am: Fix typo

  [ Max ]
  * Add git-review config
  * Update gitignore
  * Report config file name on error
  * Update default config
  * Expand default config
  * Add OpenVPN status helper example from corresponding ticket
  * Move shared libs into common LDADD
  * Drop unused parameter
  * ctrl: separate config structure
  * Update Makefile.am
  * Add ping probe support
  * jenkins.sh: remove obsolete comments
  * Install signal handlers before processing config
  * ctrl: log host/port on errors
  * Introduce generic host config and related helpers
  * Add OpenVPN probe
  * OpenVPN: track interface disconnect
  * Update config example

  [ Stefan Sperling ]
  * fix file descriptor leak in osysmon_file_read

  [ Pau Espin Pedrol ]
  * Add m4 missing files to fix build
  * Move source code to src subdir
  * Add cmdline option parsing support
  * Integrate sleeping/printing loop into osmo main loop
  * openvpn: Improve logging and status information
  * openvpn: Set reconnect timeout to a much lower value
  * openvpn: String returned from openvpn is not null-terminated
  * openvpn: log status description
  * openvpn: Fix garbage printed after remote port
  * openvpn: Remove useless conditional block in parse_state
  * openvn: Fix missing break in last commit
  * Add vty option to print output of shell cmd on every poll step
  * Makefile.am: Add missing bits to have make release working
  * Add debian packaging content
  * Bump version: 0.0.1.66-d4c3-dirty → 0.1.0
  * debian: Add missing libmnl-dev dependency
  * Depend on liboping 1.7.0 instead of 1.9.0

  [ Oliver Smith ]
  * osmo-sysmon -h: s/OsmoHLR/osmo-sysmon/
  * contrib/jenkins.sh: run "make maintainer-clean"

 -- Harald Welte <laforge@gnumonks.org>  Sun, 14 Jul 2019 08:04:51 +0800

osmo-sysmon (0.1.0) unstable; urgency=medium

  [ Harald Welte ]
  * initial checkin
  * simple_ctrl: Add timeout to blocking I/O
  * simple_ctrl.c: Support an indefinite timeout (using tout_msec=0)
  * simple_ctrl.c: API for setting timeout + raw CTRL msgb read
  * osmo-ctrl-client: Implement "monitor" mode
  * simple-ctrl-client: Add basic help/usage information
  * simple_ctrl: Abstract out timeval_from_msec() function
  * simple_ctrl: Non-blocking connect() with timeout
  * initial implementation of 'osysmon' main program + CTRL client
  * add osysmon_sysinfo for uptime/ram/load
  * osysmon_ctrl: Use variable name, not ctrl-client name as val->name
  * osysmon_main: Show hierarchical/tree structure during printing
  * value_node: add combined find_or_add() and avoid duplicate names
  * value_node: Add 'idx' member to handle lookup by ifindex.
  * Add network link + address monitiring via osysmon_rtnl.c
  * add osysmon_file.c for reading/monitoring files (like sysfs)
  * migrate to autoconf
  * add .gitignore file
  * rename to osmo-sysmon
  * simple_ctrl: Check for NULL return of simple_ctrl_xceive
  * add contrib/jenkins.sh for build verification

  [ Daniel Willmann ]
  * Remove unused function
  * Fix compilation issue on my machine, remove unused include
  * Remove unused last_value handling code
  * Add zero termination char to received ctrl cmd message
  * Disconnect properly on errors so we can reconnect
  * git-version-gen: Don't check for .git directory

  [ Martin Hauke ]
  * Makefile.am: Fix typo

  [ Max ]
  * Add git-review config
  * Update gitignore
  * Report config file name on error
  * Update default config
  * Expand default config
  * Add OpenVPN status helper example from corresponding ticket
  * Move shared libs into common LDADD
  * Drop unused parameter
  * ctrl: separate config structure
  * Update Makefile.am
  * Add ping probe support
  * jenkins.sh: remove obsolete comments
  * Install signal handlers before processing config
  * ctrl: log host/port on errors
  * Introduce generic host config and related helpers
  * Add OpenVPN probe
  * OpenVPN: track interface disconnect
  * Update config example

  [ Stefan Sperling ]
  * fix file descriptor leak in osysmon_file_read

  [ Pau Espin Pedrol ]
  * Add m4 missing files to fix build
  * Move source code to src subdir
  * Add cmdline option parsing support
  * Integrate sleeping/printing loop into osmo main loop
  * openvpn: Improve logging and status information
  * openvpn: Set reconnect timeout to a much lower value
  * openvpn: String returned from openvpn is not null-terminated
  * openvpn: log status description
  * openvpn: Fix garbage printed after remote port
  * openvpn: Remove useless conditional block in parse_state
  * openvn: Fix missing break in last commit
  * Add vty option to print output of shell cmd on every poll step
  * Makefile.am: Add missing bits to have make release working
  * Add debian packaging content

  [ Oliver Smith ]
  * osmo-sysmon -h: s/OsmoHLR/osmo-sysmon/

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Wed, 20 Mar 2019 13:14:30 +0100

osmo-sysmon (0.0.1) unstable; urgency=medium

  * Initial release.

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 19 Mar 2019 18:32:14 +0100
