# When cleaning up this file: bump API version in corresponding Makefile.am and rename corresponding debian/lib*.install
# according to https://osmocom.org/projects/cellular-infrastructure/wiki/Make_a_new_release
# In short: https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info
# LIBVERSION=c:r:a
# If the library source code has changed at all since the last update, then increment revision: c:r + 1:a.
# If any interfaces have been added, removed, or changed since the last update: c + 1:0:0.
# If any interfaces have been added since the last public release: c:r:a + 1.
# If any interfaces have been removed or changed since the last public release: c:r:0.
#library	what			description / commit summary line
libosmogsm	new API			gsm0808_create_sapi_reject_cause() with cause argument
libosmogsm	ABI change		struct osmo_gprs_cell_options size changed (new field at the end)
libosmogsm	API change		struct ipac_preproc_ave_cfg: new zero-sized flexible array member at end
libosmovty	ABI change		struct cmd_element: add a field for program specific attributes
libosmovty	ABI change		struct vty_app_info: optional program specific attributes description
libosmoctrl     ABI change		struct ctrl_handle changed size (new field "reply_cb" at the end)
libosmogsm	new API			osmo_rai_cmp(), osmo_cgi_ps_cmp()
