libosmo-abis (0.5.0) unstable; urgency=medium

  [ Max ]
  * Use value string check from osmo-ci
  * cosmetic: update ipaccess_bts_handle_ccm()
  * IPA: log remote address

  [ Neels Hofmeyr ]
  * cosmetic: ipa.c: use msgb_dequeue(), drop local var
  * jenkins: use osmo-clean-workspace.sh before and after build
  * vty: skip installing cmds now always installed by default
  * add --enable-sanitize config option
  * configure: add --enable-werror
  * jenkins.sh: use --enable-werror configure flag, not CFLAGS

  [ Alexander Couzens ]
  * debian/rules: show testsuite.log when tests are failing
  * unixsocket: fix a potential string overflow

  [ Harald Welte ]
  * debian/copyright: fix upstream-name
  * Add SPDX-License-Identifier to all source files
  * Add a new osmo_rtp_set_source_desc() function to set the RTCP SDES items
  * debian/control: Fix Vcs-Browser

  [ Pau Espin Pedrol ]
  * contrib: jenkins.sh: Disable doxygen in libosmocore build
  * e1_input.h: Remove dead declaration of unexistent API ipaccess_setup
  * configure.ac: Fix condition check for RTP_SIGNAL_PTR_CAST define
  * use osmo_init_logging2
  * git-version-gen: Check first for new tag format

  [ Stefan Sperling ]
  * preserve 'when' flags of new osmo_fd in ipaccess_rcvmsg()

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Thu, 03 May 2018 16:12:04 +0200

libosmo-abis (0.4.0) unstable; urgency=medium

  * Move forward towards a new release.
  * libosmo-abis   API change      major: add parameter to struct
    input_signal_data
  * libosmo-trau   API change      major: add parameters to rx_cb()
    callack in osmo_ortp.h

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Fri, 25 Aug 2017 16:09:46 +0200

libosmo-abis (0.3.2) unstable; urgency=medium

  * Bump so version to re-link libosmovty

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Tue, 03 Nov 2015 09:42:01 +0100

libosmo-abis (0.3.1) unstable; urgency=medium

  * New upstream release of libosmo-abis

 -- Holger Hans Peter Freyther <holger@freyther.de>  Sun, 18 Jan 2015 19:26:40 +0100

libosmo-abis (0.3.0) unstable; urgency=medium

  * New upstream release of libosmo-abis

 -- Holger Hans Peter Freyther <holger@freyther.de>  Mon, 08 Sep 2014 07:29:39 +0200

libosmo-abis (0.2.0) unstable; urgency=medium

  * New upstream release of libosmo-abis

 -- Holger Hans Peter Freyther <holger@freyther.de>  Mon, 08 Sep 2014 07:29:19 +0200

libosmo-abis (0.1.6) unstable; urgency=medium

  * New upstream release of libosmo-abis

 -- Holger Hans Peter Freyther <holger@freyther.de>  Mon, 20 Jan 2014 10:33:36 +0100

libosmo-abis (0.1.5+git1) unstable; urgency=low

  * Rebuild 0.1.5 with the right libosmocore depedency

 -- Holger Hans Peter Freyther <holger@freyther.de>  Thu, 12 Dec 2013 11:47:01 +0100

libosmo-abis (0.1.4) unstable; urgency=low

  * New upstream release

 -- Holger Hans Peter Freyther <holger@freyther.de>  Tue, 06 Nov 2012 13:33:45 +0100

libosmo-abis (0.1.3+git3-1) precise; urgency=low

  * Fix version issue.

 -- Eric Butler <eric@codebutler.com>  Tue, 14 Aug 2012 20:50:50 -0700

libosmo-abis (0.1.3+git3) precise; urgency=low

  Created new Ubuntu package.

 -- Eric Butler <eric@codebutler.com>  Tue, 14 Aug 2012 13:00:18 -0700
