osmo-gbproxy (1:0.1.1) unstable; urgency=medium

  [ Daniel Willmann ]
  * gbproxy_main: Add ctrl vty commands

 -- Harald Welte <laforge@osmocom.org>  Mon, 12 Apr 2021 12:26:01 +0200

osmo-gbproxy (1:0.1.0) unstable; urgency=medium

  [ Philipp Maier ]
  * gb_proxy_ctrl: use mcc-mnc-lac-rac notation instead mcc,mnc,lac,rac
  * gb_proxy: simplify raid data storage
  * gb_proxy_peer: Remove unused function gbproxy_cell_by_bvci_or_new
  * gb_proxy_peer: Require ra_id and cid in gbproxy_cell_alloc
  * gb_proxy: extend TLV parser
  * gb_proxy: add support for relaying BSSGP RIM messages
  * gb_proxy: fix wrong usage of bssgp_rim_ri_name()

  [ Daniel Willmann ]
  * gb_proxy_peer: Add Function to get gbproxy cell by cell id
  * gbproxy_vty: Fix NRI VTY help MSC->SGSN
  * gbproxy_vty: Fix NRI overlap behaviour to match osmo-bsc
  * Various comment/whitespace changes
  * Remove trailing whitespace
  * gbproxy: Use bssgp2_nsi_tx_ptp in gbprox_relay2nse
  * Remove unused log categories
  * Move vty node into gbproxy_vty.c
  * Add SDU length for an NSE (== BSSGP PDU size)
  * gbproxy: Use bssgp2_enc_status when sending STATUS

  [ Pau Espin Pedrol ]
  * Drop c-ares references
  * debian/copyright: Drop osmo-sgsn.git leftover files from list
  * gitignore: Ignore autofoo files *~

  [ Oliver Smith ]
  * d/changelog: set epoch=1

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Wed, 24 Feb 2021 16:54:13 +0100

osmo-gbproxy (1:0.0.1) unstable; urgency=medium

  [ Harald Welte ]
  * Further clean-up in osmo-sgsn -> osmo-gbproxy migration
  * Update README to cover osmo-gbproxy and not osmo-sgsn

  [ Oliver Smith ]
  * contrib/jenkins.sh: adjust to osmo-gbproxy split
  * debian: fix installing pdfs for -doc package
  * contrib/osmo-gbproxy.spec.in: fix config paths

 -- Oliver Smith <osmith@sysmocom.de>  Fri, 05 Feb 2021 11:42:48 +0100

osmo-gbproxy (1:0.0.0) unstable; urgency=medium

  [ Neels Hofmeyr ]
  * manual: explain IuPS, add SCCP/M3UA section from common chapters

  [ Eric ]
  * tests: dlopen does not imply availability of dlsym..
  * configure.ac: fix libtool issue with clang and sanitizer

  [ Harald Welte ]
  * gtphub_test: Fix compilation with gcc-10

  [ Oliver Smith ]
  * contrib: import RPM spec
  * contrib: integrate RPM spec
  * Makefile.am: EXTRA_DIST: debian, contrib/*.spec.in

  [ Neels Hofmeyr ]
  * gbproxy_test.c: fix mobile identity test data
  * use new osmo_mobile_identity API everywhere

  [ Harald Welte ]
  * *.spec.in: Use %config(noreplace) to retain current config file

  [ Alexander Couzens ]
  * gtphub: rename sgsn's oww osmo_sockaddr into sgsn_sockaddr

  [ Vadim Yanitskiy ]
  * debian/control: change maintainer to the Osmocom team / mailing list

  [ Pau Espin Pedrol ]
  * configure.ac: Fix trailing whitespace
  * doc: Update VTY reference xml file
  * Support setting rt-prio and cpu-affinity mask through VTY

  [ Daniel Willmann ]
  * gbproxy-usermanual: Explain BSSGP/BVC handling

  [ Alexander Couzens ]
  * gtphub_test: fix compilation error on gcc 10.2.0

  [ Pau Espin Pedrol ]
  * contrib/jenkins: Enable parallel make in make distcheck

  [ Keith ]
  * VTY: Add gtp state-dir command

  [ Alexander Couzens ]
  * Port gbproxy to NS2

  [ Daniel Willmann ]
  * gbproxy: Whitespace fixes
  * gbproxy: Add todo for BVC RESET logic
  * gbproxy: Get the peer if paging by BVCI on SIG_BVC
  * Let libosmocore handle VTY parent node tracking
  * osmo-gbproxy: Free msgb in ns2 prim callback
  * configure.ac: Require python3 for ext_tests
  * osmo-gbproxy: Implement nsvc-state ctrl command

  [ Harald Welte ]
  * gbproxy: Properly implement paging to LAC/RAC
  * gbproxy: Implement paging to entire BSS area

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

  [ Harald Welte ]
  * gbproxy: Pass TLLI as LSP towards NS to facilitate load sharing
  * gb_proxy_peer: Add some FIXMEs regarding invalid assumptions

  [ Daniel Willmann ]
  * gbproxy: Remove test testing NSVCI change
  * gbproxy: Add NSE peer that can have multiple gbproxy_peers
  * gbproxy: Ensure BVC0 is reset before handling PtP BVCs
  * gbproxy: Only send paging to each matching NSE once
  * gbproxy: Separate function to move gbproxy_peer to different nse

  [ Harald Welte ]
  * gb_proxy: More precise + readable log messages

  [ Daniel Willmann ]
  * gbproxy: Add logging macros for NSE and BVC
  * gbproxy: Use LOG macros for NSE/BVC
  * gbproxy: Change generic LOG messages so BVCI/NSEI fmt is consistent
  * gbproxy: Add todos encountered while going through the code

  [ Harald Welte ]
  * gb_proxy: Broadcast SGSN-INVOKE-TRACE and OVERLOAD
  * gbproxy: Move BSS-side BVC-RESET processing to its own function
  * gb_proxy: Slightly restructure processing of BSS-originated BVC-RESET
  * gbproxy: Cosmetics: use longer lines

  [ Daniel Willmann ]
  * gbproxy: Add BVC log filters
  * gbproxy: Add newline to log message
  * gbproxy: Allow gbproxy_nse_free(NULL)
  * gbproxy: Delete gbproxy_nse in delete-gbproxy-peer VTY command

  [ Harald Welte ]
  * gbproxy: Send BVC-STATUS if BSS sends us BVC-RESET without mandatory IEs
  * gb_proxy: Use TLVP_PRES_LEN instead of TLVP_PRESENT
  * gb_proxy: Rename gbproxy_peer to gbproxy_bvc
  * gbproxy: Rename gbproxy_cfg.nses to gbproxy_cfg.bss_nses
  * gbproxy: convert bss_nses from llist_head to hashtable
  * gbproxy: convert nse->bvcs from llist_head to hashtable
  * gbproxy: Remove patching, TLLI-tracking and SGSN2 support
  * gb_proxy: cosmetic: Use function rather than open-coding is_sgsn
  * gbproxy: Delete gbproxy_test
  * gb_proxy: Introduce more validation / constraint checks
  * gbproxy: use gbprox_relay2peer() whenever possible
  * gb_proxy: Use osmo_tlv_prot_parse() to validate mandatory IEs
  * gbproxy: Log FSM timeouts
  * migrate to DLBSSGP as log sub-system for BSSGP
  * gbproxy major rewrite for SGSN pool support
  * gbproxy: Use "(nsei << 16) | bvci" as rate_ctr_group index
  * gbproxy: Introduce new DOBJ log category; log object allocation/release
  * gbproxy: Don't create an extra msgb copy for SGSN DL SIG
  * gbproxy: Implement handling of BVC Flow Control

  [ Daniel Willmann ]
  * gbproxy: Fix bvci check in gbprox_rx_ptp_from_*

  [ Harald Welte ]
  * gbproxy: Copy RA-ID from BSS side BVC to CELL and SGSN-side BVC
  * gbproxy: (Re)allocate SGSN-side PTP BVC even if CELL already exists
  * gbproxy: Fix segfault when receiving PAGING for unknown destination
  * gbproxy: Add FSM related VTY commands
  * gbproxy: Implement scaling of BVC flow control in SGSN pool
  * gbproxy: Improve VTY state introspection
  * gbproxy: rename vty command "show gbproxy ..." to "show gbproxy bvc ..."

  [ Daniel Willmann ]
  * osmo-gbproxy: Initialize all hash_maps
  * gbproxy: Fix confusing log message in gbprox_relay2nse

  [ Harald Welte ]
  * gbproxy: Add "show gbproxy cell ..." VTY command

  [ Daniel Willmann ]
  * gbproxy: Add SGSN NRI configuration
  * gbproxy: Add SGSN pooling support
  * gbproxy: Add comments to sgsn functions

  [ Harald Welte ]
  * gbproxy: Fix build on Deiban 8

  [ Alexander Couzens ]
  * sgsn: Use the new NS2 api
  * gbproxy: use ns2 vty2

  [ Daniel Willmann ]
  * gbproxy: Add config option to name an SGSN
  * gbproxy: Add VTY command to override the node selection function

  [ Vadim Yanitskiy ]
  * gb_proxy_peer: sgsn can never be NULL in gbproxy_sgsn_by_nri()
  * gb_proxy_peer: fix NULL pointer dereference in gbproxy_sgsn_alloc()

  [ Daniel Willmann ]
  * Fix gbproxy_sgsn_by_tlli wraparound

  [ Alexander Couzens ]
  * configure.ac: define a c standard instead of using the compilers default

  [ Daniel Willmann ]
  * gbproxy: Implement TLLI cache and use it for SUSPEND/RESUME
  * gbproxy: Increase TLLI cache timeout to 10s

  [ Oliver Smith ]
  * contrib/jenkins: don't build osmo-gsm-manuals

  [ Daniel Willmann ]
  * gbproxy: Implement IMSI cache
  * gbproxy: Use IMSI cache to handle PAGING_PS_REJECT
  * gbproxy: Use C-style comments
  * gbproxy: Move helper function to a more logical place
  * gbproxy: Remove unused variable assignment
  * gbproxy: Fix VTY cmd name
  * gbproxy: Define and use help string for gbproxy
  * gbproxy: Add VTY commands to query the TLLI/IMSI cache

  [ Harald Welte ]
  * gb_proxy: Don't use orphan log subsystem DPCU

  [ Daniel Willmann ]
  * gbproxy: Use IMSI cache for PTP paging and implement DUMMY_PAGING_PS
  * gbproxy: Print the correct message type for dummy paging/paging reject
  * gbproxy: Improve log messages in gbproxy_select_sgsn
  * gbproxy: Fix radio status routing by TMSI

  [ Alexander Couzens ]
  * follow libosmocore/gprs_ns2 API changes of GPRS enums

  [ Harald Welte ]
  * gbproxy: Avoid depending on any of the SGSN code

  [ Daniel Willmann ]
  * manual/gbproxy: Update overview chapter
  * Rename OsmoGbPROXY -> *Proxy
  * manuals/gbproxy: Update configuration chapter
  * manuals/gbproxy: Add osmo-bsc MSC pooling chapter from Neels as a base
  * manuals/gbproxy: MSC -> SGSN for pooling chapter
  * manuals/gbproxy: Move pooling to separate chapter

  [ Alexander Couzens ]
  * gbproxy: follow gprs_ns2 API vty changes
  * sgsn: migrate to the new gprs_ns2_vty configuration
  * follow libosmocore/gprs_ns2 API changes (gprs_ns2_dynamic_create_nse)

  [ Oliver Smith ]
  * === Split osmo-gbproxy from osmo-sgsn ===

 -- Oliver Smith <osmith@sysmocom.de>  Fri, 29 Jan 2021 12:57:28 +0100
