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);
