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
