osmo-pcap (0.2.1) unstable; urgency=medium

  [ Pau Espin Pedrol ]
  * Use new stat item/ctr getter APIs
  * Explicitly depend on required libosmogb

  [ Oliver Smith ]
  * README.md: fix typo
  * Change default ports of client, server

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 16 Nov 2021 13:40:07 +0100

osmo-pcap (0.2.0) unstable; urgency=medium

  [ Harald Welte ]
  * vty: Add space after prompt, as customary
  * add "--version" to osmo-pcap-client and -server
  * update copyright statement; Holger worked on it until 2017
  * Add user manual for osmo-pcap
  * use osmo_wqueue_enqueue_quiet() as we log anyway
  * client: Ensure the "file" header is sent on connect
  * use telnet_init_dynif() to allow VTY bind to non-loopack address
  * vty: call telnet_init_dynif() after config file is read

  [ Joachim Steiger ]
  * manuals: generate VTY reference for osmo-pcap-{client,server}

  [ Vadim Yanitskiy ]
  * vty: register commands for talloc context introspection
  * vty_{client,server}_init(): remove unused argument
  * contrib/jenkins.sh: fix: pass '--enable-manuals' to configure

 -- Harald Welte <laforge@osmocom.org>  Sat, 24 Apr 2021 23:03:34 +0200

osmo-pcap (0.1.3) unstable; urgency=medium

  [ Oliver Smith ]
  * contrib: import RPM spec
  * contrib: integrate RPM spec
  * Makefile.am: EXTRA_DIST: debian, contrib/*.spec.in
  * configure.ac: set -std=gnu11

  [ Harald Welte ]
  * Use OSMO_FD_* instead of deprecated BSC_FD_*
  * Use osmo_fd_setup() whenever applicable
  * Use osmo_fd_*_{disable,enable}
  * reformat debian/control for osmo-release.sh compatibility

  [ Pau Espin Pedrol ]
  * main: generate coredump and exit upon SIGABRT received

 -- Pau Espin Pedrol <pespin@espeweb.net>  Tue, 23 Feb 2021 13:19:37 +0100

osmo-pcap (0.1.2) unstable; urgency=medium

  [ Oliver Smith ]
  * Cosmetic: README.md: fix typo
  * osmoappdesc.py: fix paths to configs
  * Cosmetic: README.md: document how to run tests
  * osmoappdesc.py: switch to python 3

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Thu, 02 Jan 2020 20:19:28 +0100

osmo-pcap (0.1.1) unstable; urgency=medium

  * Remove undefined param passed to {logging,osmo_stats}_vty_add_cmds
  * Require libosmocore 0.11.0

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Wed, 07 Aug 2019 13:12:47 +0200

osmo-pcap (0.1.0) unstable; urgency=medium

  [ Harald Welte ]
  * sock_src_init(): Don't freeaddrinfo() undefined src_result
  * Use TCP port numbers for VTY that don't overlap with other Osmocom Software
  * Rename osmo_pcap_{client_server} executables to osmo-pcap-{client,server}
  * Use libosmocore osmo_sock_init2() instead of local implementation
  * client: Move to osmo_sock_init2_ofd()
  * Add support for generating IPIP to osmo-pcap-client
  * debian/control: Fix URLs for homepage, git, gitweb
  * change binary builds URL to network:osmocom as that's more maintained
  * Fix compiler warning about deprecated _BSD_SOURCE

  [ Max ]
  * Add gitreview config
  * Use release helper from libosmocore

  [ Pau Espin Pedrol ]
  * cosmetic: client: rename forward_packet function
  * vty: skip installing cmds now always installed by default
  * client: Properly name main talloc ctx
  * server: Properly name main talloc ctx
  * Drop osmo_init_logging and use osmo_init_logging2
  * osmo_client_send_data: Fix wrong log format
  * configure.ac: Add --enable-werror flag
  * configure.ac: Add --enable-sanitize flag
  * jenkins.sh: enable werror and sanitize configure flags
  * Replace '.' in counter names with ':'
  * Use enum for PKT_LINK_*
  * client: Set snaplen to MAXIMUM_SNAPLEN
  * client: Add pcap snaplen VTY cmd
  * client_send_link: snaplen not needed during allocation
  * server: Improve verification of messages from client
  * server: Add pcap snaplen VTY cmd
  * contrib/jenkins.sh: Update to current osmocom infra
  * debian: Clean up to look like other osmocom projects
  * Install systemd services with autotools
  * Install cfg files with autotools
  * gitignore: Add compile
  * debian: Install osmo_pcap_clean_old in osmo-pcap-server pkg
  * tests/Makefile.am: Fix "./configure && make clean && make"
  * debian/changelog: Mark 0.0.11 as released

  [ Oliver Smith ]
  * Fix DISTCHECK_CONFIGURE_FLAGS override
  * contrib: fix makedistcheck with disabled systemd
  * gitignore: fix application names
  * contrib/jenkins.sh: run "make maintainer-clean"

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 16 Jul 2019 19:01:15 +0200

osmo-pcap (0.0.11) unstable; urgency=medium

  * Add "source ip A.B.C.D" option to use specific address.
  * Add osmo-pcap-client-dbg/osmo-pcap-server-dbg package

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Tue, 17 Jan 2017 09:12:52 +0100

osmo-pcap (0.0.10) unstable; urgency=medium

  * New release with new features
  * Allow unauthenticated TLS between client and server
  * Allow a client to connect to multiple servers at the
    same time.
  * Allow the server to forward data through ZeroMQ

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Wed, 09 Nov 2016 02:09:52 +0100

osmo-pcap (0.0.9) unstable; urgency=medium

  * Fix pcap packet format for 64bit clients. 

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Thu, 03 Dec 2015 22:17:19 +0100

osmo-pcap (0.0.8) unstable; urgency=medium

  * Attempt to work with Jumbo frames up to 9000 bytes
  * Fix wording in the server error message
  * Install cron.daily job that can be changed by the user (e.g. max age of the files) 

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Thu, 03 Dec 2015 20:41:24 +0100

osmo-pcap (0.0.7) unstable; urgency=medium

  * gprs: Do not collect BVC FLOW CONTROL / ACK messages

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Thu, 19 Nov 2015 11:13:55 +0100

osmo-pcap (0.0.6) unstable; urgency=medium

  [ Holger Hans Peter Freyther ]
  * debian: Add changelog entry for 0.0.4
  * debian: Add a osmo-pcap-client init script

  [ Sylvain Munaut ]
  * build: Replace deprecated INCLUDES with AM_CPPFLAGS

  [ Holger Hans Peter Freyther ]
  * gprs: Add a custom GPRS filter
  * gprs: Remove left over for counting llc frames

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Thu, 10 Sep 2015 17:11:32 +0200

osmo-pcap (0.0.5) unstable; urgency=low

  * Add init script for the osmo-pcap tool 

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Thu, 10 Sep 2015 17:10:42 +0200

osmo-pcap (0.0.4) unstable; urgency=low

  * New upstream version.

 -- Holger Hans Peter Freyther <holger@freyther.de>  Wed, 07 Nov 2012 10:11:21 +0100

osmo-pcap (0.0.3) unstable; urgency=low

  * New upstream version.

 -- Holger Hans Peter Freyther <holger@freyther.de>  Tue, 06 Nov 2012 23:41:36 +0100

osmo-pcap (0.0.1) unstable; urgency=low

  * Initial Release.

 -- Holger Hans Peter Freyther <zecke@selfish.org>  Wed, 01 Jun 2011 14:51:32 +0200
