osmo-iuh (0.5.0) unstable; urgency=medium

  [ Neels Hofmeyr ]
  * ranap_msg_factory.h: fix enum def within function signature
  * osmo-hnbgw: fix cmdline: do not force-disable colored logging
  * osmo-hnbgw: set a proper talloc ctx for logging
  * osmo-hnbgw: logging tweaks
  * osmo-hnbgw: reply with RESET ACK when receiving a RESET

  [ Oliver Smith ]
  * tests: use -no-install libtool flag to avoid ./lt-* scripts
  * contrib/jenkins.sh: run "make maintainer-clean"
  * osmo-hnbgw.cfg: set local-ip to 0.0.0.0

  [ Harald Welte ]
  * iu_client: Implement transmission of ResetAcknowledge
  * ranap_msg_factory: Fix criticality of PDUs

  [ Thorsten Alteholz ]
  * spelling stuff found by lintian

  [ Daniel Willmann ]
  * Add VTY reference manual
  * jenkins: Enable manual publishing and building

  [ Pau Espin Pedrol ]
  * Remove undefined param passed to {logging,osmo_stats}_vty_add_cmds

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Wed, 07 Aug 2019 21:23:57 +0200

osmo-iuh (0.4.0) unstable; urgency=medium

  [ Bernhard M. Wiedemann ]
  * asn1tostruct: allow to override build date

  [ Alexander Couzens ]
  * hnbgw: remove close_cb() to fix a crash when releasing a hnbgw

  [ Harald Welte ]
  * debian/rules: Don't overwrite .tarball-version
  * hnbgw_tx_hnb_register_rej(): Missing return statement

  [ Neels Hofmeyr ]
  * fix decoding of incoming X.213 NSAP addr
  * hnbgw: vty: add SCCP related vty commands
  * fix transport layer addr again, for nano3g

  [ Pau Espin Pedrol ]
  * debian: package osmo-hnbgw.service
  * Install systemd services with autotools
  * Install sample cfg file to /etc/osmocom

  [ Stefan Sperling ]
  * add a VTY command which shows a specific HNB

  [ Oliver Smith ]
  * Fix DISTCHECK_CONFIGURE_FLAGS override
  * contrib: fix makedistcheck with disabled systemd

 -- Harald Welte <laforge@gnumonks.org>  Sun, 20 Jan 2019 21:46:05 +0100

osmo-iuh (0.3.0) unstable; urgency=medium

  [ Neels Hofmeyr ]
  * jenkins: use osmo-clean-workspace.sh before and after build
  * vty: skip installing cmds now always installed by default
  * src/Makefile.am: drop unused COMMON_LDADD
  * add --enable-sanitize config option
  * osmo-hnbgw: drop erratic log line on remote STP address
  * api doc: clarify byte order in ranap_new_msg_rab_assign_*
  * tests: sanitize: fix mem leaks, clean after tests
  * ranap_msg_factory: sanitize: memcpy instead of unaligned int copy
  * test_common: fix compiler warning: include ranap_common.h
  * osmo-hnbgw: auto-config local and remote PCs if omitted
  * cosmetic: osmo-hnbgw: log remote SCCP addresses on startup
  * osmo-hnbgw: don't configure specific local IP address for STP connection
  * iu client: store multiple LAC,RAC per RNC = fix paging for multiple RNC
  * hnbgw: use proper VTY port number defined in libosmocore (4261)
  * fix 3 compiler warnings in ranap_common.c
  * hnbgw: use proper talloc ctx for vty telnet init
  * hnbgw: hnb info: record MCC, MNC, show on 'show hnb'
  * hnbap,rua,ranap decode: fix segfault on decode error
  * vty: tweak / improve HNB and cnlink introspection
  * osmo-hnbgw: vty: revamp output of context maps on 'show hnb'
  * compiler warning: asn1tostruct.py: return 0 at end of *_free_*()
  * segfault: context_map gc: use llist_for_each_entry_safe()
  * rua: discard context maps on id-Disconnect
  * rua_to_scu(): don't create a context map for UNITDATA
  * cosmetic: context_map_tmr_cb(): fix comment
  * osmo-hnbgw config: add 'rnc-id' config item
  * osmo-hnbgw: startup: log the RNC-Id that is going to be used
  * comments: hnbgw_rua.c: remove obsolete fixmes for asn1 free
  * vty typo: 'show hnb': SCTP stream, not SCCP stream
  * hnbgw_rua.c: log: fix integer format for cN_DomainIndicator
  * hnbgw_rua: fix dereference of unset pointer
  * hnbgw_cn: rx ranap: set rc in all cases
  * hnbgw_hnbap: fix missing return in rx [un]successful outcome
  * cosmetic: hnbgw: hnbap: log rx of unsuccessful outcome
  * hnbap: log errors on decoding/encoding HNB-REGISTER msgs
  * hnb-test: log accurate three-digit MNC with leading zeros
  * configure: add --enable-werror
  * cosmetic: use osmo_plmn_id instead of mcc,mnc

  [ Harald Welte ]
  * osmo-hnbgw: Avoid useless linking to libosmogsm and libsctp
  * Link libosmo-ranap against libosmovty
  * Add "-Wall" to the compile rules of the non-asn1c-generated source code
  * hnbgw.c: Remove dead code creating libsctp linker dependency
  * sccp_sap_up(): Fix never-hit "default" case in switch
  * Fix various compiler warnings in hnb-gw code
  * hnbgw_vty.c: cosmetic: Fix non-tab-indented code
  * hnbgw_vty.c: Fix "-Werror=format-security" failure in vty_out()

  [ Philipp Maier ]
  * iu: iu_helpers: add functions to decode ip/port from rab-ass
  * ranap_msg_factory: check IE encoder return codes
  * ranap_msg_factory: remove unusued variable

  [ Max ]
  * Use proper package version
  * Add control interface
  * Expand ctrl interface
  * Enable sanitize for CI tests

  [ Pau Espin Pedrol ]
  * iu_client.c: Remove unusued variable
  * configure.ac: Enable -Wall flag
  * contrib: jenkins.sh: Disable doxygen in libosmocore build
  * debian/changelog: set prev releases to unstable

  [ Stefan Sperling ]
  * ensure unique CellIDs in HNB-GW

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Thu, 03 May 2018 18:29:13 +0200

osmo-iuh (0.2.0) unstable; urgency=low

  * Upstream 0.2.0 release

 -- Harald Welte <laforge@gnumonks.org>  Fri, 27 Oct 2017 22:19:00 +0000

osmo-iuh (0.1.0) unstable; urgency=low

  * Initial release.

 -- Alexander Couzens <lynxis@fe80.eu>  Tue, 08 Aug 2017 04:13:19 +0000
