sabp: Generate C/H files for SABP; create libosmo-sabp

This uses the (modified) Osmocom asn1c on the (modified) SABP ASN.1
syntax to generate C code + header files for SABP parsing/encoding.

It also adds some helper code for message encoding and decoding as well
as a new libosmo-sabp shared library which can be used by programs to
implement SABP related functionality.

Change-Id: Ib9580d1af96354398da4c9f97b28a0e23d56e275
diff --git a/include/osmocom/Makefile.am b/include/osmocom/Makefile.am
index 246cb34..846fcc3 100644
--- a/include/osmocom/Makefile.am
+++ b/include/osmocom/Makefile.am
@@ -1,2 +1,2 @@
-SUBDIRS = hnbap ranap rua iuh
+SUBDIRS = hnbap ranap rua sabp iuh
 
diff --git a/include/osmocom/sabp/Makefile.am b/include/osmocom/sabp/Makefile.am
new file mode 100644
index 0000000..f89984f
--- /dev/null
+++ b/include/osmocom/sabp/Makefile.am
@@ -0,0 +1,78 @@
+# Ugly: sabp_ies_defs.h is generated from asn1tostruct.py at the same time as
+# the sabp_*.c files in src/, but the sabp_ies_defs.h should live here. If
+# the build process wants this header file, it should first build
+# src/sabp_encoder.c and src/sabp_decoder.c.
+# This rule sucks:
+sabp_ies_defs.h:
+	$(MAKE) -C $(top_builddir)/src/ gen_sabp.stamp
+
+sabp_HEADERS = \
+	sabp_ies_defs.h \
+	sabp_common.h \
+	SABP_InitiatingMessage.h	\
+	SABP_SABP-PDU.h	\
+	SABP_SuccessfulOutcome.h	\
+	SABP_UnsuccessfulOutcome.h	\
+	SABP_Criticality.h	\
+	SABP_Presence.h	\
+	SABP_ProcedureCode.h	\
+	SABP_ProtocolExtensionID.h	\
+	SABP_ProtocolIE-ID.h	\
+	SABP_TriggeringMessage.h	\
+	SABP_IE-Extensions.h	\
+	SABP_Available-Bandwidth.h	\
+	SABP_Broadcast-Message-Content.h	\
+	SABP_Broadcast-Message-Content-Validity-Indicator.h	\
+	SABP_Category.h	\
+	SABP_Cause.h	\
+	SABP_Criticality-Diagnostics.h	\
+	SABP_CriticalityDiagnostics-IE-List.h	\
+	SABP_MessageStructure.h	\
+	SABP_Data-Coding-Scheme.h	\
+	SABP_Failure-List.h	\
+	SABP_Failure-List-Item.h	\
+	SABP_Message-Identifier.h	\
+	SABP_New-Serial-Number.h	\
+	SABP_Number-of-Broadcasts-Completed-List.h	\
+	SABP_Number-of-Broadcasts-Completed-List-Item.h	\
+	SABP_Number-Of-Broadcasts-Completed-Info.h	\
+	SABP_Number-of-Broadcasts-Requested.h	\
+	SABP_Old-Serial-Number.h	\
+	SABP_Paging-ETWS-Indicator.h	\
+	SABP_Radio-Resource-Loading-List.h	\
+	SABP_Radio-Resource-Loading-List-Item.h	\
+	SABP_Recovery-Indication.h	\
+	SABP_RepetitionNumber0.h	\
+	SABP_RepetitionNumber1.h	\
+	SABP_Repetition-Period.h	\
+	SABP_Serial-Number.h	\
+	SABP_Service-Area-Identifier.h	\
+	SABP_Service-Areas-List.h	\
+	SABP_TypeOfError.h	\
+	SABP_WarningSecurityInfo.h	\
+	SABP_Warning-Type.h	\
+	SABP_Write-Replace.h	\
+	SABP_Write-Replace-Complete.h	\
+	SABP_Write-Replace-Failure.h	\
+	SABP_Kill.h	\
+	SABP_Kill-Complete.h	\
+	SABP_Kill-Failure.h	\
+	SABP_Load-Query.h	\
+	SABP_Load-Query-Complete.h	\
+	SABP_Load-Query-Failure.h	\
+	SABP_Message-Status-Query.h	\
+	SABP_Message-Status-Query-Complete.h	\
+	SABP_Message-Status-Query-Failure.h	\
+	SABP_Reset.h	\
+	SABP_Reset-Complete.h	\
+	SABP_Reset-Failure.h	\
+	SABP_Restart.h	\
+	SABP_Failure.h	\
+	SABP_Error-Indication.h	\
+	SABP_IE.h \
+	$(NULL)
+
+sabpdir = $(includedir)/osmocom/sabp
+
+DISTCLEANFILES = \
+	sabp_ies_defs.h
diff --git a/include/osmocom/sabp/SABP_Available-Bandwidth.h b/include/osmocom/sabp/SABP_Available-Bandwidth.h
new file mode 100644
index 0000000..645b0d7
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Available-Bandwidth.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Available_Bandwidth_H_
+#define	_SABP_Available_Bandwidth_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Available-Bandwidth */
+typedef long	 SABP_Available_Bandwidth_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Available_Bandwidth;
+asn_struct_free_f SABP_Available_Bandwidth_free;
+asn_struct_print_f SABP_Available_Bandwidth_print;
+asn_constr_check_f SABP_Available_Bandwidth_constraint;
+ber_type_decoder_f SABP_Available_Bandwidth_decode_ber;
+der_type_encoder_f SABP_Available_Bandwidth_encode_der;
+xer_type_decoder_f SABP_Available_Bandwidth_decode_xer;
+xer_type_encoder_f SABP_Available_Bandwidth_encode_xer;
+per_type_decoder_f SABP_Available_Bandwidth_decode_uper;
+per_type_encoder_f SABP_Available_Bandwidth_encode_uper;
+per_type_decoder_f SABP_Available_Bandwidth_decode_aper;
+per_type_encoder_f SABP_Available_Bandwidth_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Available_Bandwidth_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Broadcast-Message-Content-Validity-Indicator.h b/include/osmocom/sabp/SABP_Broadcast-Message-Content-Validity-Indicator.h
new file mode 100644
index 0000000..3544605
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Broadcast-Message-Content-Validity-Indicator.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Broadcast_Message_Content_Validity_Indicator_H_
+#define	_SABP_Broadcast_Message_Content_Validity_Indicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Broadcast_Message_Content_Validity_Indicator {
+	SABP_Broadcast_Message_Content_Validity_Indicator_broadcast_Message_Content_not_valid	= 0
+	/*
+	 * Enumeration is extensible
+	 */
+} e_SABP_Broadcast_Message_Content_Validity_Indicator;
+
+/* SABP_Broadcast-Message-Content-Validity-Indicator */
+typedef long	 SABP_Broadcast_Message_Content_Validity_Indicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Broadcast_Message_Content_Validity_Indicator;
+asn_struct_free_f SABP_Broadcast_Message_Content_Validity_Indicator_free;
+asn_struct_print_f SABP_Broadcast_Message_Content_Validity_Indicator_print;
+asn_constr_check_f SABP_Broadcast_Message_Content_Validity_Indicator_constraint;
+ber_type_decoder_f SABP_Broadcast_Message_Content_Validity_Indicator_decode_ber;
+der_type_encoder_f SABP_Broadcast_Message_Content_Validity_Indicator_encode_der;
+xer_type_decoder_f SABP_Broadcast_Message_Content_Validity_Indicator_decode_xer;
+xer_type_encoder_f SABP_Broadcast_Message_Content_Validity_Indicator_encode_xer;
+per_type_decoder_f SABP_Broadcast_Message_Content_Validity_Indicator_decode_uper;
+per_type_encoder_f SABP_Broadcast_Message_Content_Validity_Indicator_encode_uper;
+per_type_decoder_f SABP_Broadcast_Message_Content_Validity_Indicator_decode_aper;
+per_type_encoder_f SABP_Broadcast_Message_Content_Validity_Indicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Broadcast_Message_Content_Validity_Indicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Broadcast-Message-Content.h b/include/osmocom/sabp/SABP_Broadcast-Message-Content.h
new file mode 100644
index 0000000..3f4e9c2
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Broadcast-Message-Content.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Broadcast_Message_Content_H_
+#define	_SABP_Broadcast_Message_Content_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Broadcast-Message-Content */
+typedef BIT_STRING_t	 SABP_Broadcast_Message_Content_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Broadcast_Message_Content;
+asn_struct_free_f SABP_Broadcast_Message_Content_free;
+asn_struct_print_f SABP_Broadcast_Message_Content_print;
+asn_constr_check_f SABP_Broadcast_Message_Content_constraint;
+ber_type_decoder_f SABP_Broadcast_Message_Content_decode_ber;
+der_type_encoder_f SABP_Broadcast_Message_Content_encode_der;
+xer_type_decoder_f SABP_Broadcast_Message_Content_decode_xer;
+xer_type_encoder_f SABP_Broadcast_Message_Content_encode_xer;
+per_type_decoder_f SABP_Broadcast_Message_Content_decode_uper;
+per_type_encoder_f SABP_Broadcast_Message_Content_encode_uper;
+per_type_decoder_f SABP_Broadcast_Message_Content_decode_aper;
+per_type_encoder_f SABP_Broadcast_Message_Content_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Broadcast_Message_Content_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Category.h b/include/osmocom/sabp/SABP_Category.h
new file mode 100644
index 0000000..f33800b
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Category.h
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Category_H_
+#define	_SABP_Category_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Category {
+	SABP_Category_high_priority	= 0,
+	SABP_Category_background_priority	= 1,
+	SABP_Category_normal_priority	= 2,
+	SABP_Category_default_priority	= 3
+	/*
+	 * Enumeration is extensible
+	 */
+} e_SABP_Category;
+
+/* SABP_Category */
+typedef long	 SABP_Category_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Category;
+asn_struct_free_f SABP_Category_free;
+asn_struct_print_f SABP_Category_print;
+asn_constr_check_f SABP_Category_constraint;
+ber_type_decoder_f SABP_Category_decode_ber;
+der_type_encoder_f SABP_Category_encode_der;
+xer_type_decoder_f SABP_Category_decode_xer;
+xer_type_encoder_f SABP_Category_encode_xer;
+per_type_decoder_f SABP_Category_decode_uper;
+per_type_encoder_f SABP_Category_encode_uper;
+per_type_decoder_f SABP_Category_decode_aper;
+per_type_encoder_f SABP_Category_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Category_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Cause.h b/include/osmocom/sabp/SABP_Cause.h
new file mode 100644
index 0000000..d294526
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Cause.h
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Cause_H_
+#define	_SABP_Cause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Cause {
+	SABP_Cause_parameter_not_recognised	= 0,
+	SABP_Cause_parameter_value_invalid	= 1,
+	SABP_Cause_valid_CN_message_not_identified	= 2,
+	SABP_Cause_service_area_identity_not_valid	= 3,
+	SABP_Cause_unrecognised_message	= 4,
+	SABP_Cause_missing_mandatory_element	= 5,
+	SABP_Cause_rNC_capacity_exceeded	= 6,
+	SABP_Cause_rNC_memory_exceeded	= 7,
+	SABP_Cause_service_area_broadcast_not_supported	= 8,
+	SABP_Cause_service_area_broadcast_not_operational	= 9,
+	SABP_Cause_message_reference_already_used	= 10,
+	SABP_Cause_unspecifed_error	= 11,
+	SABP_Cause_transfer_syntax_error	= 12,
+	SABP_Cause_semantic_error	= 13,
+	SABP_Cause_message_not_compatible_with_receiver_state	= 14,
+	SABP_Cause_abstract_syntax_error_reject	= 15,
+	SABP_Cause_abstract_syntax_error_ignore_and_notify	= 16,
+	SABP_Cause_abstract_syntax_error_falsely_constructed_message	= 17
+} e_SABP_Cause;
+
+/* SABP_Cause */
+typedef long	 SABP_Cause_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Cause;
+asn_struct_free_f SABP_Cause_free;
+asn_struct_print_f SABP_Cause_print;
+asn_constr_check_f SABP_Cause_constraint;
+ber_type_decoder_f SABP_Cause_decode_ber;
+der_type_encoder_f SABP_Cause_encode_der;
+xer_type_decoder_f SABP_Cause_decode_xer;
+xer_type_encoder_f SABP_Cause_encode_xer;
+per_type_decoder_f SABP_Cause_decode_uper;
+per_type_encoder_f SABP_Cause_encode_uper;
+per_type_decoder_f SABP_Cause_decode_aper;
+per_type_encoder_f SABP_Cause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Cause_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Criticality-Diagnostics.h b/include/osmocom/sabp/SABP_Criticality-Diagnostics.h
new file mode 100644
index 0000000..db3120d
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Criticality-Diagnostics.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Criticality_Diagnostics_H_
+#define	_SABP_Criticality_Diagnostics_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_ProcedureCode.h>
+#include <osmocom/sabp/SABP_TriggeringMessage.h>
+#include <osmocom/sabp/SABP_Criticality.h>
+#include <osmocom/sabp/SABP_CriticalityDiagnostics-IE-List.h>
+#include <osmocom/sabp/SABP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Criticality-Diagnostics */
+typedef struct SABP_Criticality_Diagnostics {
+	SABP_ProcedureCode_t	*procedureCode	/* OPTIONAL */;
+	SABP_TriggeringMessage_t	*triggeringMessage	/* OPTIONAL */;
+	SABP_Criticality_t	*procedureCriticality	/* OPTIONAL */;
+	SABP_CriticalityDiagnostics_IE_List_t	*iEsCriticalityDiagnostics	/* OPTIONAL */;
+	SABP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Criticality_Diagnostics_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Criticality_Diagnostics;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Criticality_Diagnostics_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Criticality.h b/include/osmocom/sabp/SABP_Criticality.h
new file mode 100644
index 0000000..7a1e015
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Criticality.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-CommonDataTypes"
+ * 	found in "../../asn1/sabp/SABP-CommonDataTypes.asn"
+ */
+
+#ifndef	_SABP_Criticality_H_
+#define	_SABP_Criticality_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Criticality {
+	SABP_Criticality_reject	= 0,
+	SABP_Criticality_ignore	= 1,
+	SABP_Criticality_notify	= 2
+} e_SABP_Criticality;
+
+/* SABP_Criticality */
+typedef long	 SABP_Criticality_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Criticality;
+asn_struct_free_f SABP_Criticality_free;
+asn_struct_print_f SABP_Criticality_print;
+asn_constr_check_f SABP_Criticality_constraint;
+ber_type_decoder_f SABP_Criticality_decode_ber;
+der_type_encoder_f SABP_Criticality_encode_der;
+xer_type_decoder_f SABP_Criticality_decode_xer;
+xer_type_encoder_f SABP_Criticality_encode_xer;
+per_type_decoder_f SABP_Criticality_decode_uper;
+per_type_encoder_f SABP_Criticality_encode_uper;
+per_type_decoder_f SABP_Criticality_decode_aper;
+per_type_encoder_f SABP_Criticality_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Criticality_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_CriticalityDiagnostics-IE-List.h b/include/osmocom/sabp/SABP_CriticalityDiagnostics-IE-List.h
new file mode 100644
index 0000000..2d2fa40
--- /dev/null
+++ b/include/osmocom/sabp/SABP_CriticalityDiagnostics-IE-List.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_CriticalityDiagnostics_IE_List_H_
+#define	_SABP_CriticalityDiagnostics_IE_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/sabp/SABP_Criticality.h>
+#include <osmocom/sabp/SABP_ProtocolIE-ID.h>
+#include <osmocom/sabp/SABP_RepetitionNumber0.h>
+#include <osmocom/sabp/SABP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_CriticalityDiagnostics-IE-List */
+typedef struct SABP_CriticalityDiagnostics_IE_List {
+	A_SEQUENCE_OF(struct Member {
+		SABP_Criticality_t	 iECriticality;
+		SABP_ProtocolIE_ID_t	 iE_ID;
+		SABP_RepetitionNumber0_t	*repetitionNumber	/* OPTIONAL */;
+		SABP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} ) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_CriticalityDiagnostics_IE_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_CriticalityDiagnostics_IE_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_CriticalityDiagnostics_IE_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Data-Coding-Scheme.h b/include/osmocom/sabp/SABP_Data-Coding-Scheme.h
new file mode 100644
index 0000000..4ecae15
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Data-Coding-Scheme.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Data_Coding_Scheme_H_
+#define	_SABP_Data_Coding_Scheme_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Data-Coding-Scheme */
+typedef BIT_STRING_t	 SABP_Data_Coding_Scheme_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Data_Coding_Scheme;
+asn_struct_free_f SABP_Data_Coding_Scheme_free;
+asn_struct_print_f SABP_Data_Coding_Scheme_print;
+asn_constr_check_f SABP_Data_Coding_Scheme_constraint;
+ber_type_decoder_f SABP_Data_Coding_Scheme_decode_ber;
+der_type_encoder_f SABP_Data_Coding_Scheme_encode_der;
+xer_type_decoder_f SABP_Data_Coding_Scheme_decode_xer;
+xer_type_encoder_f SABP_Data_Coding_Scheme_encode_xer;
+per_type_decoder_f SABP_Data_Coding_Scheme_decode_uper;
+per_type_encoder_f SABP_Data_Coding_Scheme_encode_uper;
+per_type_decoder_f SABP_Data_Coding_Scheme_decode_aper;
+per_type_encoder_f SABP_Data_Coding_Scheme_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Data_Coding_Scheme_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Error-Indication.h b/include/osmocom/sabp/SABP_Error-Indication.h
new file mode 100644
index 0000000..f857601
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Error-Indication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Error_Indication_H_
+#define	_SABP_Error_Indication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Error-Indication */
+typedef struct SABP_Error_Indication {
+	struct error_Indication_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} error_Indication_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Error_Indication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Error_Indication;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Error_Indication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Failure-List-Item.h b/include/osmocom/sabp/SABP_Failure-List-Item.h
new file mode 100644
index 0000000..9c8200f
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Failure-List-Item.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Failure_List_Item_H_
+#define	_SABP_Failure_List_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Service-Area-Identifier.h>
+#include <osmocom/sabp/SABP_Cause.h>
+#include <osmocom/sabp/SABP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Failure-List-Item */
+typedef struct SABP_Failure_List_Item {
+	SABP_Service_Area_Identifier_t	 service_area_identifier;
+	SABP_Cause_t	 cause;
+	SABP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Failure_List_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Failure_List_Item;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Failure_List_Item_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Failure-List.h b/include/osmocom/sabp/SABP_Failure-List.h
new file mode 100644
index 0000000..4455a26
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Failure-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Failure_List_H_
+#define	_SABP_Failure_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Failure-List-Item.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Failure-List */
+typedef struct SABP_Failure_List {
+	A_SEQUENCE_OF(SABP_Failure_List_Item_t) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Failure_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Failure_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Failure_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Failure.h b/include/osmocom/sabp/SABP_Failure.h
new file mode 100644
index 0000000..a4927c9
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Failure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Failure_H_
+#define	_SABP_Failure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Failure */
+typedef struct SABP_Failure {
+	struct failure_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} failure_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Failure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Failure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Failure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_IE-Extensions.h b/include/osmocom/sabp/SABP_IE-Extensions.h
new file mode 100644
index 0000000..9faa7be
--- /dev/null
+++ b/include/osmocom/sabp/SABP_IE-Extensions.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_IE_Extensions_H_
+#define	_SABP_IE_Extensions_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_IE-Extensions */
+typedef struct SABP_IE_Extensions {
+	A_SEQUENCE_OF(SABP_IE_t) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_IE_Extensions_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_IE_Extensions;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_IE_Extensions_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_IE.h b/include/osmocom/sabp/SABP_IE.h
new file mode 100644
index 0000000..0de75c9
--- /dev/null
+++ b/include/osmocom/sabp/SABP_IE.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_IE_H_
+#define	_SABP_IE_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_ProtocolIE-ID.h>
+#include <osmocom/sabp/SABP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_IE */
+typedef struct SABP_IE {
+	SABP_ProtocolIE_ID_t	 id;
+	SABP_Criticality_t	 criticality;
+	ANY_t	 value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_IE_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_IE;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_IE_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_InitiatingMessage.h b/include/osmocom/sabp/SABP_InitiatingMessage.h
new file mode 100644
index 0000000..77bc931
--- /dev/null
+++ b/include/osmocom/sabp/SABP_InitiatingMessage.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_InitiatingMessage_H_
+#define	_SABP_InitiatingMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_ProcedureCode.h>
+#include <osmocom/sabp/SABP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_InitiatingMessage */
+typedef struct SABP_InitiatingMessage {
+	SABP_ProcedureCode_t	 procedureCode;
+	SABP_Criticality_t	 criticality;
+	ANY_t	 value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_InitiatingMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_InitiatingMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_InitiatingMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Kill-Complete.h b/include/osmocom/sabp/SABP_Kill-Complete.h
new file mode 100644
index 0000000..de5b618
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Kill-Complete.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Kill_Complete_H_
+#define	_SABP_Kill_Complete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Kill-Complete */
+typedef struct SABP_Kill_Complete {
+	struct kill_Complete_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} kill_Complete_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Kill_Complete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Kill_Complete;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Kill_Complete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Kill-Failure.h b/include/osmocom/sabp/SABP_Kill-Failure.h
new file mode 100644
index 0000000..803e2dc
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Kill-Failure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Kill_Failure_H_
+#define	_SABP_Kill_Failure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Kill-Failure */
+typedef struct SABP_Kill_Failure {
+	struct kill_Failure_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} kill_Failure_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Kill_Failure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Kill_Failure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Kill_Failure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Kill.h b/include/osmocom/sabp/SABP_Kill.h
new file mode 100644
index 0000000..54a728c
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Kill.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Kill_H_
+#define	_SABP_Kill_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Kill */
+typedef struct SABP_Kill {
+	struct kill_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} kill_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Kill_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Kill;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Kill_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Load-Query-Complete.h b/include/osmocom/sabp/SABP_Load-Query-Complete.h
new file mode 100644
index 0000000..ba592cf
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Load-Query-Complete.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Load_Query_Complete_H_
+#define	_SABP_Load_Query_Complete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Load-Query-Complete */
+typedef struct SABP_Load_Query_Complete {
+	struct load_Query_Complete_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} load_Query_Complete_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Load_Query_Complete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Load_Query_Complete;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Load_Query_Complete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Load-Query-Failure.h b/include/osmocom/sabp/SABP_Load-Query-Failure.h
new file mode 100644
index 0000000..2795a6b
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Load-Query-Failure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Load_Query_Failure_H_
+#define	_SABP_Load_Query_Failure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Load-Query-Failure */
+typedef struct SABP_Load_Query_Failure {
+	struct load_Query_Failure_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} load_Query_Failure_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Load_Query_Failure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Load_Query_Failure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Load_Query_Failure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Load-Query.h b/include/osmocom/sabp/SABP_Load-Query.h
new file mode 100644
index 0000000..527f006
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Load-Query.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Load_Query_H_
+#define	_SABP_Load_Query_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Load-Query */
+typedef struct SABP_Load_Query {
+	struct load_Query_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} load_Query_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Load_Query_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Load_Query;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Load_Query_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Message-Identifier.h b/include/osmocom/sabp/SABP_Message-Identifier.h
new file mode 100644
index 0000000..9a5ece0
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Message-Identifier.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Message_Identifier_H_
+#define	_SABP_Message_Identifier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Message-Identifier */
+typedef BIT_STRING_t	 SABP_Message_Identifier_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Message_Identifier;
+asn_struct_free_f SABP_Message_Identifier_free;
+asn_struct_print_f SABP_Message_Identifier_print;
+asn_constr_check_f SABP_Message_Identifier_constraint;
+ber_type_decoder_f SABP_Message_Identifier_decode_ber;
+der_type_encoder_f SABP_Message_Identifier_encode_der;
+xer_type_decoder_f SABP_Message_Identifier_decode_xer;
+xer_type_encoder_f SABP_Message_Identifier_encode_xer;
+per_type_decoder_f SABP_Message_Identifier_decode_uper;
+per_type_encoder_f SABP_Message_Identifier_encode_uper;
+per_type_decoder_f SABP_Message_Identifier_decode_aper;
+per_type_encoder_f SABP_Message_Identifier_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Message_Identifier_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Message-Status-Query-Complete.h b/include/osmocom/sabp/SABP_Message-Status-Query-Complete.h
new file mode 100644
index 0000000..bfb73d9
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Message-Status-Query-Complete.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Message_Status_Query_Complete_H_
+#define	_SABP_Message_Status_Query_Complete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Message-Status-Query-Complete */
+typedef struct SABP_Message_Status_Query_Complete {
+	struct message_Status_Query_Complete_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} message_Status_Query_Complete_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Message_Status_Query_Complete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Message_Status_Query_Complete;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Message_Status_Query_Complete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Message-Status-Query-Failure.h b/include/osmocom/sabp/SABP_Message-Status-Query-Failure.h
new file mode 100644
index 0000000..4f24d5c
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Message-Status-Query-Failure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Message_Status_Query_Failure_H_
+#define	_SABP_Message_Status_Query_Failure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Message-Status-Query-Failure */
+typedef struct SABP_Message_Status_Query_Failure {
+	struct message_Status_Query_Failure_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} message_Status_Query_Failure_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Message_Status_Query_Failure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Message_Status_Query_Failure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Message_Status_Query_Failure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Message-Status-Query.h b/include/osmocom/sabp/SABP_Message-Status-Query.h
new file mode 100644
index 0000000..407c41c
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Message-Status-Query.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Message_Status_Query_H_
+#define	_SABP_Message_Status_Query_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Message-Status-Query */
+typedef struct SABP_Message_Status_Query {
+	struct message_Status_Query_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} message_Status_Query_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Message_Status_Query_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Message_Status_Query;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Message_Status_Query_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_MessageStructure.h b/include/osmocom/sabp/SABP_MessageStructure.h
new file mode 100644
index 0000000..f63f28e
--- /dev/null
+++ b/include/osmocom/sabp/SABP_MessageStructure.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_MessageStructure_H_
+#define	_SABP_MessageStructure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <osmocom/sabp/SABP_ProtocolIE-ID.h>
+#include <osmocom/sabp/SABP_RepetitionNumber1.h>
+#include <osmocom/sabp/SABP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_MessageStructure */
+typedef struct SABP_MessageStructure {
+	A_SEQUENCE_OF(struct MemberA {
+		SABP_ProtocolIE_ID_t	 iE_ID;
+		SABP_RepetitionNumber1_t	*repetitionNumber	/* OPTIONAL */;
+		SABP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} ) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_MessageStructure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_MessageStructure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_MessageStructure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_New-Serial-Number.h b/include/osmocom/sabp/SABP_New-Serial-Number.h
new file mode 100644
index 0000000..cebf264
--- /dev/null
+++ b/include/osmocom/sabp/SABP_New-Serial-Number.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_New_Serial_Number_H_
+#define	_SABP_New_Serial_Number_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Serial-Number.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_New-Serial-Number */
+typedef SABP_Serial_Number_t	 SABP_New_Serial_Number_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_New_Serial_Number;
+asn_struct_free_f SABP_New_Serial_Number_free;
+asn_struct_print_f SABP_New_Serial_Number_print;
+asn_constr_check_f SABP_New_Serial_Number_constraint;
+ber_type_decoder_f SABP_New_Serial_Number_decode_ber;
+der_type_encoder_f SABP_New_Serial_Number_encode_der;
+xer_type_decoder_f SABP_New_Serial_Number_decode_xer;
+xer_type_encoder_f SABP_New_Serial_Number_encode_xer;
+per_type_decoder_f SABP_New_Serial_Number_decode_uper;
+per_type_encoder_f SABP_New_Serial_Number_encode_uper;
+per_type_decoder_f SABP_New_Serial_Number_decode_aper;
+per_type_encoder_f SABP_New_Serial_Number_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_New_Serial_Number_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Number-Of-Broadcasts-Completed-Info.h b/include/osmocom/sabp/SABP_Number-Of-Broadcasts-Completed-Info.h
new file mode 100644
index 0000000..93c8c28
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Number-Of-Broadcasts-Completed-Info.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Number_Of_Broadcasts_Completed_Info_H_
+#define	_SABP_Number_Of_Broadcasts_Completed_Info_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Number_Of_Broadcasts_Completed_Info {
+	SABP_Number_Of_Broadcasts_Completed_Info_overflow	= 0,
+	SABP_Number_Of_Broadcasts_Completed_Info_unknown	= 1
+	/*
+	 * Enumeration is extensible
+	 */
+} e_SABP_Number_Of_Broadcasts_Completed_Info;
+
+/* SABP_Number-Of-Broadcasts-Completed-Info */
+typedef long	 SABP_Number_Of_Broadcasts_Completed_Info_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Number_Of_Broadcasts_Completed_Info;
+asn_struct_free_f SABP_Number_Of_Broadcasts_Completed_Info_free;
+asn_struct_print_f SABP_Number_Of_Broadcasts_Completed_Info_print;
+asn_constr_check_f SABP_Number_Of_Broadcasts_Completed_Info_constraint;
+ber_type_decoder_f SABP_Number_Of_Broadcasts_Completed_Info_decode_ber;
+der_type_encoder_f SABP_Number_Of_Broadcasts_Completed_Info_encode_der;
+xer_type_decoder_f SABP_Number_Of_Broadcasts_Completed_Info_decode_xer;
+xer_type_encoder_f SABP_Number_Of_Broadcasts_Completed_Info_encode_xer;
+per_type_decoder_f SABP_Number_Of_Broadcasts_Completed_Info_decode_uper;
+per_type_encoder_f SABP_Number_Of_Broadcasts_Completed_Info_encode_uper;
+per_type_decoder_f SABP_Number_Of_Broadcasts_Completed_Info_decode_aper;
+per_type_encoder_f SABP_Number_Of_Broadcasts_Completed_Info_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Number_Of_Broadcasts_Completed_Info_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List-Item.h b/include/osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List-Item.h
new file mode 100644
index 0000000..bea9d35
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List-Item.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Number_of_Broadcasts_Completed_List_Item_H_
+#define	_SABP_Number_of_Broadcasts_Completed_List_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Service-Area-Identifier.h>
+#include <NativeInteger.h>
+#include <osmocom/sabp/SABP_Number-Of-Broadcasts-Completed-Info.h>
+#include <osmocom/sabp/SABP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Number-of-Broadcasts-Completed-List-Item */
+typedef struct SABP_Number_of_Broadcasts_Completed_List_Item {
+	SABP_Service_Area_Identifier_t	 service_area_identifier;
+	long	 number_of_broadcasts_completed;
+	SABP_Number_Of_Broadcasts_Completed_Info_t	*number_of_broadcasts_completed_info	/* OPTIONAL */;
+	SABP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Number_of_Broadcasts_Completed_List_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Number_of_Broadcasts_Completed_List_Item;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Number_of_Broadcasts_Completed_List_Item_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List.h b/include/osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List.h
new file mode 100644
index 0000000..cea0be5
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Number_of_Broadcasts_Completed_List_H_
+#define	_SABP_Number_of_Broadcasts_Completed_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List-Item.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Number-of-Broadcasts-Completed-List */
+typedef struct SABP_Number_of_Broadcasts_Completed_List {
+	A_SEQUENCE_OF(SABP_Number_of_Broadcasts_Completed_List_Item_t) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Number_of_Broadcasts_Completed_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Number_of_Broadcasts_Completed_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Number_of_Broadcasts_Completed_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Number-of-Broadcasts-Requested.h b/include/osmocom/sabp/SABP_Number-of-Broadcasts-Requested.h
new file mode 100644
index 0000000..b795bd0
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Number-of-Broadcasts-Requested.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Number_of_Broadcasts_Requested_H_
+#define	_SABP_Number_of_Broadcasts_Requested_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Number_of_Broadcasts_Requested {
+	SABP_Number_of_Broadcasts_Requested_broadcast_indefinitely	= 0
+} e_SABP_Number_of_Broadcasts_Requested;
+
+/* SABP_Number-of-Broadcasts-Requested */
+typedef long	 SABP_Number_of_Broadcasts_Requested_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Number_of_Broadcasts_Requested;
+asn_struct_free_f SABP_Number_of_Broadcasts_Requested_free;
+asn_struct_print_f SABP_Number_of_Broadcasts_Requested_print;
+asn_constr_check_f SABP_Number_of_Broadcasts_Requested_constraint;
+ber_type_decoder_f SABP_Number_of_Broadcasts_Requested_decode_ber;
+der_type_encoder_f SABP_Number_of_Broadcasts_Requested_encode_der;
+xer_type_decoder_f SABP_Number_of_Broadcasts_Requested_decode_xer;
+xer_type_encoder_f SABP_Number_of_Broadcasts_Requested_encode_xer;
+per_type_decoder_f SABP_Number_of_Broadcasts_Requested_decode_uper;
+per_type_encoder_f SABP_Number_of_Broadcasts_Requested_encode_uper;
+per_type_decoder_f SABP_Number_of_Broadcasts_Requested_decode_aper;
+per_type_encoder_f SABP_Number_of_Broadcasts_Requested_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Number_of_Broadcasts_Requested_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Old-Serial-Number.h b/include/osmocom/sabp/SABP_Old-Serial-Number.h
new file mode 100644
index 0000000..4765e4d
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Old-Serial-Number.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Old_Serial_Number_H_
+#define	_SABP_Old_Serial_Number_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Serial-Number.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Old-Serial-Number */
+typedef SABP_Serial_Number_t	 SABP_Old_Serial_Number_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Old_Serial_Number;
+asn_struct_free_f SABP_Old_Serial_Number_free;
+asn_struct_print_f SABP_Old_Serial_Number_print;
+asn_constr_check_f SABP_Old_Serial_Number_constraint;
+ber_type_decoder_f SABP_Old_Serial_Number_decode_ber;
+der_type_encoder_f SABP_Old_Serial_Number_encode_der;
+xer_type_decoder_f SABP_Old_Serial_Number_decode_xer;
+xer_type_encoder_f SABP_Old_Serial_Number_encode_xer;
+per_type_decoder_f SABP_Old_Serial_Number_decode_uper;
+per_type_encoder_f SABP_Old_Serial_Number_encode_uper;
+per_type_decoder_f SABP_Old_Serial_Number_decode_aper;
+per_type_encoder_f SABP_Old_Serial_Number_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Old_Serial_Number_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Paging-ETWS-Indicator.h b/include/osmocom/sabp/SABP_Paging-ETWS-Indicator.h
new file mode 100644
index 0000000..fd76add
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Paging-ETWS-Indicator.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Paging_ETWS_Indicator_H_
+#define	_SABP_Paging_ETWS_Indicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Paging_ETWS_Indicator {
+	SABP_Paging_ETWS_Indicator_paging	= 0
+	/*
+	 * Enumeration is extensible
+	 */
+} e_SABP_Paging_ETWS_Indicator;
+
+/* SABP_Paging-ETWS-Indicator */
+typedef long	 SABP_Paging_ETWS_Indicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Paging_ETWS_Indicator;
+asn_struct_free_f SABP_Paging_ETWS_Indicator_free;
+asn_struct_print_f SABP_Paging_ETWS_Indicator_print;
+asn_constr_check_f SABP_Paging_ETWS_Indicator_constraint;
+ber_type_decoder_f SABP_Paging_ETWS_Indicator_decode_ber;
+der_type_encoder_f SABP_Paging_ETWS_Indicator_encode_der;
+xer_type_decoder_f SABP_Paging_ETWS_Indicator_decode_xer;
+xer_type_encoder_f SABP_Paging_ETWS_Indicator_encode_xer;
+per_type_decoder_f SABP_Paging_ETWS_Indicator_decode_uper;
+per_type_encoder_f SABP_Paging_ETWS_Indicator_encode_uper;
+per_type_decoder_f SABP_Paging_ETWS_Indicator_decode_aper;
+per_type_encoder_f SABP_Paging_ETWS_Indicator_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Paging_ETWS_Indicator_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Presence.h b/include/osmocom/sabp/SABP_Presence.h
new file mode 100644
index 0000000..e5c7468
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Presence.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-CommonDataTypes"
+ * 	found in "../../asn1/sabp/SABP-CommonDataTypes.asn"
+ */
+
+#ifndef	_SABP_Presence_H_
+#define	_SABP_Presence_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Presence {
+	SABP_Presence_optional	= 0,
+	SABP_Presence_conditional	= 1,
+	SABP_Presence_mandatory	= 2
+} e_SABP_Presence;
+
+/* SABP_Presence */
+typedef long	 SABP_Presence_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Presence;
+asn_struct_free_f SABP_Presence_free;
+asn_struct_print_f SABP_Presence_print;
+asn_constr_check_f SABP_Presence_constraint;
+ber_type_decoder_f SABP_Presence_decode_ber;
+der_type_encoder_f SABP_Presence_encode_der;
+xer_type_decoder_f SABP_Presence_decode_xer;
+xer_type_encoder_f SABP_Presence_encode_xer;
+per_type_decoder_f SABP_Presence_decode_uper;
+per_type_encoder_f SABP_Presence_encode_uper;
+per_type_decoder_f SABP_Presence_decode_aper;
+per_type_encoder_f SABP_Presence_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Presence_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_ProcedureCode.h b/include/osmocom/sabp/SABP_ProcedureCode.h
new file mode 100644
index 0000000..854f113
--- /dev/null
+++ b/include/osmocom/sabp/SABP_ProcedureCode.h
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-CommonDataTypes"
+ * 	found in "../../asn1/sabp/SABP-CommonDataTypes.asn"
+ */
+
+#ifndef	_SABP_ProcedureCode_H_
+#define	_SABP_ProcedureCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_ProcedureCode {
+	SABP_ProcedureCode_id_Write_Replace	= 0,
+	SABP_ProcedureCode_id_Kill	= 1,
+	SABP_ProcedureCode_id_Load_Status_Enquiry	= 2,
+	SABP_ProcedureCode_id_Message_Status_Query	= 3,
+	SABP_ProcedureCode_id_Restart_Indication	= 4,
+	SABP_ProcedureCode_id_Reset	= 5,
+	SABP_ProcedureCode_id_Failure_Indication	= 6,
+	SABP_ProcedureCode_id_Error_Indication	= 7
+} e_SABP_ProcedureCode;
+
+/* SABP_ProcedureCode */
+typedef long	 SABP_ProcedureCode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_ProcedureCode;
+asn_struct_free_f SABP_ProcedureCode_free;
+asn_struct_print_f SABP_ProcedureCode_print;
+asn_constr_check_f SABP_ProcedureCode_constraint;
+ber_type_decoder_f SABP_ProcedureCode_decode_ber;
+der_type_encoder_f SABP_ProcedureCode_encode_der;
+xer_type_decoder_f SABP_ProcedureCode_decode_xer;
+xer_type_encoder_f SABP_ProcedureCode_encode_xer;
+per_type_decoder_f SABP_ProcedureCode_decode_uper;
+per_type_encoder_f SABP_ProcedureCode_encode_uper;
+per_type_decoder_f SABP_ProcedureCode_decode_aper;
+per_type_encoder_f SABP_ProcedureCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_ProcedureCode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_ProtocolExtensionID.h b/include/osmocom/sabp/SABP_ProtocolExtensionID.h
new file mode 100644
index 0000000..babb695
--- /dev/null
+++ b/include/osmocom/sabp/SABP_ProtocolExtensionID.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-CommonDataTypes"
+ * 	found in "../../asn1/sabp/SABP-CommonDataTypes.asn"
+ */
+
+#ifndef	_SABP_ProtocolExtensionID_H_
+#define	_SABP_ProtocolExtensionID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_ProtocolExtensionID */
+typedef long	 SABP_ProtocolExtensionID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_ProtocolExtensionID;
+asn_struct_free_f SABP_ProtocolExtensionID_free;
+asn_struct_print_f SABP_ProtocolExtensionID_print;
+asn_constr_check_f SABP_ProtocolExtensionID_constraint;
+ber_type_decoder_f SABP_ProtocolExtensionID_decode_ber;
+der_type_encoder_f SABP_ProtocolExtensionID_encode_der;
+xer_type_decoder_f SABP_ProtocolExtensionID_decode_xer;
+xer_type_encoder_f SABP_ProtocolExtensionID_encode_xer;
+per_type_decoder_f SABP_ProtocolExtensionID_decode_uper;
+per_type_encoder_f SABP_ProtocolExtensionID_encode_uper;
+per_type_decoder_f SABP_ProtocolExtensionID_decode_aper;
+per_type_encoder_f SABP_ProtocolExtensionID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_ProtocolExtensionID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_ProtocolIE-ID.h b/include/osmocom/sabp/SABP_ProtocolIE-ID.h
new file mode 100644
index 0000000..06e8b8d
--- /dev/null
+++ b/include/osmocom/sabp/SABP_ProtocolIE-ID.h
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-CommonDataTypes"
+ * 	found in "../../asn1/sabp/SABP-CommonDataTypes.asn"
+ */
+
+#ifndef	_SABP_ProtocolIE_ID_H_
+#define	_SABP_ProtocolIE_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_ProtocolIE_ID {
+	SABP_ProtocolIE_ID_id_Broadcast_Message_Content	= 0,
+	SABP_ProtocolIE_ID_id_Category	= 1,
+	SABP_ProtocolIE_ID_id_Cause	= 2,
+	SABP_ProtocolIE_ID_id_Data_Coding_Scheme	= 4,
+	SABP_ProtocolIE_ID_id_Failure_List	= 5,
+	SABP_ProtocolIE_ID_id_Message_Identifier	= 6,
+	SABP_ProtocolIE_ID_id_New_Serial_Number	= 7,
+	SABP_ProtocolIE_ID_id_Number_of_Broadcasts_Completed_List	= 8,
+	SABP_ProtocolIE_ID_id_Number_of_Broadcasts_Requested	= 9,
+	SABP_ProtocolIE_ID_id_Old_Serial_Number	= 10,
+	SABP_ProtocolIE_ID_id_Radio_Resource_Loading_List	= 11,
+	SABP_ProtocolIE_ID_id_Recovery_Indication	= 12,
+	SABP_ProtocolIE_ID_id_Repetition_Period	= 13,
+	SABP_ProtocolIE_ID_id_Serial_Number	= 14,
+	SABP_ProtocolIE_ID_id_Service_Areas_List	= 15,
+	SABP_ProtocolIE_ID_id_MessageStructure	= 16,
+	SABP_ProtocolIE_ID_id_TypeOfError	= 17,
+	SABP_ProtocolIE_ID_id_Paging_ETWS_Indicator	= 18,
+	SABP_ProtocolIE_ID_id_Warning_Type	= 19,
+	SABP_ProtocolIE_ID_id_WarningSecurityInfo	= 20,
+	SABP_ProtocolIE_ID_id_Broadcast_Message_Content_Validity_Indicator	= 21
+} e_SABP_ProtocolIE_ID;
+
+/* SABP_ProtocolIE-ID */
+typedef long	 SABP_ProtocolIE_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_ProtocolIE_ID;
+asn_struct_free_f SABP_ProtocolIE_ID_free;
+asn_struct_print_f SABP_ProtocolIE_ID_print;
+asn_constr_check_f SABP_ProtocolIE_ID_constraint;
+ber_type_decoder_f SABP_ProtocolIE_ID_decode_ber;
+der_type_encoder_f SABP_ProtocolIE_ID_encode_der;
+xer_type_decoder_f SABP_ProtocolIE_ID_decode_xer;
+xer_type_encoder_f SABP_ProtocolIE_ID_encode_xer;
+per_type_decoder_f SABP_ProtocolIE_ID_decode_uper;
+per_type_encoder_f SABP_ProtocolIE_ID_encode_uper;
+per_type_decoder_f SABP_ProtocolIE_ID_decode_aper;
+per_type_encoder_f SABP_ProtocolIE_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_ProtocolIE_ID_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Radio-Resource-Loading-List-Item.h b/include/osmocom/sabp/SABP_Radio-Resource-Loading-List-Item.h
new file mode 100644
index 0000000..566b65b
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Radio-Resource-Loading-List-Item.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Radio_Resource_Loading_List_Item_H_
+#define	_SABP_Radio_Resource_Loading_List_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Service-Area-Identifier.h>
+#include <osmocom/sabp/SABP_Available-Bandwidth.h>
+#include <osmocom/sabp/SABP_IE-Extensions.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Radio-Resource-Loading-List-Item */
+typedef struct SABP_Radio_Resource_Loading_List_Item {
+	SABP_Service_Area_Identifier_t	 service_area_identifier;
+	SABP_Available_Bandwidth_t	 available_bandwidth;
+	SABP_IE_Extensions_t	*iE_Extensions	/* OPTIONAL */;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Radio_Resource_Loading_List_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Radio_Resource_Loading_List_Item;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Radio_Resource_Loading_List_Item_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Radio-Resource-Loading-List.h b/include/osmocom/sabp/SABP_Radio-Resource-Loading-List.h
new file mode 100644
index 0000000..011b0bb
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Radio-Resource-Loading-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Radio_Resource_Loading_List_H_
+#define	_SABP_Radio_Resource_Loading_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Radio-Resource-Loading-List-Item.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Radio-Resource-Loading-List */
+typedef struct SABP_Radio_Resource_Loading_List {
+	A_SEQUENCE_OF(SABP_Radio_Resource_Loading_List_Item_t) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Radio_Resource_Loading_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Radio_Resource_Loading_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Radio_Resource_Loading_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Recovery-Indication.h b/include/osmocom/sabp/SABP_Recovery-Indication.h
new file mode 100644
index 0000000..443090f
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Recovery-Indication.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Recovery_Indication_H_
+#define	_SABP_Recovery_Indication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_Recovery_Indication {
+	SABP_Recovery_Indication_data_lost	= 0,
+	SABP_Recovery_Indication_data_available	= 1
+} e_SABP_Recovery_Indication;
+
+/* SABP_Recovery-Indication */
+typedef long	 SABP_Recovery_Indication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Recovery_Indication;
+asn_struct_free_f SABP_Recovery_Indication_free;
+asn_struct_print_f SABP_Recovery_Indication_print;
+asn_constr_check_f SABP_Recovery_Indication_constraint;
+ber_type_decoder_f SABP_Recovery_Indication_decode_ber;
+der_type_encoder_f SABP_Recovery_Indication_encode_der;
+xer_type_decoder_f SABP_Recovery_Indication_decode_xer;
+xer_type_encoder_f SABP_Recovery_Indication_encode_xer;
+per_type_decoder_f SABP_Recovery_Indication_decode_uper;
+per_type_encoder_f SABP_Recovery_Indication_encode_uper;
+per_type_decoder_f SABP_Recovery_Indication_decode_aper;
+per_type_encoder_f SABP_Recovery_Indication_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Recovery_Indication_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Repetition-Period.h b/include/osmocom/sabp/SABP_Repetition-Period.h
new file mode 100644
index 0000000..251c3d2
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Repetition-Period.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Repetition_Period_H_
+#define	_SABP_Repetition_Period_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Repetition-Period */
+typedef long	 SABP_Repetition_Period_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Repetition_Period;
+asn_struct_free_f SABP_Repetition_Period_free;
+asn_struct_print_f SABP_Repetition_Period_print;
+asn_constr_check_f SABP_Repetition_Period_constraint;
+ber_type_decoder_f SABP_Repetition_Period_decode_ber;
+der_type_encoder_f SABP_Repetition_Period_encode_der;
+xer_type_decoder_f SABP_Repetition_Period_decode_xer;
+xer_type_encoder_f SABP_Repetition_Period_encode_xer;
+per_type_decoder_f SABP_Repetition_Period_decode_uper;
+per_type_encoder_f SABP_Repetition_Period_encode_uper;
+per_type_decoder_f SABP_Repetition_Period_decode_aper;
+per_type_encoder_f SABP_Repetition_Period_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Repetition_Period_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_RepetitionNumber0.h b/include/osmocom/sabp/SABP_RepetitionNumber0.h
new file mode 100644
index 0000000..890abc2
--- /dev/null
+++ b/include/osmocom/sabp/SABP_RepetitionNumber0.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_RepetitionNumber0_H_
+#define	_SABP_RepetitionNumber0_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_RepetitionNumber0 */
+typedef long	 SABP_RepetitionNumber0_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_RepetitionNumber0;
+asn_struct_free_f SABP_RepetitionNumber0_free;
+asn_struct_print_f SABP_RepetitionNumber0_print;
+asn_constr_check_f SABP_RepetitionNumber0_constraint;
+ber_type_decoder_f SABP_RepetitionNumber0_decode_ber;
+der_type_encoder_f SABP_RepetitionNumber0_encode_der;
+xer_type_decoder_f SABP_RepetitionNumber0_decode_xer;
+xer_type_encoder_f SABP_RepetitionNumber0_encode_xer;
+per_type_decoder_f SABP_RepetitionNumber0_decode_uper;
+per_type_encoder_f SABP_RepetitionNumber0_encode_uper;
+per_type_decoder_f SABP_RepetitionNumber0_decode_aper;
+per_type_encoder_f SABP_RepetitionNumber0_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_RepetitionNumber0_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_RepetitionNumber1.h b/include/osmocom/sabp/SABP_RepetitionNumber1.h
new file mode 100644
index 0000000..a9ba2eb
--- /dev/null
+++ b/include/osmocom/sabp/SABP_RepetitionNumber1.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_RepetitionNumber1_H_
+#define	_SABP_RepetitionNumber1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_RepetitionNumber1 */
+typedef long	 SABP_RepetitionNumber1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_RepetitionNumber1;
+asn_struct_free_f SABP_RepetitionNumber1_free;
+asn_struct_print_f SABP_RepetitionNumber1_print;
+asn_constr_check_f SABP_RepetitionNumber1_constraint;
+ber_type_decoder_f SABP_RepetitionNumber1_decode_ber;
+der_type_encoder_f SABP_RepetitionNumber1_encode_der;
+xer_type_decoder_f SABP_RepetitionNumber1_decode_xer;
+xer_type_encoder_f SABP_RepetitionNumber1_encode_xer;
+per_type_decoder_f SABP_RepetitionNumber1_decode_uper;
+per_type_encoder_f SABP_RepetitionNumber1_encode_uper;
+per_type_decoder_f SABP_RepetitionNumber1_decode_aper;
+per_type_encoder_f SABP_RepetitionNumber1_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_RepetitionNumber1_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Reset-Complete.h b/include/osmocom/sabp/SABP_Reset-Complete.h
new file mode 100644
index 0000000..db75a83
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Reset-Complete.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Reset_Complete_H_
+#define	_SABP_Reset_Complete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Reset-Complete */
+typedef struct SABP_Reset_Complete {
+	struct reset_Complete_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} reset_Complete_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Reset_Complete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Reset_Complete;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Reset_Complete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Reset-Failure.h b/include/osmocom/sabp/SABP_Reset-Failure.h
new file mode 100644
index 0000000..de0f20d
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Reset-Failure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Reset_Failure_H_
+#define	_SABP_Reset_Failure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Reset-Failure */
+typedef struct SABP_Reset_Failure {
+	struct reset_Failure_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} reset_Failure_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Reset_Failure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Reset_Failure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Reset_Failure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Reset.h b/include/osmocom/sabp/SABP_Reset.h
new file mode 100644
index 0000000..379d455
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Reset.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Reset_H_
+#define	_SABP_Reset_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Reset */
+typedef struct SABP_Reset {
+	struct reset_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} reset_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Reset_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Reset;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Reset_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Restart.h b/include/osmocom/sabp/SABP_Restart.h
new file mode 100644
index 0000000..ee67cca
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Restart.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Restart_H_
+#define	_SABP_Restart_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Restart */
+typedef struct SABP_Restart {
+	struct restart_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} restart_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Restart_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Restart;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Restart_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_SABP-PDU.h b/include/osmocom/sabp/SABP_SABP-PDU.h
new file mode 100644
index 0000000..28d5560
--- /dev/null
+++ b/include/osmocom/sabp/SABP_SABP-PDU.h
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_SABP_PDU_H_
+#define	_SABP_SABP_PDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_InitiatingMessage.h>
+#include <osmocom/sabp/SABP_SuccessfulOutcome.h>
+#include <osmocom/sabp/SABP_UnsuccessfulOutcome.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_SABP_PDU_PR {
+	SABP_SABP_PDU_PR_NOTHING,	/* No components present */
+	SABP_SABP_PDU_PR_initiatingMessage,
+	SABP_SABP_PDU_PR_successfulOutcome,
+	SABP_SABP_PDU_PR_unsuccessfulOutcome,
+	/* Extensions may appear below */
+	
+} SABP_SABP_PDU_PR;
+
+/* SABP_SABP-PDU */
+typedef struct SABP_SABP_PDU {
+	SABP_SABP_PDU_PR present;
+	union SABP_SABP_PDU_u {
+		SABP_InitiatingMessage_t	 initiatingMessage;
+		SABP_SuccessfulOutcome_t	 successfulOutcome;
+		SABP_UnsuccessfulOutcome_t	 unsuccessfulOutcome;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_SABP_PDU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_SABP_PDU;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_SABP_PDU_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Serial-Number.h b/include/osmocom/sabp/SABP_Serial-Number.h
new file mode 100644
index 0000000..7833942
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Serial-Number.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Serial_Number_H_
+#define	_SABP_Serial_Number_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Serial-Number */
+typedef BIT_STRING_t	 SABP_Serial_Number_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Serial_Number;
+asn_struct_free_f SABP_Serial_Number_free;
+asn_struct_print_f SABP_Serial_Number_print;
+asn_constr_check_f SABP_Serial_Number_constraint;
+ber_type_decoder_f SABP_Serial_Number_decode_ber;
+der_type_encoder_f SABP_Serial_Number_encode_der;
+xer_type_decoder_f SABP_Serial_Number_decode_xer;
+xer_type_encoder_f SABP_Serial_Number_encode_xer;
+per_type_decoder_f SABP_Serial_Number_decode_uper;
+per_type_encoder_f SABP_Serial_Number_encode_uper;
+per_type_decoder_f SABP_Serial_Number_decode_aper;
+per_type_encoder_f SABP_Serial_Number_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Serial_Number_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Service-Area-Identifier.h b/include/osmocom/sabp/SABP_Service-Area-Identifier.h
new file mode 100644
index 0000000..47b9cd4
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Service-Area-Identifier.h
@@ -0,0 +1,39 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Service_Area_Identifier_H_
+#define	_SABP_Service_Area_Identifier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Service-Area-Identifier */
+typedef struct SABP_Service_Area_Identifier {
+	OCTET_STRING_t	 pLMNidentity;
+	OCTET_STRING_t	 lac;
+	OCTET_STRING_t	 sac;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Service_Area_Identifier_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Service_Area_Identifier;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Service_Area_Identifier_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Service-Areas-List.h b/include/osmocom/sabp/SABP_Service-Areas-List.h
new file mode 100644
index 0000000..db56c4a
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Service-Areas-List.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Service_Areas_List_H_
+#define	_SABP_Service_Areas_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_Service-Area-Identifier.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Service-Areas-List */
+typedef struct SABP_Service_Areas_List {
+	A_SEQUENCE_OF(SABP_Service_Area_Identifier_t) list;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Service_Areas_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Service_Areas_List;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Service_Areas_List_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_SuccessfulOutcome.h b/include/osmocom/sabp/SABP_SuccessfulOutcome.h
new file mode 100644
index 0000000..8438bf0
--- /dev/null
+++ b/include/osmocom/sabp/SABP_SuccessfulOutcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_SuccessfulOutcome_H_
+#define	_SABP_SuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_ProcedureCode.h>
+#include <osmocom/sabp/SABP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_SuccessfulOutcome */
+typedef struct SABP_SuccessfulOutcome {
+	SABP_ProcedureCode_t	 procedureCode;
+	SABP_Criticality_t	 criticality;
+	ANY_t	 value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_SuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_SuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_SuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_TriggeringMessage.h b/include/osmocom/sabp/SABP_TriggeringMessage.h
new file mode 100644
index 0000000..9d49726
--- /dev/null
+++ b/include/osmocom/sabp/SABP_TriggeringMessage.h
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-CommonDataTypes"
+ * 	found in "../../asn1/sabp/SABP-CommonDataTypes.asn"
+ */
+
+#ifndef	_SABP_TriggeringMessage_H_
+#define	_SABP_TriggeringMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_TriggeringMessage {
+	SABP_TriggeringMessage_initiating_message	= 0,
+	SABP_TriggeringMessage_successful_outcome	= 1,
+	SABP_TriggeringMessage_unsuccessful_outcome	= 2,
+	SABP_TriggeringMessage_outcome	= 3
+} e_SABP_TriggeringMessage;
+
+/* SABP_TriggeringMessage */
+typedef long	 SABP_TriggeringMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_TriggeringMessage;
+asn_struct_free_f SABP_TriggeringMessage_free;
+asn_struct_print_f SABP_TriggeringMessage_print;
+asn_constr_check_f SABP_TriggeringMessage_constraint;
+ber_type_decoder_f SABP_TriggeringMessage_decode_ber;
+der_type_encoder_f SABP_TriggeringMessage_encode_der;
+xer_type_decoder_f SABP_TriggeringMessage_decode_xer;
+xer_type_encoder_f SABP_TriggeringMessage_encode_xer;
+per_type_decoder_f SABP_TriggeringMessage_decode_uper;
+per_type_encoder_f SABP_TriggeringMessage_encode_uper;
+per_type_decoder_f SABP_TriggeringMessage_decode_aper;
+per_type_encoder_f SABP_TriggeringMessage_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_TriggeringMessage_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_TypeOfError.h b/include/osmocom/sabp/SABP_TypeOfError.h
new file mode 100644
index 0000000..f303195
--- /dev/null
+++ b/include/osmocom/sabp/SABP_TypeOfError.h
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_TypeOfError_H_
+#define	_SABP_TypeOfError_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SABP_TypeOfError {
+	SABP_TypeOfError_not_understood	= 0,
+	SABP_TypeOfError_missing	= 1
+	/*
+	 * Enumeration is extensible
+	 */
+} e_SABP_TypeOfError;
+
+/* SABP_TypeOfError */
+typedef long	 SABP_TypeOfError_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_TypeOfError;
+asn_struct_free_f SABP_TypeOfError_free;
+asn_struct_print_f SABP_TypeOfError_print;
+asn_constr_check_f SABP_TypeOfError_constraint;
+ber_type_decoder_f SABP_TypeOfError_decode_ber;
+der_type_encoder_f SABP_TypeOfError_encode_der;
+xer_type_decoder_f SABP_TypeOfError_decode_xer;
+xer_type_encoder_f SABP_TypeOfError_encode_xer;
+per_type_decoder_f SABP_TypeOfError_decode_uper;
+per_type_encoder_f SABP_TypeOfError_encode_uper;
+per_type_decoder_f SABP_TypeOfError_decode_aper;
+per_type_encoder_f SABP_TypeOfError_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_TypeOfError_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_UnsuccessfulOutcome.h b/include/osmocom/sabp/SABP_UnsuccessfulOutcome.h
new file mode 100644
index 0000000..fe2059c
--- /dev/null
+++ b/include/osmocom/sabp/SABP_UnsuccessfulOutcome.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_UnsuccessfulOutcome_H_
+#define	_SABP_UnsuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_ProcedureCode.h>
+#include <osmocom/sabp/SABP_Criticality.h>
+#include <ANY.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_UnsuccessfulOutcome */
+typedef struct SABP_UnsuccessfulOutcome {
+	SABP_ProcedureCode_t	 procedureCode;
+	SABP_Criticality_t	 criticality;
+	ANY_t	 value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_UnsuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_UnsuccessfulOutcome;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_UnsuccessfulOutcome_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Warning-Type.h b/include/osmocom/sabp/SABP_Warning-Type.h
new file mode 100644
index 0000000..11534b5
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Warning-Type.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_Warning_Type_H_
+#define	_SABP_Warning_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Warning-Type */
+typedef OCTET_STRING_t	 SABP_Warning_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Warning_Type;
+asn_struct_free_f SABP_Warning_Type_free;
+asn_struct_print_f SABP_Warning_Type_print;
+asn_constr_check_f SABP_Warning_Type_constraint;
+ber_type_decoder_f SABP_Warning_Type_decode_ber;
+der_type_encoder_f SABP_Warning_Type_encode_der;
+xer_type_decoder_f SABP_Warning_Type_decode_xer;
+xer_type_encoder_f SABP_Warning_Type_encode_xer;
+per_type_decoder_f SABP_Warning_Type_decode_uper;
+per_type_encoder_f SABP_Warning_Type_encode_uper;
+per_type_decoder_f SABP_Warning_Type_decode_aper;
+per_type_encoder_f SABP_Warning_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Warning_Type_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_WarningSecurityInfo.h b/include/osmocom/sabp/SABP_WarningSecurityInfo.h
new file mode 100644
index 0000000..bb79a2a
--- /dev/null
+++ b/include/osmocom/sabp/SABP_WarningSecurityInfo.h
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-IEs"
+ * 	found in "../../asn1/sabp/SABP-IEs.asn"
+ */
+
+#ifndef	_SABP_WarningSecurityInfo_H_
+#define	_SABP_WarningSecurityInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_WarningSecurityInfo */
+typedef OCTET_STRING_t	 SABP_WarningSecurityInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_WarningSecurityInfo;
+asn_struct_free_f SABP_WarningSecurityInfo_free;
+asn_struct_print_f SABP_WarningSecurityInfo_print;
+asn_constr_check_f SABP_WarningSecurityInfo_constraint;
+ber_type_decoder_f SABP_WarningSecurityInfo_decode_ber;
+der_type_encoder_f SABP_WarningSecurityInfo_encode_der;
+xer_type_decoder_f SABP_WarningSecurityInfo_decode_xer;
+xer_type_encoder_f SABP_WarningSecurityInfo_encode_xer;
+per_type_decoder_f SABP_WarningSecurityInfo_decode_uper;
+per_type_encoder_f SABP_WarningSecurityInfo_encode_uper;
+per_type_decoder_f SABP_WarningSecurityInfo_decode_aper;
+per_type_encoder_f SABP_WarningSecurityInfo_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_WarningSecurityInfo_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Write-Replace-Complete.h b/include/osmocom/sabp/SABP_Write-Replace-Complete.h
new file mode 100644
index 0000000..d118f98
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Write-Replace-Complete.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Write_Replace_Complete_H_
+#define	_SABP_Write_Replace_Complete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Write-Replace-Complete */
+typedef struct SABP_Write_Replace_Complete {
+	struct write_Replace_Complete_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} write_Replace_Complete_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Write_Replace_Complete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Write_Replace_Complete;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Write_Replace_Complete_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Write-Replace-Failure.h b/include/osmocom/sabp/SABP_Write-Replace-Failure.h
new file mode 100644
index 0000000..99e8400
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Write-Replace-Failure.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Write_Replace_Failure_H_
+#define	_SABP_Write_Replace_Failure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Write-Replace-Failure */
+typedef struct SABP_Write_Replace_Failure {
+	struct write_Replace_Failure_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} write_Replace_Failure_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Write_Replace_Failure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Write_Replace_Failure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Write_Replace_Failure_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/SABP_Write-Replace.h b/include/osmocom/sabp/SABP_Write-Replace.h
new file mode 100644
index 0000000..1c895d5
--- /dev/null
+++ b/include/osmocom/sabp/SABP_Write-Replace.h
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "SABP-PDU"
+ * 	found in "../../asn1/sabp/SABP-PDU.asn"
+ */
+
+#ifndef	_SABP_Write_Replace_H_
+#define	_SABP_Write_Replace_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/sabp/SABP_IE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SABP_Write-Replace */
+typedef struct SABP_Write_Replace {
+	struct write_Replace_ies {
+		A_SEQUENCE_OF(SABP_IE_t) list;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} write_Replace_ies;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SABP_Write_Replace_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SABP_Write_Replace;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SABP_Write_Replace_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/sabp/sabp_common.h b/include/osmocom/sabp/sabp_common.h
new file mode 100644
index 0000000..717247c
--- /dev/null
+++ b/include/osmocom/sabp/sabp_common.h
@@ -0,0 +1,104 @@
+#pragma once
+
+#include <asn1c/asn_application.h>
+
+#include <osmocom/sabp/SABP_Available-Bandwidth.h>
+#include <osmocom/sabp/SABP_Broadcast-Message-Content-Validity-Indicator.h>
+#include <osmocom/sabp/SABP_Broadcast-Message-Content.h>
+#include <osmocom/sabp/SABP_Category.h>
+#include <osmocom/sabp/SABP_Cause.h>
+#include <osmocom/sabp/SABP_Criticality-Diagnostics.h>
+#include <osmocom/sabp/SABP_Criticality.h>
+#include <osmocom/sabp/SABP_CriticalityDiagnostics-IE-List.h>
+#include <osmocom/sabp/SABP_Data-Coding-Scheme.h>
+#include <osmocom/sabp/SABP_Error-Indication.h>
+#include <osmocom/sabp/SABP_Failure-List-Item.h>
+#include <osmocom/sabp/SABP_Failure-List.h>
+#include <osmocom/sabp/SABP_Failure.h>
+#include <osmocom/sabp/SABP_IE-Extensions.h>
+#include <osmocom/sabp/SABP_IE.h>
+#include <osmocom/sabp/SABP_InitiatingMessage.h>
+#include <osmocom/sabp/SABP_Kill-Complete.h>
+#include <osmocom/sabp/SABP_Kill-Failure.h>
+#include <osmocom/sabp/SABP_Kill.h>
+#include <osmocom/sabp/SABP_Load-Query-Complete.h>
+#include <osmocom/sabp/SABP_Load-Query-Failure.h>
+#include <osmocom/sabp/SABP_Load-Query.h>
+#include <osmocom/sabp/SABP_Message-Identifier.h>
+#include <osmocom/sabp/SABP_Message-Status-Query-Complete.h>
+#include <osmocom/sabp/SABP_Message-Status-Query-Failure.h>
+#include <osmocom/sabp/SABP_Message-Status-Query.h>
+#include <osmocom/sabp/SABP_MessageStructure.h>
+#include <osmocom/sabp/SABP_New-Serial-Number.h>
+#include <osmocom/sabp/SABP_Number-Of-Broadcasts-Completed-Info.h>
+#include <osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List-Item.h>
+#include <osmocom/sabp/SABP_Number-of-Broadcasts-Completed-List.h>
+#include <osmocom/sabp/SABP_Number-of-Broadcasts-Requested.h>
+#include <osmocom/sabp/SABP_Old-Serial-Number.h>
+#include <osmocom/sabp/SABP_Paging-ETWS-Indicator.h>
+#include <osmocom/sabp/SABP_Presence.h>
+#include <osmocom/sabp/SABP_ProcedureCode.h>
+#include <osmocom/sabp/SABP_ProtocolExtensionID.h>
+#include <osmocom/sabp/SABP_ProtocolIE-ID.h>
+#include <osmocom/sabp/SABP_Radio-Resource-Loading-List-Item.h>
+#include <osmocom/sabp/SABP_Radio-Resource-Loading-List.h>
+#include <osmocom/sabp/SABP_Recovery-Indication.h>
+#include <osmocom/sabp/SABP_Repetition-Period.h>
+#include <osmocom/sabp/SABP_RepetitionNumber0.h>
+#include <osmocom/sabp/SABP_RepetitionNumber1.h>
+#include <osmocom/sabp/SABP_Reset-Complete.h>
+#include <osmocom/sabp/SABP_Reset-Failure.h>
+#include <osmocom/sabp/SABP_Reset.h>
+#include <osmocom/sabp/SABP_Restart.h>
+#include <osmocom/sabp/SABP_SABP-PDU.h>
+#include <osmocom/sabp/SABP_Serial-Number.h>
+#include <osmocom/sabp/SABP_Service-Area-Identifier.h>
+#include <osmocom/sabp/SABP_Service-Areas-List.h>
+#include <osmocom/sabp/SABP_SuccessfulOutcome.h>
+#include <osmocom/sabp/SABP_TriggeringMessage.h>
+#include <osmocom/sabp/SABP_TypeOfError.h>
+#include <osmocom/sabp/SABP_UnsuccessfulOutcome.h>
+#include <osmocom/sabp/SABP_Warning-Type.h>
+#include <osmocom/sabp/SABP_WarningSecurityInfo.h>
+#include <osmocom/sabp/SABP_Write-Replace-Complete.h>
+#include <osmocom/sabp/SABP_Write-Replace-Failure.h>
+#include <osmocom/sabp/SABP_Write-Replace.h>
+
+#if (ASN1C_ENVIRONMENT_VERSION < 924)
+# error "You are compiling with the wrong version of ASN1C"
+#endif
+
+#include <osmocom/core/logging.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/sabp/sabp_ies_defs.h>
+
+#define SABP_DEBUG(x, args ...) DEBUGP(_sabp_DSABP, x, ## args)
+extern int _sabp_DSABP;
+
+extern int asn1_xer_print;
+
+extern const struct value_string sabp_presence_vals[];
+extern const struct value_string sabp_procedure_code_vals[];
+extern const struct value_string sabp_cause_vals[];
+
+struct msgb *sabp_generate_initiating_message(e_SABP_ProcedureCode procedureCode,
+					  SABP_Criticality_t criticality,
+					  asn_TYPE_descriptor_t *td, void *sptr);
+
+struct msgb *sabp_generate_successful_outcome(
+					   e_SABP_ProcedureCode procedureCode,
+					   SABP_Criticality_t criticality,
+					   asn_TYPE_descriptor_t * td,
+					   void *sptr);
+
+struct msgb *sabp_generate_unsuccessful_outcome(
+					e_SABP_ProcedureCode procedureCode,
+					SABP_Criticality_t criticality,
+					asn_TYPE_descriptor_t * td,
+					void *sptr);
+
+SABP_IE_t *sabp_new_ie(SABP_ProtocolIE_ID_t id,
+			SABP_Criticality_t criticality,
+			asn_TYPE_descriptor_t * type, void *sptr);
+
+void sabp_set_log_area(int log_area);