osmo-mgw (1.4.0) unstable; urgency=medium

  [ Philipp Maier ]
  * network: independently initalize state->out_stream
  * stats: use libosmocore rate counter for in/out_stream.err_ts_counter
  * mgcp_sdp: correct apidoc of mgcp_parse_sdp_data
  * vty: clean up rtp port-range command
  * sdp: remove unused alt_codec field from struct mgcp_rtp_end
  * sdp: remove circular inclusion
  * protocol: Try whole port range on port allocation
  * client: do not start connections in loopback mode
  * mgcp_network: do not log destination invalid ip/port as error
  * cosmetic: fix log output
  * conn: call talloc_free before setting the pointer to NULL
  * protocol: do not change LCO, when no LCO are present
  * protocol: reject illegal lco options
  * cosmetic: fix typo
  * mgw: clean up codec negotiation (sdp)
  * client: add features to generate and parse codec information
  * mgcp_internal: remove unused struct member
  * stats: replace packet statistic counters with libosmocore rate counters
  * stat+vty: fix printing of rate counter values
  * protocol: prevent unnecessary null pointer deref

  [ Pau Espin Pedrol ]
  * legacy-mgcp: Add jitter buffer on the uplink receiver
  * legacy-mgcp: switch to new osmux output APIs
  * mgcp: mgcp_osmux: use conn_bts when forwarding pkts from bsc_nat
  * mgcp: switch to new osmux output APIs
  * debian: Package installed example doc files
  * gitignore: Add m4 scripts from m4 subdir

  [ Neels Hofmeyr ]
  * api doc: fix parameter name for mgcp_conn_create()
  * mgcp-client: add mgcp_conn_get_ci()
  * mgcp_client_fsm: improve error logging
  * cosmetic: fix doxygen comment markers
  * cosmetic: mgcp_network.c: merge one LOGPC to its preceding LOGP
  * IuUP hack: make RTP patching less general

  [ Harald Welte ]
  * cosmetic: fix typo in log message: 'abrupt' instead of 'aprupt'

  [ Daniel Willmann ]
  * git-version-gen: Don't check for .git directory

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Fri, 27 Jul 2018 19:05:22 +0200

osmo-mgw (1.3.0) unstable; urgency=medium

  [ Pau Espin Pedrol ]
  * contrib: Add osmo-mgw systemd service
  * legacy: mgcp_protocol: Don't print osmux stats if it is off
  * mgcp_stat: Don't print osmux stats if it is off

  [ Neels Hofmeyr ]
  * fix segfault: DLCX for unknown endpoint: dont try to log NULL endpoint
  * MGCP endpoints: parse as decimal, not hex
  * add --enable-sanitize config option
  * legacy_mgcp: mgcp_test: sanitize: free msgb_ctx
  * mgcp_test: test_packet_error_detection: sanitize: free all conns
  * mgcp_test: test_no_cycle: sanitize: free endp
  * mgcp_test: sanitize: free msgb_ctx
  * mgcp_client: don't configure "bts base"
  * Revert "mgcp_client: don't configure "bts base"" until osmo-msc is ready
  * mgcp_client: add transaction cleanup
  * mgcp_client_test makefile: add update_exp target
  * cosmetic: mgcp_network: typo in log
  * osmo-mgw: Add talloc context introspection via VTY
  * mgcp_client: show failure by MGCP SDP section parsing test
  * mgcp_client: cosmetic: clean up SDP params parsing
  * mgcp_client: detect SDP section-start parsing errors
  * compiler warning: ignore deprecated in mgcp_client_test.c
  * configure: add --enable-werror
  * jenkins.sh: add --enable-werror to configure flags
  * cosmetic: mgcp, legacy_mgcp: drop unused vty.h definitions
  * use osmo_init_logging2() with proper talloc ctx

  [ Philipp Maier ]
  * osmux: fix nullpointer dereference
  * cosmetic: guard dead osmux vty code with ifdef
  * cosmetic: remove prefix "net" from rtp related vty commands
  * doc: update sample config file
  * cosmetic: use correct VTY port number constant
  * vty: simplify endpoint allocation
  * vty: do not change number_endpoints at runtime
  * MGCP: Connection Identifiers are hex strings
  * libosmo-mgcp: Connection Identifiers are allocated by MGW, not CA
  * client: use osmo_strlcpy instead of strncpy
  * cosmetic: fix sourcecode formatting
  * cosmetic: clearly mark endpoint numbers as hex
  * client: use string as connection identifier
  * conn: remove assertions
  * mgcp_test: fix wrong strcmp() parameters
  * mgcp_test: fix nullpointer dereference
  * mgcp_test: add returncode check
  * mgcp_test: fix possible double free
  * mcgp_client: mgcp_msg_gen(): add checks to verify params
  * network: use originating RTP packet address for loopback
  * client: mgcp_response_parse_params: check rtp port
  * mgcp: allow endpoints beginning from zero
  * client/common: move constant MGCP_ENDPOINT_MAXLEN
  * mgcp: make domain name configurable
  * cosmetic: protocol: remove unnecessary nul termination
  * client: do not insist on \n\n when parsing MGCP messages
  * main: display mgcp ip/port
  * client: make callid in MDCX mandatory
  * client: add missing mandatory SDP fields
  * mgcp: permit wildcarded endpoint assignment (CRCX)
  * mgcp: add prefix to virtual trunk
  * client: eliminate destructive parameter parsing
  * client: eliminate destructive head parsing
  * cosmetic: client: add doxygen comments
  * protocol: fix problem with line break and OSMUX
  * protocol: fix missing carriage return
  * client: fix sdp parameter ordering
  * protocol: check the packetization in local cx options
  * cosmetic: remove spaces from pointer symbol
  * client: Do not accept endpoint ids with wildcards in responses
  * client: do not accept endpoint ids without @ character in responses
  * client: prohibit endpoint ids without @ character
  * protocol: on wildcarded CRCX return endpoint number as hex
  * msg: fix response code on exhausted endp resources
  * cosmetic: move mgcp_release_endp() to mgcp_ep.c
  * client: use heap to store mgcp_response
  * ep: move endpoint struct and define to mgcp_ep.h
  * cosmetic: rename mgcp_release_endp to mgcp_endp_release
  * cosmetic: rename mgcp_ep.c/h to mgcp_endp.c/h
  * protocol: reject DLCX/CRCX/MDCX on unsupported parameters
  * protocol: exit cleanly when local cx options check fails
  * cosmetic: Add missing \n on log line
  * protocol: check requested connection mode
  * protocol: fix tagging of wildcarded requests
  * protocol: prohibit wildcarded requests for MDCX and DLCX
  * mgcp: fix use-after-free and add callback for endpoint cleanup
  * client: add an optional FSM interface
  * mgcp_client_fsm: Add FSM event names
  * cosmetic: mgcp_client_fsm: rename enums
  * cosmetic: rename function .._conn_reset() to .._conn_init()
  * mgcp_conn: do not touch u.rtp in mgcp_conn_alloc()
  * cosmetic: rename .._codec_reset() to .._codec_init()
  * mgcp_conn: add function mgcp_rtp_conn_cleanup()
  * stats: use libosmocore rate counter for in/out_stream.err_ts_counter

  [ Alexander Couzens ]
  * debian/control: correct library dependency of osmo-mgw against libosmo-mgcp1
  * debian: include systemd service osmo-mgw.service
  * Revert "stats: use libosmocore rate counter for in/out_stream.err_ts_counter"

  [ Harald Welte ]
  * cosmetic: fix whitespaces; we use tabs for indentation
  * Fix possible buffer overflow in mgcp_conn_dump()
  * osmo-mgw: Update copyright statement
  * osmo-mgw: Config file is osmo-mgw.cfg, and not mgcp.cfg
  * osmo-mgw: Fix copyright notice
  * strct mgcp_rtp_state: Group + document struct members related to patching
  * mgcp_rtp_state: grup 'stats' members into sub-structure
  * mgcp_rtp_end: Group statistics members into 'stats' sub-struct
  * libosmo-mgcp: Cosmetic spelling fixes in comments
  * mgcp_msg: We must parse endpoint numbers as hex, not decimal!
  * mgcp_internal.h: document more struct members with comments
  * centralize handling of common errors like "endpoint not found"
  * Return proper MGCP Error codes, as per spec
  * osmo-mgw: Use libosmocore socket abstraction
  * osmo-bsc_mgcp: Add LIBOSMONETIF_{CFLAGS,LIBS}
  * libosmo-mgcp-client is GPLv2+, not AGPLv3+
  * Turn libosmo-mgcp into local, non-installed library

  [ Stefan Sperling ]
  * enable osmo_fsm vty commands in libosmo-mgcp-client vty

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Thu, 03 May 2018 17:40:35 +0200

osmo-mgw (1.2.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
  * mgcp-client vty: use name 'mgw' instead of 'mgcpgw'
  * mgcp client: vty: tweak doc strings

  [ Philipp Maier ]
  * sdp: refactoring sdp parser/generator
  * cosmetic: rename bts_codec to codec_str
  * cosmetic: fix coding style for mgcp_parse_sdp_data()
  * cosmetic: fix commenting style
  * cosmetic: correct whitespaces
  * client: fix stderror logging in unit-test
  * client: add unified function to generate MGCP messages
  * client: add ip address parsing to the client
  * protocol: allow wildcarded DLCX
  * mgcp: remove port/timeslot calculator functions from  mgcp.h
  * network: add separate log category
  * cosmetic: make dummy packet handling more explicit
  * network: autdetect rtp bind ip-address
  * network: fix rtp packet length
  * network: remove unused return code

  [ Pau Espin Pedrol ]
  * mgcp_client_vty.c: Fix VTY compatibility with 'mgcpgw bts-base'

 -- Harald Welte <laforge@gnumonks.org>  Fri, 10 Nov 2017 11:10:23 +0900

osmo-mgw (1.1.0) unstable; urgency=medium

  * New upstream release

 -- Harald Welte <lafore@gnumonks.org>  Sat, 28 Oct 2017 12:48:41 +0200

osmo-mgw (1.0.2) unstable; urgency=low

  * First release after major rename.

 -- Max Suraev <msuraev@sysmocom.de>  Thu, 14 Sep 2017 18:41:05 +0200


osmo-mgw (0.1.0) unstable; urgency=low

  * Initial release.

 -- Alexander Couzens <lynxis@fe80.eu>  Tue, 08 Aug 2017 01:12:53 +0000
