osmo-sysmon (0.3.2) unstable; urgency=medium

  [ Oliver Smith ]
  * treewide: remove FSF address

  [ Pau Espin Pedrol ]
  * Drop unneeded ax_check_compile_flag.m4

  [ Harald Welte ]
  * update git URLs (git -> https; gitea)

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 28 Jun 2022 18:27:29 +0200

osmo-sysmon (0.3.1) unstable; urgency=medium

  [ Oliver Smith ]
  * configure.ac: set -std=gnu11
  * configure: don't turn some warnings into errors

  [ Harald Welte ]
  * add README.md on what this repository is about

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 16 Nov 2021 14:46:05 +0100

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
