# 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
core		osmo_tdef_get()		change val_if_not_present arg from unsigned long to long to allow passing -1
core		struct osmo_tdef	fields min_val,max_val added, ABI break (arrays of structs used in programs)
gsm		API added		osmo_gsm48_rfpowercap2powerclass()
gb		API added		bssgp_bvc_ctx_free()
core		osmo_sockaddr_str_from_32n(),
		osmo_sockaddr_str_to_32n()	Deprecate: named 'n' but use host byte order.
core		osmo_sockaddr_str_from_32h(),
		osmo_sockaddr_str_to_32h()	New, use host byte order and are named appropriately.
