diff --git a/3rdparty/libe2ap/Interface-ID.h b/3rdparty/libe2ap/Interface-ID.h
new file mode 100644
index 0000000..211438b
--- /dev/null
+++ b/3rdparty/libe2ap/Interface-ID.h
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-gNB-X2-IEs"
+ * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
+ * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
+ */
+
+#ifndef	_Interface_ID_H_
+#define	_Interface_ID_H_
+
+
+#include "asn_application.h"
+
+/* Including external dependencies */
+#include "GlobalENB-ID.h"
+#include "GlobalGNB-ID.h"
+#include "constr_CHOICE.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Interface_ID_PR {
+	Interface_ID_PR_NOTHING,	/* No components present */
+	Interface_ID_PR_global_eNB_ID,
+	Interface_ID_PR_global_gNB_ID
+	/* Extensions may appear below */
+	
+} Interface_ID_PR;
+
+/* Interface-ID */
+typedef struct Interface_ID {
+	Interface_ID_PR present;
+	union Interface_ID_u {
+		GlobalENB_ID_t	 global_eNB_ID;
+		GlobalGNB_ID_t	 global_gNB_ID;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} Interface_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Interface_ID;
+extern asn_CHOICE_specifics_t asn_SPC_Interface_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_Interface_ID_1[2];
+extern asn_per_constraints_t asn_PER_type_Interface_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _Interface_ID_H_ */
+#include "asn_internal.h"
