This patch needs to be applied to the asn1c output in order to
make sure we don't re-define the 'user_information' for every different
Dialogue portion PDU type and to make the EXTERNAL magic work
diff -Nru /usr/local/include/osmocom/tcap//AARE-apdu.h ./AARE-apdu.h
--- /usr/local/include/osmocom/tcap//AARE-apdu.h	2010-07-16 12:50:01.000000000 +0200
+++ ./AARE-apdu.h	2010-07-09 15:40:49.000000000 +0200
@@ -15,7 +15,7 @@
 #include <OBJECT_IDENTIFIER.h>
 #include "Associate-result.h"
 #include "Associate-source-diagnostic.h"
-#include "EXTERNAL.h"
+#include <EXTERNAL.h>
 #include <asn_SEQUENCE_OF.h>
 #include <constr_SEQUENCE_OF.h>
 #include <constr_SEQUENCE.h>
@@ -35,17 +35,12 @@
 	OBJECT_IDENTIFIER_t	 application_context_name;
 	Associate_result_t	 result;
 	Associate_source_diagnostic_t	 result_source_diagnostic;
-#if 0
 	struct AARE_user_information {
 		A_SEQUENCE_OF(EXTERNAL_t) list;
 		
 		/* Context for parsing across buffer boundaries */
 		asn_struct_ctx_t _asn_ctx;
 	} *user_information;
-#else
-	/* use the definition from ABRT-apdu.h */
-	struct user_information *user_information;
-#endif
 	
 	/* Context for parsing across buffer boundaries */
 	asn_struct_ctx_t _asn_ctx;
diff -Nru /usr/local/include/osmocom/tcap//AARQ-apdu.h ./AARQ-apdu.h
--- /usr/local/include/osmocom/tcap//AARQ-apdu.h	2010-07-16 12:50:00.000000000 +0200
+++ ./AARQ-apdu.h	2010-07-09 15:40:49.000000000 +0200
@@ -13,7 +13,7 @@
 /* Including external dependencies */
 #include <BIT_STRING.h>
 #include <OBJECT_IDENTIFIER.h>
-#include "EXTERNAL.h"
+#include <EXTERNAL.h>
 #include <asn_SEQUENCE_OF.h>
 #include <constr_SEQUENCE_OF.h>
 #include <constr_SEQUENCE.h>
@@ -26,17 +26,12 @@
 typedef struct AARQ_apdu {
 	BIT_STRING_t	*protocol_version	/* DEFAULT {version1} */;
 	OBJECT_IDENTIFIER_t	 application_context_name;
-#if 0
 	struct AARQ_user_information {
 		A_SEQUENCE_OF(EXTERNAL_t) list;
 		
 		/* Context for parsing across buffer boundaries */
 		asn_struct_ctx_t _asn_ctx;
 	} *user_information;
-#else
-	/* use the definition from ABRT-apdu.h */
-	struct user_information *user_information;
-#endif
 	
 	/* Context for parsing across buffer boundaries */
 	asn_struct_ctx_t _asn_ctx;
diff -Nru /usr/local/include/osmocom/tcap//ABRT-apdu.h ./ABRT-apdu.h
--- /usr/local/include/osmocom/tcap//ABRT-apdu.h	2010-07-16 12:50:02.000000000 +0200
+++ ./ABRT-apdu.h	2010-07-09 15:40:49.000000000 +0200
@@ -12,7 +12,7 @@
 
 /* Including external dependencies */
 #include "ABRT-source.h"
-#include "EXTERNAL.h"
+#include <EXTERNAL.h>
 #include <asn_SEQUENCE_OF.h>
 #include <constr_SEQUENCE_OF.h>
 #include <constr_SEQUENCE.h>
diff -Nru /usr/local/include/osmocom/tcap//AUDT-apdu.h ./AUDT-apdu.h
--- /usr/local/include/osmocom/tcap//AUDT-apdu.h	2010-07-17 00:09:36.000000000 +0200
+++ ./AUDT-apdu.h	2010-07-09 15:40:49.000000000 +0200
@@ -13,7 +13,7 @@
 /* Including external dependencies */
 #include <BIT_STRING.h>
 #include <OBJECT_IDENTIFIER.h>
-#include "EXTERNAL.h"
+#include <EXTERNAL.h>
 #include <asn_SEQUENCE_OF.h>
 #include <constr_SEQUENCE_OF.h>
 #include <constr_SEQUENCE.h>
@@ -26,16 +26,12 @@
 typedef struct AUDT_apdu {
 	BIT_STRING_t	*protocol_version	/* DEFAULT {version1} */;
 	OBJECT_IDENTIFIER_t	 application_context_name;
-#if 0
 	struct user_information {
 		A_SEQUENCE_OF(EXTERNAL_t) list;
 		
 		/* Context for parsing across buffer boundaries */
 		asn_struct_ctx_t _asn_ctx;
 	} *user_information;
-#else
-	struct user_information *user_information;
-#endif
 	
 	/* Context for parsing across buffer boundaries */
 	asn_struct_ctx_t _asn_ctx;

diff --git a/src/AARE-apdu.c b/src/AARE-apdu.c
index c560c0e..5d1e35a 100644
--- a/src/AARE-apdu.c
+++ b/src/AARE-apdu.c
@@ -7,6 +7,7 @@
 #include <asn_internal.h>
 
 #include "AARE-apdu.h"
+#include "ABRT-apdu.h"
 
 static asn_TYPE_member_t asn_MBR_user_information_7[] = {
 	{ ATF_POINTER, 0, 0,
@@ -24,8 +25,8 @@ static ber_tlv_tag_t asn_DEF_user_information_tags_7[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static asn_SET_OF_specifics_t asn_SPC_user_information_specs_7 = {
-	sizeof(struct AARE_user_information),
-	offsetof(struct AARE_user_information, _asn_ctx),
+	sizeof(struct user_information),
+	offsetof(struct user_information, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
diff --git a/src/AARQ-apdu.c b/src/AARQ-apdu.c
index f8de6f4..2e5ce4f 100644
--- a/src/AARQ-apdu.c
+++ b/src/AARQ-apdu.c
@@ -7,6 +7,7 @@
 #include <asn_internal.h>
 
 #include "AARQ-apdu.h"
+#include "ABRT-apdu.h"
 
 static asn_TYPE_member_t asn_MBR_user_information_5[] = {
 	{ ATF_POINTER, 0, 0,
@@ -24,8 +25,8 @@ static ber_tlv_tag_t asn_DEF_user_information_tags_5[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static asn_SET_OF_specifics_t asn_SPC_user_information_specs_5 = {
-	sizeof(struct AARQ_user_information),
-	offsetof(struct AARQ_user_information, _asn_ctx),
+	sizeof(struct user_information),
+	offsetof(struct user_information, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
diff --git a/src/AUDT-apdu.c b/src/AUDT-apdu.c
index 1ec47fc..81f63c2 100644
--- a/src/AUDT-apdu.c
+++ b/src/AUDT-apdu.c
@@ -7,6 +7,7 @@
 #include <asn_internal.h>
 
 #include "AUDT-apdu.h"
+#include "ABRT-apdu.h"
 
 static asn_TYPE_member_t asn_MBR_user_information_5[] = {
 	{ ATF_POINTER, 0, 0,
