From 48bfee5fad0e46f4f18d46285efceba39e897482 Mon Sep 17 00:00:00 2001
From: Jing Min Zhao <zhaojingmin@users.sourceforge.net>
Date: Thu, 6 Apr 2006 14:13:42 -0700
Subject: [NETFILTER]: H.323 helper: move some function prototypes to
 ip_conntrack_h323.h

Move prototypes of NAT callbacks to ip_conntrack_h323.h. Because the
use of typedefs as arguments, some header files need to be moved as
well.

Signed-off-by: Jing Min Zhao <zhaojingmin@users.sourceforge.net>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
 include/linux/netfilter_ipv4/ip_conntrack_h323.h   |  52 ++
 .../netfilter_ipv4/ip_conntrack_helper_h323_asn1.h |  98 +++
 .../ip_conntrack_helper_h323_types.h               | 938 +++++++++++++++++++++
 net/ipv4/netfilter/ip_conntrack_helper_h323.c      |   2 -
 net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c |   2 +-
 net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h |  98 ---
 .../netfilter/ip_conntrack_helper_h323_types.h     | 938 ---------------------
 net/ipv4/netfilter/ip_nat_helper_h323.c            |  53 --
 8 files changed, 1089 insertions(+), 1092 deletions(-)
 create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
 create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h
 delete mode 100644 net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h
 delete mode 100644 net/ipv4/netfilter/ip_conntrack_helper_h323_types.h

diff --git a/include/linux/netfilter_ipv4/ip_conntrack_h323.h b/include/linux/netfilter_ipv4/ip_conntrack_h323.h
index 0987cea5384..eace86bd2ad 100644
--- a/include/linux/netfilter_ipv4/ip_conntrack_h323.h
+++ b/include/linux/netfilter_ipv4/ip_conntrack_h323.h
@@ -3,6 +3,8 @@
 
 #ifdef __KERNEL__
 
+#include <linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h>
+
 #define RAS_PORT 1719
 #define Q931_PORT 1720
 #define H323_RTP_CHANNEL_MAX 4	/* Audio, video, FAX and other */
@@ -25,6 +27,56 @@ struct ip_ct_h323_master {
 	};
 };
 
+struct ip_conntrack_expect;
+
+extern int get_h225_addr(unsigned char *data, TransportAddress * addr,
+			 u_int32_t * ip, u_int16_t * port);
+extern void ip_conntrack_h245_expect(struct ip_conntrack *new,
+				     struct ip_conntrack_expect *this);
+extern void ip_conntrack_q931_expect(struct ip_conntrack *new,
+				     struct ip_conntrack_expect *this);
+extern int (*set_h245_addr_hook) (struct sk_buff ** pskb,
+				  unsigned char **data, int dataoff,
+				  H245_TransportAddress * addr,
+				  u_int32_t ip, u_int16_t port);
+extern int (*set_h225_addr_hook) (struct sk_buff ** pskb,
+				  unsigned char **data, int dataoff,
+				  TransportAddress * addr,
+				  u_int32_t ip, u_int16_t port);
+extern int (*set_sig_addr_hook) (struct sk_buff ** pskb,
+				 struct ip_conntrack * ct,
+				 enum ip_conntrack_info ctinfo,
+				 unsigned char **data,
+				 TransportAddress * addr, int count);
+extern int (*set_ras_addr_hook) (struct sk_buff ** pskb,
+				 struct ip_conntrack * ct,
+				 enum ip_conntrack_info ctinfo,
+				 unsigned char **data,
+				 TransportAddress * addr, int count);
+extern int (*nat_rtp_rtcp_hook) (struct sk_buff ** pskb,
+				 struct ip_conntrack * ct,
+				 enum ip_conntrack_info ctinfo,
+				 unsigned char **data, int dataoff,
+				 H245_TransportAddress * addr,
+				 u_int16_t port, u_int16_t rtp_port,
+				 struct ip_conntrack_expect * rtp_exp,
+				 struct ip_conntrack_expect * rtcp_exp);
+extern int (*nat_t120_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
+			     enum ip_conntrack_info ctinfo,
+			     unsigned char **data, int dataoff,
+			     H245_TransportAddress * addr, u_int16_t port,
+			     struct ip_conntrack_expect * exp);
+extern int (*nat_h245_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
+			     enum ip_conntrack_info ctinfo,
+			     unsigned char **data, int dataoff,
+			     TransportAddress * addr, u_int16_t port,
+			     struct ip_conntrack_expect * exp);
+extern int (*nat_q931_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
+			     enum ip_conntrack_info ctinfo,
+			     unsigned char **data, TransportAddress * addr,
+			     int idx, u_int16_t port,
+			     struct ip_conntrack_expect * exp);
+
 #endif
 
 #endif
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
new file mode 100644
index 00000000000..0bd828081c0
--- /dev/null
+++ b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+ * ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
+ * 			      	     conntrack/NAT module.
+ *
+ * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com>
+ *
+ * This source code is licensed under General Public License version 2.
+ *
+ *
+ * This library is based on H.225 version 4, H.235 version 2 and H.245
+ * version 7. It is extremely optimized to decode only the absolutely
+ * necessary objects in a signal for Linux kernel NAT module use, so don't
+ * expect it to be a full ASN.1 library.
+ *
+ * Features:
+ *
+ * 1. Small. The total size of code plus data is less than 20 KB (IA32).
+ * 2. Fast. Decoding Netmeeting's Setup signal 1 million times on a PIII 866
+ *    takes only 3.9 seconds.
+ * 3. No memory allocation. It uses a static object. No need to initialize or
+ *    cleanup.
+ * 4. Thread safe.
+ * 5. Support embedded architectures that has no misaligned memory access
+ *    support.
+ *
+ * Limitations:
+ *
+ * 1. At most 30 faststart entries. Actually this is limited by ethernet's MTU.
+ *    If a Setup signal contains more than 30 faststart, the packet size will
+ *    very likely exceed the MTU size, then the TPKT will be fragmented. I
+ *    don't know how to handle this in a Netfilter module. Anybody can help?
+ *    Although I think 30 is enough for most of the cases.
+ * 2. IPv4 addresses only.
+ *
+ ****************************************************************************/
+
+#ifndef _IP_CONNTRACK_HELPER_H323_ASN1_H_
+#define _IP_CONNTRACK_HELPER_H323_ASN1_H_
+
+/*****************************************************************************
+ * H.323 Types
+ ****************************************************************************/
+#include "ip_conntrack_helper_h323_types.h"
+
+typedef struct {
+	enum {
+		Q931_NationalEscape = 0x00,
+		Q931_Alerting = 0x01,
+		Q931_CallProceeding = 0x02,
+		Q931_Connect = 0x07,
+		Q931_ConnectAck = 0x0F,
+		Q931_Progress = 0x03,
+		Q931_Setup = 0x05,
+		Q931_SetupAck = 0x0D,
+		Q931_Resume = 0x26,
+		Q931_ResumeAck = 0x2E,
+		Q931_ResumeReject = 0x22,
+		Q931_Suspend = 0x25,
+		Q931_SuspendAck = 0x2D,
+		Q931_SuspendReject = 0x21,
+		Q931_UserInformation = 0x20,
+		Q931_Disconnect = 0x45,
+		Q931_Release = 0x4D,
+		Q931_ReleaseComplete = 0x5A,
+		Q931_Restart = 0x46,
+		Q931_RestartAck = 0x4E,
+		Q931_Segment = 0x60,
+		Q931_CongestionCtrl = 0x79,
+		Q931_Information = 0x7B,
+		Q931_Notify = 0x6E,
+		Q931_Status = 0x7D,
+		Q931_StatusEnquiry = 0x75,
+		Q931_Facility = 0x62
+	} MessageType;
+	H323_UserInformation UUIE;
+} Q931;
+
+/*****************************************************************************
+ * Decode Functions Return Codes
+ ****************************************************************************/
+
+#define H323_ERROR_NONE 0	/* Decoded successfully */
+#define H323_ERROR_STOP 1	/* Decoding stopped, not really an error */
+#define H323_ERROR_BOUND -1
+#define H323_ERROR_RANGE -2
+
+
+/*****************************************************************************
+ * Decode Functions
+ ****************************************************************************/
+
+int DecodeRasMessage(unsigned char *buf, size_t sz, RasMessage * ras);
+int DecodeQ931(unsigned char *buf, size_t sz, Q931 * q931);
+int DecodeMultimediaSystemControlMessage(unsigned char *buf, size_t sz,
+					 MultimediaSystemControlMessage *
+					 mscm);
+
+#endif
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h
new file mode 100644
index 00000000000..cc98f7aa5ab
--- /dev/null
+++ b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_types.h
@@ -0,0 +1,938 @@
+/* Generated by Jing Min Zhao's ASN.1 parser, Mar 15 2006
+ *
+ * Copyright (c) 2006 Jing Min Zhao <zhaojingmin@users.sourceforge.net>
+ *
+ * This source code is licensed under General Public License version 2.
+ */
+
+typedef struct TransportAddress_ipAddress {	/* SEQUENCE */
+	int options;		/* No use */
+	unsigned ip;
+} TransportAddress_ipAddress;
+
+typedef struct TransportAddress {	/* CHOICE */
+	enum {
+		eTransportAddress_ipAddress,
+		eTransportAddress_ipSourceRoute,
+		eTransportAddress_ipxAddress,
+		eTransportAddress_ip6Address,
+		eTransportAddress_netBios,
+		eTransportAddress_nsap,
+		eTransportAddress_nonStandardAddress,
+	} choice;
+	union {
+		TransportAddress_ipAddress ipAddress;
+	};
+} TransportAddress;
+
+typedef struct DataProtocolCapability {	/* CHOICE */
+	enum {
+		eDataProtocolCapability_nonStandard,
+		eDataProtocolCapability_v14buffered,
+		eDataProtocolCapability_v42lapm,
+		eDataProtocolCapability_hdlcFrameTunnelling,
+		eDataProtocolCapability_h310SeparateVCStack,
+		eDataProtocolCapability_h310SingleVCStack,
+		eDataProtocolCapability_transparent,
+		eDataProtocolCapability_segmentationAndReassembly,
+		eDataProtocolCapability_hdlcFrameTunnelingwSAR,
+		eDataProtocolCapability_v120,
+		eDataProtocolCapability_separateLANStack,
+		eDataProtocolCapability_v76wCompression,
+		eDataProtocolCapability_tcp,
+		eDataProtocolCapability_udp,
+	} choice;
+} DataProtocolCapability;
+
+typedef struct DataApplicationCapability_application {	/* CHOICE */
+	enum {
+		eDataApplicationCapability_application_nonStandard,
+		eDataApplicationCapability_application_t120,
+		eDataApplicationCapability_application_dsm_cc,
+		eDataApplicationCapability_application_userData,
+		eDataApplicationCapability_application_t84,
+		eDataApplicationCapability_application_t434,
+		eDataApplicationCapability_application_h224,
+		eDataApplicationCapability_application_nlpid,
+		eDataApplicationCapability_application_dsvdControl,
+		eDataApplicationCapability_application_h222DataPartitioning,
+		eDataApplicationCapability_application_t30fax,
+		eDataApplicationCapability_application_t140,
+		eDataApplicationCapability_application_t38fax,
+		eDataApplicationCapability_application_genericDataCapability,
+	} choice;
+	union {
+		DataProtocolCapability t120;
+	};
+} DataApplicationCapability_application;
+
+typedef struct DataApplicationCapability {	/* SEQUENCE */
+	int options;		/* No use */
+	DataApplicationCapability_application application;
+} DataApplicationCapability;
+
+typedef struct DataType {	/* CHOICE */
+	enum {
+		eDataType_nonStandard,
+		eDataType_nullData,
+		eDataType_videoData,
+		eDataType_audioData,
+		eDataType_data,
+		eDataType_encryptionData,
+		eDataType_h235Control,
+		eDataType_h235Media,
+		eDataType_multiplexedStream,
+	} choice;
+	union {
+		DataApplicationCapability data;
+	};
+} DataType;
+
+typedef struct UnicastAddress_iPAddress {	/* SEQUENCE */
+	int options;		/* No use */
+	unsigned network;
+} UnicastAddress_iPAddress;
+
+typedef struct UnicastAddress {	/* CHOICE */
+	enum {
+		eUnicastAddress_iPAddress,
+		eUnicastAddress_iPXAddress,
+		eUnicastAddress_iP6Address,
+		eUnicastAddress_netBios,
+		eUnicastAddress_iPSourceRouteAddress,
+		eUnicastAddress_nsap,
+		eUnicastAddress_nonStandardAddress,
+	} choice;
+	union {
+		UnicastAddress_iPAddress iPAddress;
+	};
+} UnicastAddress;
+
+typedef struct H245_TransportAddress {	/* CHOICE */
+	enum {
+		eH245_TransportAddress_unicastAddress,
+		eH245_TransportAddress_multicastAddress,
+	} choice;
+	union {
+		UnicastAddress unicastAddress;
+	};
+} H245_TransportAddress;
+
+typedef struct H2250LogicalChannelParameters {	/* SEQUENCE */
+	enum {
+		eH2250LogicalChannelParameters_nonStandard = (1 << 31),
+		eH2250LogicalChannelParameters_associatedSessionID =
+		    (1 << 30),
+		eH2250LogicalChannelParameters_mediaChannel = (1 << 29),
+		eH2250LogicalChannelParameters_mediaGuaranteedDelivery =
+		    (1 << 28),
+		eH2250LogicalChannelParameters_mediaControlChannel =
+		    (1 << 27),
+		eH2250LogicalChannelParameters_mediaControlGuaranteedDelivery
+		    = (1 << 26),
+		eH2250LogicalChannelParameters_silenceSuppression = (1 << 25),
+		eH2250LogicalChannelParameters_destination = (1 << 24),
+		eH2250LogicalChannelParameters_dynamicRTPPayloadType =
+		    (1 << 23),
+		eH2250LogicalChannelParameters_mediaPacketization = (1 << 22),
+		eH2250LogicalChannelParameters_transportCapability =
+		    (1 << 21),
+		eH2250LogicalChannelParameters_redundancyEncoding = (1 << 20),
+		eH2250LogicalChannelParameters_source = (1 << 19),
+	} options;
+	H245_TransportAddress mediaChannel;
+	H245_TransportAddress mediaControlChannel;
+} H2250LogicalChannelParameters;
+
+typedef struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters {	/* CHOICE */
+	enum {
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_none,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+} OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters;
+
+typedef struct OpenLogicalChannel_forwardLogicalChannelParameters {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannel_forwardLogicalChannelParameters_portNumber
+		    = (1 << 31),
+		eOpenLogicalChannel_forwardLogicalChannelParameters_forwardLogicalChannelDependency
+		    = (1 << 30),
+		eOpenLogicalChannel_forwardLogicalChannelParameters_replacementFor
+		    = (1 << 29),
+	} options;
+	DataType dataType;
+	OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters
+	    multiplexParameters;
+} OpenLogicalChannel_forwardLogicalChannelParameters;
+
+typedef struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters {	/* CHOICE */
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+} OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters;
+
+typedef struct OpenLogicalChannel_reverseLogicalChannelParameters {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
+		    = (1 << 31),
+		eOpenLogicalChannel_reverseLogicalChannelParameters_reverseLogicalChannelDependency
+		    = (1 << 30),
+		eOpenLogicalChannel_reverseLogicalChannelParameters_replacementFor
+		    = (1 << 29),
+	} options;
+	OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
+	    multiplexParameters;
+} OpenLogicalChannel_reverseLogicalChannelParameters;
+
+typedef struct NetworkAccessParameters_networkAddress {	/* CHOICE */
+	enum {
+		eNetworkAccessParameters_networkAddress_q2931Address,
+		eNetworkAccessParameters_networkAddress_e164Address,
+		eNetworkAccessParameters_networkAddress_localAreaAddress,
+	} choice;
+	union {
+		H245_TransportAddress localAreaAddress;
+	};
+} NetworkAccessParameters_networkAddress;
+
+typedef struct NetworkAccessParameters {	/* SEQUENCE */
+	enum {
+		eNetworkAccessParameters_distribution = (1 << 31),
+		eNetworkAccessParameters_externalReference = (1 << 30),
+		eNetworkAccessParameters_t120SetupProcedure = (1 << 29),
+	} options;
+	NetworkAccessParameters_networkAddress networkAddress;
+} NetworkAccessParameters;
+
+typedef struct OpenLogicalChannel {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters =
+		    (1 << 31),
+		eOpenLogicalChannel_separateStack = (1 << 30),
+		eOpenLogicalChannel_encryptionSync = (1 << 29),
+	} options;
+	OpenLogicalChannel_forwardLogicalChannelParameters
+	    forwardLogicalChannelParameters;
+	OpenLogicalChannel_reverseLogicalChannelParameters
+	    reverseLogicalChannelParameters;
+	NetworkAccessParameters separateStack;
+} OpenLogicalChannel;
+
+typedef struct Setup_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Setup_UUIE_fastStart;
+
+typedef struct Setup_UUIE {	/* SEQUENCE */
+	enum {
+		eSetup_UUIE_h245Address = (1 << 31),
+		eSetup_UUIE_sourceAddress = (1 << 30),
+		eSetup_UUIE_destinationAddress = (1 << 29),
+		eSetup_UUIE_destCallSignalAddress = (1 << 28),
+		eSetup_UUIE_destExtraCallInfo = (1 << 27),
+		eSetup_UUIE_destExtraCRV = (1 << 26),
+		eSetup_UUIE_callServices = (1 << 25),
+		eSetup_UUIE_sourceCallSignalAddress = (1 << 24),
+		eSetup_UUIE_remoteExtensionAddress = (1 << 23),
+		eSetup_UUIE_callIdentifier = (1 << 22),
+		eSetup_UUIE_h245SecurityCapability = (1 << 21),
+		eSetup_UUIE_tokens = (1 << 20),
+		eSetup_UUIE_cryptoTokens = (1 << 19),
+		eSetup_UUIE_fastStart = (1 << 18),
+		eSetup_UUIE_mediaWaitForConnect = (1 << 17),
+		eSetup_UUIE_canOverlapSend = (1 << 16),
+		eSetup_UUIE_endpointIdentifier = (1 << 15),
+		eSetup_UUIE_multipleCalls = (1 << 14),
+		eSetup_UUIE_maintainConnection = (1 << 13),
+		eSetup_UUIE_connectionParameters = (1 << 12),
+		eSetup_UUIE_language = (1 << 11),
+		eSetup_UUIE_presentationIndicator = (1 << 10),
+		eSetup_UUIE_screeningIndicator = (1 << 9),
+		eSetup_UUIE_serviceControl = (1 << 8),
+		eSetup_UUIE_symmetricOperationRequired = (1 << 7),
+		eSetup_UUIE_capacity = (1 << 6),
+		eSetup_UUIE_circuitInfo = (1 << 5),
+		eSetup_UUIE_desiredProtocols = (1 << 4),
+		eSetup_UUIE_neededFeatures = (1 << 3),
+		eSetup_UUIE_desiredFeatures = (1 << 2),
+		eSetup_UUIE_supportedFeatures = (1 << 1),
+		eSetup_UUIE_parallelH245Control = (1 << 0),
+	} options;
+	TransportAddress h245Address;
+	TransportAddress destCallSignalAddress;
+	TransportAddress sourceCallSignalAddress;
+	Setup_UUIE_fastStart fastStart;
+} Setup_UUIE;
+
+typedef struct CallProceeding_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} CallProceeding_UUIE_fastStart;
+
+typedef struct CallProceeding_UUIE {	/* SEQUENCE */
+	enum {
+		eCallProceeding_UUIE_h245Address = (1 << 31),
+		eCallProceeding_UUIE_callIdentifier = (1 << 30),
+		eCallProceeding_UUIE_h245SecurityMode = (1 << 29),
+		eCallProceeding_UUIE_tokens = (1 << 28),
+		eCallProceeding_UUIE_cryptoTokens = (1 << 27),
+		eCallProceeding_UUIE_fastStart = (1 << 26),
+		eCallProceeding_UUIE_multipleCalls = (1 << 25),
+		eCallProceeding_UUIE_maintainConnection = (1 << 24),
+		eCallProceeding_UUIE_fastConnectRefused = (1 << 23),
+		eCallProceeding_UUIE_featureSet = (1 << 22),
+	} options;
+	TransportAddress h245Address;
+	CallProceeding_UUIE_fastStart fastStart;
+} CallProceeding_UUIE;
+
+typedef struct Connect_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Connect_UUIE_fastStart;
+
+typedef struct Connect_UUIE {	/* SEQUENCE */
+	enum {
+		eConnect_UUIE_h245Address = (1 << 31),
+		eConnect_UUIE_callIdentifier = (1 << 30),
+		eConnect_UUIE_h245SecurityMode = (1 << 29),
+		eConnect_UUIE_tokens = (1 << 28),
+		eConnect_UUIE_cryptoTokens = (1 << 27),
+		eConnect_UUIE_fastStart = (1 << 26),
+		eConnect_UUIE_multipleCalls = (1 << 25),
+		eConnect_UUIE_maintainConnection = (1 << 24),
+		eConnect_UUIE_language = (1 << 23),
+		eConnect_UUIE_connectedAddress = (1 << 22),
+		eConnect_UUIE_presentationIndicator = (1 << 21),
+		eConnect_UUIE_screeningIndicator = (1 << 20),
+		eConnect_UUIE_fastConnectRefused = (1 << 19),
+		eConnect_UUIE_serviceControl = (1 << 18),
+		eConnect_UUIE_capacity = (1 << 17),
+		eConnect_UUIE_featureSet = (1 << 16),
+	} options;
+	TransportAddress h245Address;
+	Connect_UUIE_fastStart fastStart;
+} Connect_UUIE;
+
+typedef struct Alerting_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Alerting_UUIE_fastStart;
+
+typedef struct Alerting_UUIE {	/* SEQUENCE */
+	enum {
+		eAlerting_UUIE_h245Address = (1 << 31),
+		eAlerting_UUIE_callIdentifier = (1 << 30),
+		eAlerting_UUIE_h245SecurityMode = (1 << 29),
+		eAlerting_UUIE_tokens = (1 << 28),
+		eAlerting_UUIE_cryptoTokens = (1 << 27),
+		eAlerting_UUIE_fastStart = (1 << 26),
+		eAlerting_UUIE_multipleCalls = (1 << 25),
+		eAlerting_UUIE_maintainConnection = (1 << 24),
+		eAlerting_UUIE_alertingAddress = (1 << 23),
+		eAlerting_UUIE_presentationIndicator = (1 << 22),
+		eAlerting_UUIE_screeningIndicator = (1 << 21),
+		eAlerting_UUIE_fastConnectRefused = (1 << 20),
+		eAlerting_UUIE_serviceControl = (1 << 19),
+		eAlerting_UUIE_capacity = (1 << 18),
+		eAlerting_UUIE_featureSet = (1 << 17),
+	} options;
+	TransportAddress h245Address;
+	Alerting_UUIE_fastStart fastStart;
+} Alerting_UUIE;
+
+typedef struct Information_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Information_UUIE_fastStart;
+
+typedef struct Information_UUIE {	/* SEQUENCE */
+	enum {
+		eInformation_UUIE_callIdentifier = (1 << 31),
+		eInformation_UUIE_tokens = (1 << 30),
+		eInformation_UUIE_cryptoTokens = (1 << 29),
+		eInformation_UUIE_fastStart = (1 << 28),
+		eInformation_UUIE_fastConnectRefused = (1 << 27),
+		eInformation_UUIE_circuitInfo = (1 << 26),
+	} options;
+	Information_UUIE_fastStart fastStart;
+} Information_UUIE;
+
+typedef struct FacilityReason {	/* CHOICE */
+	enum {
+		eFacilityReason_routeCallToGatekeeper,
+		eFacilityReason_callForwarded,
+		eFacilityReason_routeCallToMC,
+		eFacilityReason_undefinedReason,
+		eFacilityReason_conferenceListChoice,
+		eFacilityReason_startH245,
+		eFacilityReason_noH245,
+		eFacilityReason_newTokens,
+		eFacilityReason_featureSetUpdate,
+		eFacilityReason_forwardedElements,
+		eFacilityReason_transportedInformation,
+	} choice;
+} FacilityReason;
+
+typedef struct Facility_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Facility_UUIE_fastStart;
+
+typedef struct Facility_UUIE {	/* SEQUENCE */
+	enum {
+		eFacility_UUIE_alternativeAddress = (1 << 31),
+		eFacility_UUIE_alternativeAliasAddress = (1 << 30),
+		eFacility_UUIE_conferenceID = (1 << 29),
+		eFacility_UUIE_callIdentifier = (1 << 28),
+		eFacility_UUIE_destExtraCallInfo = (1 << 27),
+		eFacility_UUIE_remoteExtensionAddress = (1 << 26),
+		eFacility_UUIE_tokens = (1 << 25),
+		eFacility_UUIE_cryptoTokens = (1 << 24),
+		eFacility_UUIE_conferences = (1 << 23),
+		eFacility_UUIE_h245Address = (1 << 22),
+		eFacility_UUIE_fastStart = (1 << 21),
+		eFacility_UUIE_multipleCalls = (1 << 20),
+		eFacility_UUIE_maintainConnection = (1 << 19),
+		eFacility_UUIE_fastConnectRefused = (1 << 18),
+		eFacility_UUIE_serviceControl = (1 << 17),
+		eFacility_UUIE_circuitInfo = (1 << 16),
+		eFacility_UUIE_featureSet = (1 << 15),
+		eFacility_UUIE_destinationInfo = (1 << 14),
+		eFacility_UUIE_h245SecurityMode = (1 << 13),
+	} options;
+	FacilityReason reason;
+	TransportAddress h245Address;
+	Facility_UUIE_fastStart fastStart;
+} Facility_UUIE;
+
+typedef struct Progress_UUIE_fastStart {	/* SEQUENCE OF */
+	int count;
+	OpenLogicalChannel item[30];
+} Progress_UUIE_fastStart;
+
+typedef struct Progress_UUIE {	/* SEQUENCE */
+	enum {
+		eProgress_UUIE_h245Address = (1 << 31),
+		eProgress_UUIE_h245SecurityMode = (1 << 30),
+		eProgress_UUIE_tokens = (1 << 29),
+		eProgress_UUIE_cryptoTokens = (1 << 28),
+		eProgress_UUIE_fastStart = (1 << 27),
+		eProgress_UUIE_multipleCalls = (1 << 26),
+		eProgress_UUIE_maintainConnection = (1 << 25),
+		eProgress_UUIE_fastConnectRefused = (1 << 24),
+	} options;
+	TransportAddress h245Address;
+	Progress_UUIE_fastStart fastStart;
+} Progress_UUIE;
+
+typedef struct H323_UU_PDU_h323_message_body {	/* CHOICE */
+	enum {
+		eH323_UU_PDU_h323_message_body_setup,
+		eH323_UU_PDU_h323_message_body_callProceeding,
+		eH323_UU_PDU_h323_message_body_connect,
+		eH323_UU_PDU_h323_message_body_alerting,
+		eH323_UU_PDU_h323_message_body_information,
+		eH323_UU_PDU_h323_message_body_releaseComplete,
+		eH323_UU_PDU_h323_message_body_facility,
+		eH323_UU_PDU_h323_message_body_progress,
+		eH323_UU_PDU_h323_message_body_empty,
+		eH323_UU_PDU_h323_message_body_status,
+		eH323_UU_PDU_h323_message_body_statusInquiry,
+		eH323_UU_PDU_h323_message_body_setupAcknowledge,
+		eH323_UU_PDU_h323_message_body_notify,
+	} choice;
+	union {
+		Setup_UUIE setup;
+		CallProceeding_UUIE callProceeding;
+		Connect_UUIE connect;
+		Alerting_UUIE alerting;
+		Information_UUIE information;
+		Facility_UUIE facility;
+		Progress_UUIE progress;
+	};
+} H323_UU_PDU_h323_message_body;
+
+typedef struct RequestMessage {	/* CHOICE */
+	enum {
+		eRequestMessage_nonStandard,
+		eRequestMessage_masterSlaveDetermination,
+		eRequestMessage_terminalCapabilitySet,
+		eRequestMessage_openLogicalChannel,
+		eRequestMessage_closeLogicalChannel,
+		eRequestMessage_requestChannelClose,
+		eRequestMessage_multiplexEntrySend,
+		eRequestMessage_requestMultiplexEntry,
+		eRequestMessage_requestMode,
+		eRequestMessage_roundTripDelayRequest,
+		eRequestMessage_maintenanceLoopRequest,
+		eRequestMessage_communicationModeRequest,
+		eRequestMessage_conferenceRequest,
+		eRequestMessage_multilinkRequest,
+		eRequestMessage_logicalChannelRateRequest,
+	} choice;
+	union {
+		OpenLogicalChannel openLogicalChannel;
+	};
+} RequestMessage;
+
+typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters {	/* CHOICE */
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+} OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters;
+
+typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_portNumber
+		    = (1 << 31),
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
+		    = (1 << 30),
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_replacementFor
+		    = (1 << 29),
+	} options;
+	OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
+	    multiplexParameters;
+} OpenLogicalChannelAck_reverseLogicalChannelParameters;
+
+typedef struct H2250LogicalChannelAckParameters {	/* SEQUENCE */
+	enum {
+		eH2250LogicalChannelAckParameters_nonStandard = (1 << 31),
+		eH2250LogicalChannelAckParameters_sessionID = (1 << 30),
+		eH2250LogicalChannelAckParameters_mediaChannel = (1 << 29),
+		eH2250LogicalChannelAckParameters_mediaControlChannel =
+		    (1 << 28),
+		eH2250LogicalChannelAckParameters_dynamicRTPPayloadType =
+		    (1 << 27),
+		eH2250LogicalChannelAckParameters_flowControlToZero =
+		    (1 << 26),
+		eH2250LogicalChannelAckParameters_portNumber = (1 << 25),
+	} options;
+	H245_TransportAddress mediaChannel;
+	H245_TransportAddress mediaControlChannel;
+} H2250LogicalChannelAckParameters;
+
+typedef struct OpenLogicalChannelAck_forwardMultiplexAckParameters {	/* CHOICE */
+	enum {
+		eOpenLogicalChannelAck_forwardMultiplexAckParameters_h2250LogicalChannelAckParameters,
+	} choice;
+	union {
+		H2250LogicalChannelAckParameters
+		    h2250LogicalChannelAckParameters;
+	};
+} OpenLogicalChannelAck_forwardMultiplexAckParameters;
+
+typedef struct OpenLogicalChannelAck {	/* SEQUENCE */
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters =
+		    (1 << 31),
+		eOpenLogicalChannelAck_separateStack = (1 << 30),
+		eOpenLogicalChannelAck_forwardMultiplexAckParameters =
+		    (1 << 29),
+		eOpenLogicalChannelAck_encryptionSync = (1 << 28),
+	} options;
+	OpenLogicalChannelAck_reverseLogicalChannelParameters
+	    reverseLogicalChannelParameters;
+	OpenLogicalChannelAck_forwardMultiplexAckParameters
+	    forwardMultiplexAckParameters;
+} OpenLogicalChannelAck;
+
+typedef struct ResponseMessage {	/* CHOICE */
+	enum {
+		eResponseMessage_nonStandard,
+		eResponseMessage_masterSlaveDeterminationAck,
+		eResponseMessage_masterSlaveDeterminationReject,
+		eResponseMessage_terminalCapabilitySetAck,
+		eResponseMessage_terminalCapabilitySetReject,
+		eResponseMessage_openLogicalChannelAck,
+		eResponseMessage_openLogicalChannelReject,
+		eResponseMessage_closeLogicalChannelAck,
+		eResponseMessage_requestChannelCloseAck,
+		eResponseMessage_requestChannelCloseReject,
+		eResponseMessage_multiplexEntrySendAck,
+		eResponseMessage_multiplexEntrySendReject,
+		eResponseMessage_requestMultiplexEntryAck,
+		eResponseMessage_requestMultiplexEntryReject,
+		eResponseMessage_requestModeAck,
+		eResponseMessage_requestModeReject,
+		eResponseMessage_roundTripDelayResponse,
+		eResponseMessage_maintenanceLoopAck,
+		eResponseMessage_maintenanceLoopReject,
+		eResponseMessage_communicationModeResponse,
+		eResponseMessage_conferenceResponse,
+		eResponseMessage_multilinkResponse,
+		eResponseMessage_logicalChannelRateAcknowledge,
+		eResponseMessage_logicalChannelRateReject,
+	} choice;
+	union {
+		OpenLogicalChannelAck openLogicalChannelAck;
+	};
+} ResponseMessage;
+
+typedef struct MultimediaSystemControlMessage {	/* CHOICE */
+	enum {
+		eMultimediaSystemControlMessage_request,
+		eMultimediaSystemControlMessage_response,
+		eMultimediaSystemControlMessage_command,
+		eMultimediaSystemControlMessage_indication,
+	} choice;
+	union {
+		RequestMessage request;
+		ResponseMessage response;
+	};
+} MultimediaSystemControlMessage;
+
+typedef struct H323_UU_PDU_h245Control {	/* SEQUENCE OF */
+	int count;
+	MultimediaSystemControlMessage item[4];
+} H323_UU_PDU_h245Control;
+
+typedef struct H323_UU_PDU {	/* SEQUENCE */
+	enum {
+		eH323_UU_PDU_nonStandardData = (1 << 31),
+		eH323_UU_PDU_h4501SupplementaryService = (1 << 30),
+		eH323_UU_PDU_h245Tunneling = (1 << 29),
+		eH323_UU_PDU_h245Control = (1 << 28),
+		eH323_UU_PDU_nonStandardControl = (1 << 27),
+		eH323_UU_PDU_callLinkage = (1 << 26),
+		eH323_UU_PDU_tunnelledSignallingMessage = (1 << 25),
+		eH323_UU_PDU_provisionalRespToH245Tunneling = (1 << 24),
+		eH323_UU_PDU_stimulusControl = (1 << 23),
+		eH323_UU_PDU_genericData = (1 << 22),
+	} options;
+	H323_UU_PDU_h323_message_body h323_message_body;
+	H323_UU_PDU_h245Control h245Control;
+} H323_UU_PDU;
+
+typedef struct H323_UserInformation {	/* SEQUENCE */
+	enum {
+		eH323_UserInformation_user_data = (1 << 31),
+	} options;
+	H323_UU_PDU h323_uu_pdu;
+} H323_UserInformation;
+
+typedef struct GatekeeperRequest {	/* SEQUENCE */
+	enum {
+		eGatekeeperRequest_nonStandardData = (1 << 31),
+		eGatekeeperRequest_gatekeeperIdentifier = (1 << 30),
+		eGatekeeperRequest_callServices = (1 << 29),
+		eGatekeeperRequest_endpointAlias = (1 << 28),
+		eGatekeeperRequest_alternateEndpoints = (1 << 27),
+		eGatekeeperRequest_tokens = (1 << 26),
+		eGatekeeperRequest_cryptoTokens = (1 << 25),
+		eGatekeeperRequest_authenticationCapability = (1 << 24),
+		eGatekeeperRequest_algorithmOIDs = (1 << 23),
+		eGatekeeperRequest_integrity = (1 << 22),
+		eGatekeeperRequest_integrityCheckValue = (1 << 21),
+		eGatekeeperRequest_supportsAltGK = (1 << 20),
+		eGatekeeperRequest_featureSet = (1 << 19),
+		eGatekeeperRequest_genericData = (1 << 18),
+	} options;
+	TransportAddress rasAddress;
+} GatekeeperRequest;
+
+typedef struct GatekeeperConfirm {	/* SEQUENCE */
+	enum {
+		eGatekeeperConfirm_nonStandardData = (1 << 31),
+		eGatekeeperConfirm_gatekeeperIdentifier = (1 << 30),
+		eGatekeeperConfirm_alternateGatekeeper = (1 << 29),
+		eGatekeeperConfirm_authenticationMode = (1 << 28),
+		eGatekeeperConfirm_tokens = (1 << 27),
+		eGatekeeperConfirm_cryptoTokens = (1 << 26),
+		eGatekeeperConfirm_algorithmOID = (1 << 25),
+		eGatekeeperConfirm_integrity = (1 << 24),
+		eGatekeeperConfirm_integrityCheckValue = (1 << 23),
+		eGatekeeperConfirm_featureSet = (1 << 22),
+		eGatekeeperConfirm_genericData = (1 << 21),
+	} options;
+	TransportAddress rasAddress;
+} GatekeeperConfirm;
+
+typedef struct RegistrationRequest_callSignalAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} RegistrationRequest_callSignalAddress;
+
+typedef struct RegistrationRequest_rasAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} RegistrationRequest_rasAddress;
+
+typedef struct RegistrationRequest {	/* SEQUENCE */
+	enum {
+		eRegistrationRequest_nonStandardData = (1 << 31),
+		eRegistrationRequest_terminalAlias = (1 << 30),
+		eRegistrationRequest_gatekeeperIdentifier = (1 << 29),
+		eRegistrationRequest_alternateEndpoints = (1 << 28),
+		eRegistrationRequest_timeToLive = (1 << 27),
+		eRegistrationRequest_tokens = (1 << 26),
+		eRegistrationRequest_cryptoTokens = (1 << 25),
+		eRegistrationRequest_integrityCheckValue = (1 << 24),
+		eRegistrationRequest_keepAlive = (1 << 23),
+		eRegistrationRequest_endpointIdentifier = (1 << 22),
+		eRegistrationRequest_willSupplyUUIEs = (1 << 21),
+		eRegistrationRequest_maintainConnection = (1 << 20),
+		eRegistrationRequest_alternateTransportAddresses = (1 << 19),
+		eRegistrationRequest_additiveRegistration = (1 << 18),
+		eRegistrationRequest_terminalAliasPattern = (1 << 17),
+		eRegistrationRequest_supportsAltGK = (1 << 16),
+		eRegistrationRequest_usageReportingCapability = (1 << 15),
+		eRegistrationRequest_multipleCalls = (1 << 14),
+		eRegistrationRequest_supportedH248Packages = (1 << 13),
+		eRegistrationRequest_callCreditCapability = (1 << 12),
+		eRegistrationRequest_capacityReportingCapability = (1 << 11),
+		eRegistrationRequest_capacity = (1 << 10),
+		eRegistrationRequest_featureSet = (1 << 9),
+		eRegistrationRequest_genericData = (1 << 8),
+	} options;
+	RegistrationRequest_callSignalAddress callSignalAddress;
+	RegistrationRequest_rasAddress rasAddress;
+	unsigned timeToLive;
+} RegistrationRequest;
+
+typedef struct RegistrationConfirm_callSignalAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} RegistrationConfirm_callSignalAddress;
+
+typedef struct RegistrationConfirm {	/* SEQUENCE */
+	enum {
+		eRegistrationConfirm_nonStandardData = (1 << 31),
+		eRegistrationConfirm_terminalAlias = (1 << 30),
+		eRegistrationConfirm_gatekeeperIdentifier = (1 << 29),
+		eRegistrationConfirm_alternateGatekeeper = (1 << 28),
+		eRegistrationConfirm_timeToLive = (1 << 27),
+		eRegistrationConfirm_tokens = (1 << 26),
+		eRegistrationConfirm_cryptoTokens = (1 << 25),
+		eRegistrationConfirm_integrityCheckValue = (1 << 24),
+		eRegistrationConfirm_willRespondToIRR = (1 << 23),
+		eRegistrationConfirm_preGrantedARQ = (1 << 22),
+		eRegistrationConfirm_maintainConnection = (1 << 21),
+		eRegistrationConfirm_serviceControl = (1 << 20),
+		eRegistrationConfirm_supportsAdditiveRegistration = (1 << 19),
+		eRegistrationConfirm_terminalAliasPattern = (1 << 18),
+		eRegistrationConfirm_supportedPrefixes = (1 << 17),
+		eRegistrationConfirm_usageSpec = (1 << 16),
+		eRegistrationConfirm_featureServerAlias = (1 << 15),
+		eRegistrationConfirm_capacityReportingSpec = (1 << 14),
+		eRegistrationConfirm_featureSet = (1 << 13),
+		eRegistrationConfirm_genericData = (1 << 12),
+	} options;
+	RegistrationConfirm_callSignalAddress callSignalAddress;
+	unsigned timeToLive;
+} RegistrationConfirm;
+
+typedef struct UnregistrationRequest_callSignalAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} UnregistrationRequest_callSignalAddress;
+
+typedef struct UnregistrationRequest {	/* SEQUENCE */
+	enum {
+		eUnregistrationRequest_endpointAlias = (1 << 31),
+		eUnregistrationRequest_nonStandardData = (1 << 30),
+		eUnregistrationRequest_endpointIdentifier = (1 << 29),
+		eUnregistrationRequest_alternateEndpoints = (1 << 28),
+		eUnregistrationRequest_gatekeeperIdentifier = (1 << 27),
+		eUnregistrationRequest_tokens = (1 << 26),
+		eUnregistrationRequest_cryptoTokens = (1 << 25),
+		eUnregistrationRequest_integrityCheckValue = (1 << 24),
+		eUnregistrationRequest_reason = (1 << 23),
+		eUnregistrationRequest_endpointAliasPattern = (1 << 22),
+		eUnregistrationRequest_supportedPrefixes = (1 << 21),
+		eUnregistrationRequest_alternateGatekeeper = (1 << 20),
+		eUnregistrationRequest_genericData = (1 << 19),
+	} options;
+	UnregistrationRequest_callSignalAddress callSignalAddress;
+} UnregistrationRequest;
+
+typedef struct AdmissionRequest {	/* SEQUENCE */
+	enum {
+		eAdmissionRequest_callModel = (1 << 31),
+		eAdmissionRequest_destinationInfo = (1 << 30),
+		eAdmissionRequest_destCallSignalAddress = (1 << 29),
+		eAdmissionRequest_destExtraCallInfo = (1 << 28),
+		eAdmissionRequest_srcCallSignalAddress = (1 << 27),
+		eAdmissionRequest_nonStandardData = (1 << 26),
+		eAdmissionRequest_callServices = (1 << 25),
+		eAdmissionRequest_canMapAlias = (1 << 24),
+		eAdmissionRequest_callIdentifier = (1 << 23),
+		eAdmissionRequest_srcAlternatives = (1 << 22),
+		eAdmissionRequest_destAlternatives = (1 << 21),
+		eAdmissionRequest_gatekeeperIdentifier = (1 << 20),
+		eAdmissionRequest_tokens = (1 << 19),
+		eAdmissionRequest_cryptoTokens = (1 << 18),
+		eAdmissionRequest_integrityCheckValue = (1 << 17),
+		eAdmissionRequest_transportQOS = (1 << 16),
+		eAdmissionRequest_willSupplyUUIEs = (1 << 15),
+		eAdmissionRequest_callLinkage = (1 << 14),
+		eAdmissionRequest_gatewayDataRate = (1 << 13),
+		eAdmissionRequest_capacity = (1 << 12),
+		eAdmissionRequest_circuitInfo = (1 << 11),
+		eAdmissionRequest_desiredProtocols = (1 << 10),
+		eAdmissionRequest_desiredTunnelledProtocol = (1 << 9),
+		eAdmissionRequest_featureSet = (1 << 8),
+		eAdmissionRequest_genericData = (1 << 7),
+	} options;
+	TransportAddress destCallSignalAddress;
+	TransportAddress srcCallSignalAddress;
+} AdmissionRequest;
+
+typedef struct AdmissionConfirm {	/* SEQUENCE */
+	enum {
+		eAdmissionConfirm_irrFrequency = (1 << 31),
+		eAdmissionConfirm_nonStandardData = (1 << 30),
+		eAdmissionConfirm_destinationInfo = (1 << 29),
+		eAdmissionConfirm_destExtraCallInfo = (1 << 28),
+		eAdmissionConfirm_destinationType = (1 << 27),
+		eAdmissionConfirm_remoteExtensionAddress = (1 << 26),
+		eAdmissionConfirm_alternateEndpoints = (1 << 25),
+		eAdmissionConfirm_tokens = (1 << 24),
+		eAdmissionConfirm_cryptoTokens = (1 << 23),
+		eAdmissionConfirm_integrityCheckValue = (1 << 22),
+		eAdmissionConfirm_transportQOS = (1 << 21),
+		eAdmissionConfirm_willRespondToIRR = (1 << 20),
+		eAdmissionConfirm_uuiesRequested = (1 << 19),
+		eAdmissionConfirm_language = (1 << 18),
+		eAdmissionConfirm_alternateTransportAddresses = (1 << 17),
+		eAdmissionConfirm_useSpecifiedTransport = (1 << 16),
+		eAdmissionConfirm_circuitInfo = (1 << 15),
+		eAdmissionConfirm_usageSpec = (1 << 14),
+		eAdmissionConfirm_supportedProtocols = (1 << 13),
+		eAdmissionConfirm_serviceControl = (1 << 12),
+		eAdmissionConfirm_multipleCalls = (1 << 11),
+		eAdmissionConfirm_featureSet = (1 << 10),
+		eAdmissionConfirm_genericData = (1 << 9),
+	} options;
+	TransportAddress destCallSignalAddress;
+} AdmissionConfirm;
+
+typedef struct LocationRequest {	/* SEQUENCE */
+	enum {
+		eLocationRequest_endpointIdentifier = (1 << 31),
+		eLocationRequest_nonStandardData = (1 << 30),
+		eLocationRequest_sourceInfo = (1 << 29),
+		eLocationRequest_canMapAlias = (1 << 28),
+		eLocationRequest_gatekeeperIdentifier = (1 << 27),
+		eLocationRequest_tokens = (1 << 26),
+		eLocationRequest_cryptoTokens = (1 << 25),
+		eLocationRequest_integrityCheckValue = (1 << 24),
+		eLocationRequest_desiredProtocols = (1 << 23),
+		eLocationRequest_desiredTunnelledProtocol = (1 << 22),
+		eLocationRequest_featureSet = (1 << 21),
+		eLocationRequest_genericData = (1 << 20),
+		eLocationRequest_hopCount = (1 << 19),
+		eLocationRequest_circuitInfo = (1 << 18),
+	} options;
+	TransportAddress replyAddress;
+} LocationRequest;
+
+typedef struct LocationConfirm {	/* SEQUENCE */
+	enum {
+		eLocationConfirm_nonStandardData = (1 << 31),
+		eLocationConfirm_destinationInfo = (1 << 30),
+		eLocationConfirm_destExtraCallInfo = (1 << 29),
+		eLocationConfirm_destinationType = (1 << 28),
+		eLocationConfirm_remoteExtensionAddress = (1 << 27),
+		eLocationConfirm_alternateEndpoints = (1 << 26),
+		eLocationConfirm_tokens = (1 << 25),
+		eLocationConfirm_cryptoTokens = (1 << 24),
+		eLocationConfirm_integrityCheckValue = (1 << 23),
+		eLocationConfirm_alternateTransportAddresses = (1 << 22),
+		eLocationConfirm_supportedProtocols = (1 << 21),
+		eLocationConfirm_multipleCalls = (1 << 20),
+		eLocationConfirm_featureSet = (1 << 19),
+		eLocationConfirm_genericData = (1 << 18),
+		eLocationConfirm_circuitInfo = (1 << 17),
+		eLocationConfirm_serviceControl = (1 << 16),
+	} options;
+	TransportAddress callSignalAddress;
+	TransportAddress rasAddress;
+} LocationConfirm;
+
+typedef struct InfoRequestResponse_callSignalAddress {	/* SEQUENCE OF */
+	int count;
+	TransportAddress item[10];
+} InfoRequestResponse_callSignalAddress;
+
+typedef struct InfoRequestResponse {	/* SEQUENCE */
+	enum {
+		eInfoRequestResponse_nonStandardData = (1 << 31),
+		eInfoRequestResponse_endpointAlias = (1 << 30),
+		eInfoRequestResponse_perCallInfo = (1 << 29),
+		eInfoRequestResponse_tokens = (1 << 28),
+		eInfoRequestResponse_cryptoTokens = (1 << 27),
+		eInfoRequestResponse_integrityCheckValue = (1 << 26),
+		eInfoRequestResponse_needResponse = (1 << 25),
+		eInfoRequestResponse_capacity = (1 << 24),
+		eInfoRequestResponse_irrStatus = (1 << 23),
+		eInfoRequestResponse_unsolicited = (1 << 22),
+		eInfoRequestResponse_genericData = (1 << 21),
+	} options;
+	TransportAddress rasAddress;
+	InfoRequestResponse_callSignalAddress callSignalAddress;
+} InfoRequestResponse;
+
+typedef struct RasMessage {	/* CHOICE */
+	enum {
+		eRasMessage_gatekeeperRequest,
+		eRasMessage_gatekeeperConfirm,
+		eRasMessage_gatekeeperReject,
+		eRasMessage_registrationRequest,
+		eRasMessage_registrationConfirm,
+		eRasMessage_registrationReject,
+		eRasMessage_unregistrationRequest,
+		eRasMessage_unregistrationConfirm,
+		eRasMessage_unregistrationReject,
+		eRasMessage_admissionRequest,
+		eRasMessage_admissionConfirm,
+		eRasMessage_admissionReject,
+		eRasMessage_bandwidthRequest,
+		eRasMessage_bandwidthConfirm,
+		eRasMessage_bandwidthReject,
+		eRasMessage_disengageRequest,
+		eRasMessage_disengageConfirm,
+		eRasMessage_disengageReject,
+		eRasMessage_locationRequest,
+		eRasMessage_locationConfirm,
+		eRasMessage_locationReject,
+		eRasMessage_infoRequest,
+		eRasMessage_infoRequestResponse,
+		eRasMessage_nonStandardMessage,
+		eRasMessage_unknownMessageResponse,
+		eRasMessage_requestInProgress,
+		eRasMessage_resourcesAvailableIndicate,
+		eRasMessage_resourcesAvailableConfirm,
+		eRasMessage_infoRequestAck,
+		eRasMessage_infoRequestNak,
+		eRasMessage_serviceControlIndication,
+		eRasMessage_serviceControlResponse,
+	} choice;
+	union {
+		GatekeeperRequest gatekeeperRequest;
+		GatekeeperConfirm gatekeeperConfirm;
+		RegistrationRequest registrationRequest;
+		RegistrationConfirm registrationConfirm;
+		UnregistrationRequest unregistrationRequest;
+		AdmissionRequest admissionRequest;
+		AdmissionConfirm admissionConfirm;
+		LocationRequest locationRequest;
+		LocationConfirm locationConfirm;
+		InfoRequestResponse infoRequestResponse;
+	};
+} RasMessage;
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323.c b/net/ipv4/netfilter/ip_conntrack_helper_h323.c
index daeb1395faa..fc817fd46ca 100644
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323.c
+++ b/net/ipv4/netfilter/ip_conntrack_helper_h323.c
@@ -54,8 +54,6 @@
 #include <linux/netfilter_ipv4/ip_conntrack_h323.h>
 #include <linux/moduleparam.h>
 
-#include "ip_conntrack_helper_h323_asn1.h"
-
 #if 0
 #define DEBUGP printk
 #else
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
index afa525129b5..48078002e45 100644
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
+++ b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
@@ -15,7 +15,7 @@
 #else
 #include <stdio.h>
 #endif
-#include "ip_conntrack_helper_h323_asn1.h"
+#include <linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h>
 
 /* Trace Flag */
 #ifndef H323_TRACE
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h
deleted file mode 100644
index 0bd828081c0..00000000000
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
- * ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
- * 			      	     conntrack/NAT module.
- *
- * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com>
- *
- * This source code is licensed under General Public License version 2.
- *
- *
- * This library is based on H.225 version 4, H.235 version 2 and H.245
- * version 7. It is extremely optimized to decode only the absolutely
- * necessary objects in a signal for Linux kernel NAT module use, so don't
- * expect it to be a full ASN.1 library.
- *
- * Features:
- *
- * 1. Small. The total size of code plus data is less than 20 KB (IA32).
- * 2. Fast. Decoding Netmeeting's Setup signal 1 million times on a PIII 866
- *    takes only 3.9 seconds.
- * 3. No memory allocation. It uses a static object. No need to initialize or
- *    cleanup.
- * 4. Thread safe.
- * 5. Support embedded architectures that has no misaligned memory access
- *    support.
- *
- * Limitations:
- *
- * 1. At most 30 faststart entries. Actually this is limited by ethernet's MTU.
- *    If a Setup signal contains more than 30 faststart, the packet size will
- *    very likely exceed the MTU size, then the TPKT will be fragmented. I
- *    don't know how to handle this in a Netfilter module. Anybody can help?
- *    Although I think 30 is enough for most of the cases.
- * 2. IPv4 addresses only.
- *
- ****************************************************************************/
-
-#ifndef _IP_CONNTRACK_HELPER_H323_ASN1_H_
-#define _IP_CONNTRACK_HELPER_H323_ASN1_H_
-
-/*****************************************************************************
- * H.323 Types
- ****************************************************************************/
-#include "ip_conntrack_helper_h323_types.h"
-
-typedef struct {
-	enum {
-		Q931_NationalEscape = 0x00,
-		Q931_Alerting = 0x01,
-		Q931_CallProceeding = 0x02,
-		Q931_Connect = 0x07,
-		Q931_ConnectAck = 0x0F,
-		Q931_Progress = 0x03,
-		Q931_Setup = 0x05,
-		Q931_SetupAck = 0x0D,
-		Q931_Resume = 0x26,
-		Q931_ResumeAck = 0x2E,
-		Q931_ResumeReject = 0x22,
-		Q931_Suspend = 0x25,
-		Q931_SuspendAck = 0x2D,
-		Q931_SuspendReject = 0x21,
-		Q931_UserInformation = 0x20,
-		Q931_Disconnect = 0x45,
-		Q931_Release = 0x4D,
-		Q931_ReleaseComplete = 0x5A,
-		Q931_Restart = 0x46,
-		Q931_RestartAck = 0x4E,
-		Q931_Segment = 0x60,
-		Q931_CongestionCtrl = 0x79,
-		Q931_Information = 0x7B,
-		Q931_Notify = 0x6E,
-		Q931_Status = 0x7D,
-		Q931_StatusEnquiry = 0x75,
-		Q931_Facility = 0x62
-	} MessageType;
-	H323_UserInformation UUIE;
-} Q931;
-
-/*****************************************************************************
- * Decode Functions Return Codes
- ****************************************************************************/
-
-#define H323_ERROR_NONE 0	/* Decoded successfully */
-#define H323_ERROR_STOP 1	/* Decoding stopped, not really an error */
-#define H323_ERROR_BOUND -1
-#define H323_ERROR_RANGE -2
-
-
-/*****************************************************************************
- * Decode Functions
- ****************************************************************************/
-
-int DecodeRasMessage(unsigned char *buf, size_t sz, RasMessage * ras);
-int DecodeQ931(unsigned char *buf, size_t sz, Q931 * q931);
-int DecodeMultimediaSystemControlMessage(unsigned char *buf, size_t sz,
-					 MultimediaSystemControlMessage *
-					 mscm);
-
-#endif
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323_types.h b/net/ipv4/netfilter/ip_conntrack_helper_h323_types.h
deleted file mode 100644
index cc98f7aa5ab..00000000000
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323_types.h
+++ /dev/null
@@ -1,938 +0,0 @@
-/* Generated by Jing Min Zhao's ASN.1 parser, Mar 15 2006
- *
- * Copyright (c) 2006 Jing Min Zhao <zhaojingmin@users.sourceforge.net>
- *
- * This source code is licensed under General Public License version 2.
- */
-
-typedef struct TransportAddress_ipAddress {	/* SEQUENCE */
-	int options;		/* No use */
-	unsigned ip;
-} TransportAddress_ipAddress;
-
-typedef struct TransportAddress {	/* CHOICE */
-	enum {
-		eTransportAddress_ipAddress,
-		eTransportAddress_ipSourceRoute,
-		eTransportAddress_ipxAddress,
-		eTransportAddress_ip6Address,
-		eTransportAddress_netBios,
-		eTransportAddress_nsap,
-		eTransportAddress_nonStandardAddress,
-	} choice;
-	union {
-		TransportAddress_ipAddress ipAddress;
-	};
-} TransportAddress;
-
-typedef struct DataProtocolCapability {	/* CHOICE */
-	enum {
-		eDataProtocolCapability_nonStandard,
-		eDataProtocolCapability_v14buffered,
-		eDataProtocolCapability_v42lapm,
-		eDataProtocolCapability_hdlcFrameTunnelling,
-		eDataProtocolCapability_h310SeparateVCStack,
-		eDataProtocolCapability_h310SingleVCStack,
-		eDataProtocolCapability_transparent,
-		eDataProtocolCapability_segmentationAndReassembly,
-		eDataProtocolCapability_hdlcFrameTunnelingwSAR,
-		eDataProtocolCapability_v120,
-		eDataProtocolCapability_separateLANStack,
-		eDataProtocolCapability_v76wCompression,
-		eDataProtocolCapability_tcp,
-		eDataProtocolCapability_udp,
-	} choice;
-} DataProtocolCapability;
-
-typedef struct DataApplicationCapability_application {	/* CHOICE */
-	enum {
-		eDataApplicationCapability_application_nonStandard,
-		eDataApplicationCapability_application_t120,
-		eDataApplicationCapability_application_dsm_cc,
-		eDataApplicationCapability_application_userData,
-		eDataApplicationCapability_application_t84,
-		eDataApplicationCapability_application_t434,
-		eDataApplicationCapability_application_h224,
-		eDataApplicationCapability_application_nlpid,
-		eDataApplicationCapability_application_dsvdControl,
-		eDataApplicationCapability_application_h222DataPartitioning,
-		eDataApplicationCapability_application_t30fax,
-		eDataApplicationCapability_application_t140,
-		eDataApplicationCapability_application_t38fax,
-		eDataApplicationCapability_application_genericDataCapability,
-	} choice;
-	union {
-		DataProtocolCapability t120;
-	};
-} DataApplicationCapability_application;
-
-typedef struct DataApplicationCapability {	/* SEQUENCE */
-	int options;		/* No use */
-	DataApplicationCapability_application application;
-} DataApplicationCapability;
-
-typedef struct DataType {	/* CHOICE */
-	enum {
-		eDataType_nonStandard,
-		eDataType_nullData,
-		eDataType_videoData,
-		eDataType_audioData,
-		eDataType_data,
-		eDataType_encryptionData,
-		eDataType_h235Control,
-		eDataType_h235Media,
-		eDataType_multiplexedStream,
-	} choice;
-	union {
-		DataApplicationCapability data;
-	};
-} DataType;
-
-typedef struct UnicastAddress_iPAddress {	/* SEQUENCE */
-	int options;		/* No use */
-	unsigned network;
-} UnicastAddress_iPAddress;
-
-typedef struct UnicastAddress {	/* CHOICE */
-	enum {
-		eUnicastAddress_iPAddress,
-		eUnicastAddress_iPXAddress,
-		eUnicastAddress_iP6Address,
-		eUnicastAddress_netBios,
-		eUnicastAddress_iPSourceRouteAddress,
-		eUnicastAddress_nsap,
-		eUnicastAddress_nonStandardAddress,
-	} choice;
-	union {
-		UnicastAddress_iPAddress iPAddress;
-	};
-} UnicastAddress;
-
-typedef struct H245_TransportAddress {	/* CHOICE */
-	enum {
-		eH245_TransportAddress_unicastAddress,
-		eH245_TransportAddress_multicastAddress,
-	} choice;
-	union {
-		UnicastAddress unicastAddress;
-	};
-} H245_TransportAddress;
-
-typedef struct H2250LogicalChannelParameters {	/* SEQUENCE */
-	enum {
-		eH2250LogicalChannelParameters_nonStandard = (1 << 31),
-		eH2250LogicalChannelParameters_associatedSessionID =
-		    (1 << 30),
-		eH2250LogicalChannelParameters_mediaChannel = (1 << 29),
-		eH2250LogicalChannelParameters_mediaGuaranteedDelivery =
-		    (1 << 28),
-		eH2250LogicalChannelParameters_mediaControlChannel =
-		    (1 << 27),
-		eH2250LogicalChannelParameters_mediaControlGuaranteedDelivery
-		    = (1 << 26),
-		eH2250LogicalChannelParameters_silenceSuppression = (1 << 25),
-		eH2250LogicalChannelParameters_destination = (1 << 24),
-		eH2250LogicalChannelParameters_dynamicRTPPayloadType =
-		    (1 << 23),
-		eH2250LogicalChannelParameters_mediaPacketization = (1 << 22),
-		eH2250LogicalChannelParameters_transportCapability =
-		    (1 << 21),
-		eH2250LogicalChannelParameters_redundancyEncoding = (1 << 20),
-		eH2250LogicalChannelParameters_source = (1 << 19),
-	} options;
-	H245_TransportAddress mediaChannel;
-	H245_TransportAddress mediaControlChannel;
-} H2250LogicalChannelParameters;
-
-typedef struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters {	/* CHOICE */
-	enum {
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
-		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_none,
-	} choice;
-	union {
-		H2250LogicalChannelParameters h2250LogicalChannelParameters;
-	};
-} OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters;
-
-typedef struct OpenLogicalChannel_forwardLogicalChannelParameters {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannel_forwardLogicalChannelParameters_portNumber
-		    = (1 << 31),
-		eOpenLogicalChannel_forwardLogicalChannelParameters_forwardLogicalChannelDependency
-		    = (1 << 30),
-		eOpenLogicalChannel_forwardLogicalChannelParameters_replacementFor
-		    = (1 << 29),
-	} options;
-	DataType dataType;
-	OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters
-	    multiplexParameters;
-} OpenLogicalChannel_forwardLogicalChannelParameters;
-
-typedef struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters {	/* CHOICE */
-	enum {
-		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters,
-		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters,
-		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
-	} choice;
-	union {
-		H2250LogicalChannelParameters h2250LogicalChannelParameters;
-	};
-} OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters;
-
-typedef struct OpenLogicalChannel_reverseLogicalChannelParameters {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
-		    = (1 << 31),
-		eOpenLogicalChannel_reverseLogicalChannelParameters_reverseLogicalChannelDependency
-		    = (1 << 30),
-		eOpenLogicalChannel_reverseLogicalChannelParameters_replacementFor
-		    = (1 << 29),
-	} options;
-	OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters
-	    multiplexParameters;
-} OpenLogicalChannel_reverseLogicalChannelParameters;
-
-typedef struct NetworkAccessParameters_networkAddress {	/* CHOICE */
-	enum {
-		eNetworkAccessParameters_networkAddress_q2931Address,
-		eNetworkAccessParameters_networkAddress_e164Address,
-		eNetworkAccessParameters_networkAddress_localAreaAddress,
-	} choice;
-	union {
-		H245_TransportAddress localAreaAddress;
-	};
-} NetworkAccessParameters_networkAddress;
-
-typedef struct NetworkAccessParameters {	/* SEQUENCE */
-	enum {
-		eNetworkAccessParameters_distribution = (1 << 31),
-		eNetworkAccessParameters_externalReference = (1 << 30),
-		eNetworkAccessParameters_t120SetupProcedure = (1 << 29),
-	} options;
-	NetworkAccessParameters_networkAddress networkAddress;
-} NetworkAccessParameters;
-
-typedef struct OpenLogicalChannel {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannel_reverseLogicalChannelParameters =
-		    (1 << 31),
-		eOpenLogicalChannel_separateStack = (1 << 30),
-		eOpenLogicalChannel_encryptionSync = (1 << 29),
-	} options;
-	OpenLogicalChannel_forwardLogicalChannelParameters
-	    forwardLogicalChannelParameters;
-	OpenLogicalChannel_reverseLogicalChannelParameters
-	    reverseLogicalChannelParameters;
-	NetworkAccessParameters separateStack;
-} OpenLogicalChannel;
-
-typedef struct Setup_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Setup_UUIE_fastStart;
-
-typedef struct Setup_UUIE {	/* SEQUENCE */
-	enum {
-		eSetup_UUIE_h245Address = (1 << 31),
-		eSetup_UUIE_sourceAddress = (1 << 30),
-		eSetup_UUIE_destinationAddress = (1 << 29),
-		eSetup_UUIE_destCallSignalAddress = (1 << 28),
-		eSetup_UUIE_destExtraCallInfo = (1 << 27),
-		eSetup_UUIE_destExtraCRV = (1 << 26),
-		eSetup_UUIE_callServices = (1 << 25),
-		eSetup_UUIE_sourceCallSignalAddress = (1 << 24),
-		eSetup_UUIE_remoteExtensionAddress = (1 << 23),
-		eSetup_UUIE_callIdentifier = (1 << 22),
-		eSetup_UUIE_h245SecurityCapability = (1 << 21),
-		eSetup_UUIE_tokens = (1 << 20),
-		eSetup_UUIE_cryptoTokens = (1 << 19),
-		eSetup_UUIE_fastStart = (1 << 18),
-		eSetup_UUIE_mediaWaitForConnect = (1 << 17),
-		eSetup_UUIE_canOverlapSend = (1 << 16),
-		eSetup_UUIE_endpointIdentifier = (1 << 15),
-		eSetup_UUIE_multipleCalls = (1 << 14),
-		eSetup_UUIE_maintainConnection = (1 << 13),
-		eSetup_UUIE_connectionParameters = (1 << 12),
-		eSetup_UUIE_language = (1 << 11),
-		eSetup_UUIE_presentationIndicator = (1 << 10),
-		eSetup_UUIE_screeningIndicator = (1 << 9),
-		eSetup_UUIE_serviceControl = (1 << 8),
-		eSetup_UUIE_symmetricOperationRequired = (1 << 7),
-		eSetup_UUIE_capacity = (1 << 6),
-		eSetup_UUIE_circuitInfo = (1 << 5),
-		eSetup_UUIE_desiredProtocols = (1 << 4),
-		eSetup_UUIE_neededFeatures = (1 << 3),
-		eSetup_UUIE_desiredFeatures = (1 << 2),
-		eSetup_UUIE_supportedFeatures = (1 << 1),
-		eSetup_UUIE_parallelH245Control = (1 << 0),
-	} options;
-	TransportAddress h245Address;
-	TransportAddress destCallSignalAddress;
-	TransportAddress sourceCallSignalAddress;
-	Setup_UUIE_fastStart fastStart;
-} Setup_UUIE;
-
-typedef struct CallProceeding_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} CallProceeding_UUIE_fastStart;
-
-typedef struct CallProceeding_UUIE {	/* SEQUENCE */
-	enum {
-		eCallProceeding_UUIE_h245Address = (1 << 31),
-		eCallProceeding_UUIE_callIdentifier = (1 << 30),
-		eCallProceeding_UUIE_h245SecurityMode = (1 << 29),
-		eCallProceeding_UUIE_tokens = (1 << 28),
-		eCallProceeding_UUIE_cryptoTokens = (1 << 27),
-		eCallProceeding_UUIE_fastStart = (1 << 26),
-		eCallProceeding_UUIE_multipleCalls = (1 << 25),
-		eCallProceeding_UUIE_maintainConnection = (1 << 24),
-		eCallProceeding_UUIE_fastConnectRefused = (1 << 23),
-		eCallProceeding_UUIE_featureSet = (1 << 22),
-	} options;
-	TransportAddress h245Address;
-	CallProceeding_UUIE_fastStart fastStart;
-} CallProceeding_UUIE;
-
-typedef struct Connect_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Connect_UUIE_fastStart;
-
-typedef struct Connect_UUIE {	/* SEQUENCE */
-	enum {
-		eConnect_UUIE_h245Address = (1 << 31),
-		eConnect_UUIE_callIdentifier = (1 << 30),
-		eConnect_UUIE_h245SecurityMode = (1 << 29),
-		eConnect_UUIE_tokens = (1 << 28),
-		eConnect_UUIE_cryptoTokens = (1 << 27),
-		eConnect_UUIE_fastStart = (1 << 26),
-		eConnect_UUIE_multipleCalls = (1 << 25),
-		eConnect_UUIE_maintainConnection = (1 << 24),
-		eConnect_UUIE_language = (1 << 23),
-		eConnect_UUIE_connectedAddress = (1 << 22),
-		eConnect_UUIE_presentationIndicator = (1 << 21),
-		eConnect_UUIE_screeningIndicator = (1 << 20),
-		eConnect_UUIE_fastConnectRefused = (1 << 19),
-		eConnect_UUIE_serviceControl = (1 << 18),
-		eConnect_UUIE_capacity = (1 << 17),
-		eConnect_UUIE_featureSet = (1 << 16),
-	} options;
-	TransportAddress h245Address;
-	Connect_UUIE_fastStart fastStart;
-} Connect_UUIE;
-
-typedef struct Alerting_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Alerting_UUIE_fastStart;
-
-typedef struct Alerting_UUIE {	/* SEQUENCE */
-	enum {
-		eAlerting_UUIE_h245Address = (1 << 31),
-		eAlerting_UUIE_callIdentifier = (1 << 30),
-		eAlerting_UUIE_h245SecurityMode = (1 << 29),
-		eAlerting_UUIE_tokens = (1 << 28),
-		eAlerting_UUIE_cryptoTokens = (1 << 27),
-		eAlerting_UUIE_fastStart = (1 << 26),
-		eAlerting_UUIE_multipleCalls = (1 << 25),
-		eAlerting_UUIE_maintainConnection = (1 << 24),
-		eAlerting_UUIE_alertingAddress = (1 << 23),
-		eAlerting_UUIE_presentationIndicator = (1 << 22),
-		eAlerting_UUIE_screeningIndicator = (1 << 21),
-		eAlerting_UUIE_fastConnectRefused = (1 << 20),
-		eAlerting_UUIE_serviceControl = (1 << 19),
-		eAlerting_UUIE_capacity = (1 << 18),
-		eAlerting_UUIE_featureSet = (1 << 17),
-	} options;
-	TransportAddress h245Address;
-	Alerting_UUIE_fastStart fastStart;
-} Alerting_UUIE;
-
-typedef struct Information_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Information_UUIE_fastStart;
-
-typedef struct Information_UUIE {	/* SEQUENCE */
-	enum {
-		eInformation_UUIE_callIdentifier = (1 << 31),
-		eInformation_UUIE_tokens = (1 << 30),
-		eInformation_UUIE_cryptoTokens = (1 << 29),
-		eInformation_UUIE_fastStart = (1 << 28),
-		eInformation_UUIE_fastConnectRefused = (1 << 27),
-		eInformation_UUIE_circuitInfo = (1 << 26),
-	} options;
-	Information_UUIE_fastStart fastStart;
-} Information_UUIE;
-
-typedef struct FacilityReason {	/* CHOICE */
-	enum {
-		eFacilityReason_routeCallToGatekeeper,
-		eFacilityReason_callForwarded,
-		eFacilityReason_routeCallToMC,
-		eFacilityReason_undefinedReason,
-		eFacilityReason_conferenceListChoice,
-		eFacilityReason_startH245,
-		eFacilityReason_noH245,
-		eFacilityReason_newTokens,
-		eFacilityReason_featureSetUpdate,
-		eFacilityReason_forwardedElements,
-		eFacilityReason_transportedInformation,
-	} choice;
-} FacilityReason;
-
-typedef struct Facility_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Facility_UUIE_fastStart;
-
-typedef struct Facility_UUIE {	/* SEQUENCE */
-	enum {
-		eFacility_UUIE_alternativeAddress = (1 << 31),
-		eFacility_UUIE_alternativeAliasAddress = (1 << 30),
-		eFacility_UUIE_conferenceID = (1 << 29),
-		eFacility_UUIE_callIdentifier = (1 << 28),
-		eFacility_UUIE_destExtraCallInfo = (1 << 27),
-		eFacility_UUIE_remoteExtensionAddress = (1 << 26),
-		eFacility_UUIE_tokens = (1 << 25),
-		eFacility_UUIE_cryptoTokens = (1 << 24),
-		eFacility_UUIE_conferences = (1 << 23),
-		eFacility_UUIE_h245Address = (1 << 22),
-		eFacility_UUIE_fastStart = (1 << 21),
-		eFacility_UUIE_multipleCalls = (1 << 20),
-		eFacility_UUIE_maintainConnection = (1 << 19),
-		eFacility_UUIE_fastConnectRefused = (1 << 18),
-		eFacility_UUIE_serviceControl = (1 << 17),
-		eFacility_UUIE_circuitInfo = (1 << 16),
-		eFacility_UUIE_featureSet = (1 << 15),
-		eFacility_UUIE_destinationInfo = (1 << 14),
-		eFacility_UUIE_h245SecurityMode = (1 << 13),
-	} options;
-	FacilityReason reason;
-	TransportAddress h245Address;
-	Facility_UUIE_fastStart fastStart;
-} Facility_UUIE;
-
-typedef struct Progress_UUIE_fastStart {	/* SEQUENCE OF */
-	int count;
-	OpenLogicalChannel item[30];
-} Progress_UUIE_fastStart;
-
-typedef struct Progress_UUIE {	/* SEQUENCE */
-	enum {
-		eProgress_UUIE_h245Address = (1 << 31),
-		eProgress_UUIE_h245SecurityMode = (1 << 30),
-		eProgress_UUIE_tokens = (1 << 29),
-		eProgress_UUIE_cryptoTokens = (1 << 28),
-		eProgress_UUIE_fastStart = (1 << 27),
-		eProgress_UUIE_multipleCalls = (1 << 26),
-		eProgress_UUIE_maintainConnection = (1 << 25),
-		eProgress_UUIE_fastConnectRefused = (1 << 24),
-	} options;
-	TransportAddress h245Address;
-	Progress_UUIE_fastStart fastStart;
-} Progress_UUIE;
-
-typedef struct H323_UU_PDU_h323_message_body {	/* CHOICE */
-	enum {
-		eH323_UU_PDU_h323_message_body_setup,
-		eH323_UU_PDU_h323_message_body_callProceeding,
-		eH323_UU_PDU_h323_message_body_connect,
-		eH323_UU_PDU_h323_message_body_alerting,
-		eH323_UU_PDU_h323_message_body_information,
-		eH323_UU_PDU_h323_message_body_releaseComplete,
-		eH323_UU_PDU_h323_message_body_facility,
-		eH323_UU_PDU_h323_message_body_progress,
-		eH323_UU_PDU_h323_message_body_empty,
-		eH323_UU_PDU_h323_message_body_status,
-		eH323_UU_PDU_h323_message_body_statusInquiry,
-		eH323_UU_PDU_h323_message_body_setupAcknowledge,
-		eH323_UU_PDU_h323_message_body_notify,
-	} choice;
-	union {
-		Setup_UUIE setup;
-		CallProceeding_UUIE callProceeding;
-		Connect_UUIE connect;
-		Alerting_UUIE alerting;
-		Information_UUIE information;
-		Facility_UUIE facility;
-		Progress_UUIE progress;
-	};
-} H323_UU_PDU_h323_message_body;
-
-typedef struct RequestMessage {	/* CHOICE */
-	enum {
-		eRequestMessage_nonStandard,
-		eRequestMessage_masterSlaveDetermination,
-		eRequestMessage_terminalCapabilitySet,
-		eRequestMessage_openLogicalChannel,
-		eRequestMessage_closeLogicalChannel,
-		eRequestMessage_requestChannelClose,
-		eRequestMessage_multiplexEntrySend,
-		eRequestMessage_requestMultiplexEntry,
-		eRequestMessage_requestMode,
-		eRequestMessage_roundTripDelayRequest,
-		eRequestMessage_maintenanceLoopRequest,
-		eRequestMessage_communicationModeRequest,
-		eRequestMessage_conferenceRequest,
-		eRequestMessage_multilinkRequest,
-		eRequestMessage_logicalChannelRateRequest,
-	} choice;
-	union {
-		OpenLogicalChannel openLogicalChannel;
-	};
-} RequestMessage;
-
-typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters {	/* CHOICE */
-	enum {
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters,
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters,
-	} choice;
-	union {
-		H2250LogicalChannelParameters h2250LogicalChannelParameters;
-	};
-} OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters;
-
-typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_portNumber
-		    = (1 << 31),
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
-		    = (1 << 30),
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters_replacementFor
-		    = (1 << 29),
-	} options;
-	OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters
-	    multiplexParameters;
-} OpenLogicalChannelAck_reverseLogicalChannelParameters;
-
-typedef struct H2250LogicalChannelAckParameters {	/* SEQUENCE */
-	enum {
-		eH2250LogicalChannelAckParameters_nonStandard = (1 << 31),
-		eH2250LogicalChannelAckParameters_sessionID = (1 << 30),
-		eH2250LogicalChannelAckParameters_mediaChannel = (1 << 29),
-		eH2250LogicalChannelAckParameters_mediaControlChannel =
-		    (1 << 28),
-		eH2250LogicalChannelAckParameters_dynamicRTPPayloadType =
-		    (1 << 27),
-		eH2250LogicalChannelAckParameters_flowControlToZero =
-		    (1 << 26),
-		eH2250LogicalChannelAckParameters_portNumber = (1 << 25),
-	} options;
-	H245_TransportAddress mediaChannel;
-	H245_TransportAddress mediaControlChannel;
-} H2250LogicalChannelAckParameters;
-
-typedef struct OpenLogicalChannelAck_forwardMultiplexAckParameters {	/* CHOICE */
-	enum {
-		eOpenLogicalChannelAck_forwardMultiplexAckParameters_h2250LogicalChannelAckParameters,
-	} choice;
-	union {
-		H2250LogicalChannelAckParameters
-		    h2250LogicalChannelAckParameters;
-	};
-} OpenLogicalChannelAck_forwardMultiplexAckParameters;
-
-typedef struct OpenLogicalChannelAck {	/* SEQUENCE */
-	enum {
-		eOpenLogicalChannelAck_reverseLogicalChannelParameters =
-		    (1 << 31),
-		eOpenLogicalChannelAck_separateStack = (1 << 30),
-		eOpenLogicalChannelAck_forwardMultiplexAckParameters =
-		    (1 << 29),
-		eOpenLogicalChannelAck_encryptionSync = (1 << 28),
-	} options;
-	OpenLogicalChannelAck_reverseLogicalChannelParameters
-	    reverseLogicalChannelParameters;
-	OpenLogicalChannelAck_forwardMultiplexAckParameters
-	    forwardMultiplexAckParameters;
-} OpenLogicalChannelAck;
-
-typedef struct ResponseMessage {	/* CHOICE */
-	enum {
-		eResponseMessage_nonStandard,
-		eResponseMessage_masterSlaveDeterminationAck,
-		eResponseMessage_masterSlaveDeterminationReject,
-		eResponseMessage_terminalCapabilitySetAck,
-		eResponseMessage_terminalCapabilitySetReject,
-		eResponseMessage_openLogicalChannelAck,
-		eResponseMessage_openLogicalChannelReject,
-		eResponseMessage_closeLogicalChannelAck,
-		eResponseMessage_requestChannelCloseAck,
-		eResponseMessage_requestChannelCloseReject,
-		eResponseMessage_multiplexEntrySendAck,
-		eResponseMessage_multiplexEntrySendReject,
-		eResponseMessage_requestMultiplexEntryAck,
-		eResponseMessage_requestMultiplexEntryReject,
-		eResponseMessage_requestModeAck,
-		eResponseMessage_requestModeReject,
-		eResponseMessage_roundTripDelayResponse,
-		eResponseMessage_maintenanceLoopAck,
-		eResponseMessage_maintenanceLoopReject,
-		eResponseMessage_communicationModeResponse,
-		eResponseMessage_conferenceResponse,
-		eResponseMessage_multilinkResponse,
-		eResponseMessage_logicalChannelRateAcknowledge,
-		eResponseMessage_logicalChannelRateReject,
-	} choice;
-	union {
-		OpenLogicalChannelAck openLogicalChannelAck;
-	};
-} ResponseMessage;
-
-typedef struct MultimediaSystemControlMessage {	/* CHOICE */
-	enum {
-		eMultimediaSystemControlMessage_request,
-		eMultimediaSystemControlMessage_response,
-		eMultimediaSystemControlMessage_command,
-		eMultimediaSystemControlMessage_indication,
-	} choice;
-	union {
-		RequestMessage request;
-		ResponseMessage response;
-	};
-} MultimediaSystemControlMessage;
-
-typedef struct H323_UU_PDU_h245Control {	/* SEQUENCE OF */
-	int count;
-	MultimediaSystemControlMessage item[4];
-} H323_UU_PDU_h245Control;
-
-typedef struct H323_UU_PDU {	/* SEQUENCE */
-	enum {
-		eH323_UU_PDU_nonStandardData = (1 << 31),
-		eH323_UU_PDU_h4501SupplementaryService = (1 << 30),
-		eH323_UU_PDU_h245Tunneling = (1 << 29),
-		eH323_UU_PDU_h245Control = (1 << 28),
-		eH323_UU_PDU_nonStandardControl = (1 << 27),
-		eH323_UU_PDU_callLinkage = (1 << 26),
-		eH323_UU_PDU_tunnelledSignallingMessage = (1 << 25),
-		eH323_UU_PDU_provisionalRespToH245Tunneling = (1 << 24),
-		eH323_UU_PDU_stimulusControl = (1 << 23),
-		eH323_UU_PDU_genericData = (1 << 22),
-	} options;
-	H323_UU_PDU_h323_message_body h323_message_body;
-	H323_UU_PDU_h245Control h245Control;
-} H323_UU_PDU;
-
-typedef struct H323_UserInformation {	/* SEQUENCE */
-	enum {
-		eH323_UserInformation_user_data = (1 << 31),
-	} options;
-	H323_UU_PDU h323_uu_pdu;
-} H323_UserInformation;
-
-typedef struct GatekeeperRequest {	/* SEQUENCE */
-	enum {
-		eGatekeeperRequest_nonStandardData = (1 << 31),
-		eGatekeeperRequest_gatekeeperIdentifier = (1 << 30),
-		eGatekeeperRequest_callServices = (1 << 29),
-		eGatekeeperRequest_endpointAlias = (1 << 28),
-		eGatekeeperRequest_alternateEndpoints = (1 << 27),
-		eGatekeeperRequest_tokens = (1 << 26),
-		eGatekeeperRequest_cryptoTokens = (1 << 25),
-		eGatekeeperRequest_authenticationCapability = (1 << 24),
-		eGatekeeperRequest_algorithmOIDs = (1 << 23),
-		eGatekeeperRequest_integrity = (1 << 22),
-		eGatekeeperRequest_integrityCheckValue = (1 << 21),
-		eGatekeeperRequest_supportsAltGK = (1 << 20),
-		eGatekeeperRequest_featureSet = (1 << 19),
-		eGatekeeperRequest_genericData = (1 << 18),
-	} options;
-	TransportAddress rasAddress;
-} GatekeeperRequest;
-
-typedef struct GatekeeperConfirm {	/* SEQUENCE */
-	enum {
-		eGatekeeperConfirm_nonStandardData = (1 << 31),
-		eGatekeeperConfirm_gatekeeperIdentifier = (1 << 30),
-		eGatekeeperConfirm_alternateGatekeeper = (1 << 29),
-		eGatekeeperConfirm_authenticationMode = (1 << 28),
-		eGatekeeperConfirm_tokens = (1 << 27),
-		eGatekeeperConfirm_cryptoTokens = (1 << 26),
-		eGatekeeperConfirm_algorithmOID = (1 << 25),
-		eGatekeeperConfirm_integrity = (1 << 24),
-		eGatekeeperConfirm_integrityCheckValue = (1 << 23),
-		eGatekeeperConfirm_featureSet = (1 << 22),
-		eGatekeeperConfirm_genericData = (1 << 21),
-	} options;
-	TransportAddress rasAddress;
-} GatekeeperConfirm;
-
-typedef struct RegistrationRequest_callSignalAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} RegistrationRequest_callSignalAddress;
-
-typedef struct RegistrationRequest_rasAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} RegistrationRequest_rasAddress;
-
-typedef struct RegistrationRequest {	/* SEQUENCE */
-	enum {
-		eRegistrationRequest_nonStandardData = (1 << 31),
-		eRegistrationRequest_terminalAlias = (1 << 30),
-		eRegistrationRequest_gatekeeperIdentifier = (1 << 29),
-		eRegistrationRequest_alternateEndpoints = (1 << 28),
-		eRegistrationRequest_timeToLive = (1 << 27),
-		eRegistrationRequest_tokens = (1 << 26),
-		eRegistrationRequest_cryptoTokens = (1 << 25),
-		eRegistrationRequest_integrityCheckValue = (1 << 24),
-		eRegistrationRequest_keepAlive = (1 << 23),
-		eRegistrationRequest_endpointIdentifier = (1 << 22),
-		eRegistrationRequest_willSupplyUUIEs = (1 << 21),
-		eRegistrationRequest_maintainConnection = (1 << 20),
-		eRegistrationRequest_alternateTransportAddresses = (1 << 19),
-		eRegistrationRequest_additiveRegistration = (1 << 18),
-		eRegistrationRequest_terminalAliasPattern = (1 << 17),
-		eRegistrationRequest_supportsAltGK = (1 << 16),
-		eRegistrationRequest_usageReportingCapability = (1 << 15),
-		eRegistrationRequest_multipleCalls = (1 << 14),
-		eRegistrationRequest_supportedH248Packages = (1 << 13),
-		eRegistrationRequest_callCreditCapability = (1 << 12),
-		eRegistrationRequest_capacityReportingCapability = (1 << 11),
-		eRegistrationRequest_capacity = (1 << 10),
-		eRegistrationRequest_featureSet = (1 << 9),
-		eRegistrationRequest_genericData = (1 << 8),
-	} options;
-	RegistrationRequest_callSignalAddress callSignalAddress;
-	RegistrationRequest_rasAddress rasAddress;
-	unsigned timeToLive;
-} RegistrationRequest;
-
-typedef struct RegistrationConfirm_callSignalAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} RegistrationConfirm_callSignalAddress;
-
-typedef struct RegistrationConfirm {	/* SEQUENCE */
-	enum {
-		eRegistrationConfirm_nonStandardData = (1 << 31),
-		eRegistrationConfirm_terminalAlias = (1 << 30),
-		eRegistrationConfirm_gatekeeperIdentifier = (1 << 29),
-		eRegistrationConfirm_alternateGatekeeper = (1 << 28),
-		eRegistrationConfirm_timeToLive = (1 << 27),
-		eRegistrationConfirm_tokens = (1 << 26),
-		eRegistrationConfirm_cryptoTokens = (1 << 25),
-		eRegistrationConfirm_integrityCheckValue = (1 << 24),
-		eRegistrationConfirm_willRespondToIRR = (1 << 23),
-		eRegistrationConfirm_preGrantedARQ = (1 << 22),
-		eRegistrationConfirm_maintainConnection = (1 << 21),
-		eRegistrationConfirm_serviceControl = (1 << 20),
-		eRegistrationConfirm_supportsAdditiveRegistration = (1 << 19),
-		eRegistrationConfirm_terminalAliasPattern = (1 << 18),
-		eRegistrationConfirm_supportedPrefixes = (1 << 17),
-		eRegistrationConfirm_usageSpec = (1 << 16),
-		eRegistrationConfirm_featureServerAlias = (1 << 15),
-		eRegistrationConfirm_capacityReportingSpec = (1 << 14),
-		eRegistrationConfirm_featureSet = (1 << 13),
-		eRegistrationConfirm_genericData = (1 << 12),
-	} options;
-	RegistrationConfirm_callSignalAddress callSignalAddress;
-	unsigned timeToLive;
-} RegistrationConfirm;
-
-typedef struct UnregistrationRequest_callSignalAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} UnregistrationRequest_callSignalAddress;
-
-typedef struct UnregistrationRequest {	/* SEQUENCE */
-	enum {
-		eUnregistrationRequest_endpointAlias = (1 << 31),
-		eUnregistrationRequest_nonStandardData = (1 << 30),
-		eUnregistrationRequest_endpointIdentifier = (1 << 29),
-		eUnregistrationRequest_alternateEndpoints = (1 << 28),
-		eUnregistrationRequest_gatekeeperIdentifier = (1 << 27),
-		eUnregistrationRequest_tokens = (1 << 26),
-		eUnregistrationRequest_cryptoTokens = (1 << 25),
-		eUnregistrationRequest_integrityCheckValue = (1 << 24),
-		eUnregistrationRequest_reason = (1 << 23),
-		eUnregistrationRequest_endpointAliasPattern = (1 << 22),
-		eUnregistrationRequest_supportedPrefixes = (1 << 21),
-		eUnregistrationRequest_alternateGatekeeper = (1 << 20),
-		eUnregistrationRequest_genericData = (1 << 19),
-	} options;
-	UnregistrationRequest_callSignalAddress callSignalAddress;
-} UnregistrationRequest;
-
-typedef struct AdmissionRequest {	/* SEQUENCE */
-	enum {
-		eAdmissionRequest_callModel = (1 << 31),
-		eAdmissionRequest_destinationInfo = (1 << 30),
-		eAdmissionRequest_destCallSignalAddress = (1 << 29),
-		eAdmissionRequest_destExtraCallInfo = (1 << 28),
-		eAdmissionRequest_srcCallSignalAddress = (1 << 27),
-		eAdmissionRequest_nonStandardData = (1 << 26),
-		eAdmissionRequest_callServices = (1 << 25),
-		eAdmissionRequest_canMapAlias = (1 << 24),
-		eAdmissionRequest_callIdentifier = (1 << 23),
-		eAdmissionRequest_srcAlternatives = (1 << 22),
-		eAdmissionRequest_destAlternatives = (1 << 21),
-		eAdmissionRequest_gatekeeperIdentifier = (1 << 20),
-		eAdmissionRequest_tokens = (1 << 19),
-		eAdmissionRequest_cryptoTokens = (1 << 18),
-		eAdmissionRequest_integrityCheckValue = (1 << 17),
-		eAdmissionRequest_transportQOS = (1 << 16),
-		eAdmissionRequest_willSupplyUUIEs = (1 << 15),
-		eAdmissionRequest_callLinkage = (1 << 14),
-		eAdmissionRequest_gatewayDataRate = (1 << 13),
-		eAdmissionRequest_capacity = (1 << 12),
-		eAdmissionRequest_circuitInfo = (1 << 11),
-		eAdmissionRequest_desiredProtocols = (1 << 10),
-		eAdmissionRequest_desiredTunnelledProtocol = (1 << 9),
-		eAdmissionRequest_featureSet = (1 << 8),
-		eAdmissionRequest_genericData = (1 << 7),
-	} options;
-	TransportAddress destCallSignalAddress;
-	TransportAddress srcCallSignalAddress;
-} AdmissionRequest;
-
-typedef struct AdmissionConfirm {	/* SEQUENCE */
-	enum {
-		eAdmissionConfirm_irrFrequency = (1 << 31),
-		eAdmissionConfirm_nonStandardData = (1 << 30),
-		eAdmissionConfirm_destinationInfo = (1 << 29),
-		eAdmissionConfirm_destExtraCallInfo = (1 << 28),
-		eAdmissionConfirm_destinationType = (1 << 27),
-		eAdmissionConfirm_remoteExtensionAddress = (1 << 26),
-		eAdmissionConfirm_alternateEndpoints = (1 << 25),
-		eAdmissionConfirm_tokens = (1 << 24),
-		eAdmissionConfirm_cryptoTokens = (1 << 23),
-		eAdmissionConfirm_integrityCheckValue = (1 << 22),
-		eAdmissionConfirm_transportQOS = (1 << 21),
-		eAdmissionConfirm_willRespondToIRR = (1 << 20),
-		eAdmissionConfirm_uuiesRequested = (1 << 19),
-		eAdmissionConfirm_language = (1 << 18),
-		eAdmissionConfirm_alternateTransportAddresses = (1 << 17),
-		eAdmissionConfirm_useSpecifiedTransport = (1 << 16),
-		eAdmissionConfirm_circuitInfo = (1 << 15),
-		eAdmissionConfirm_usageSpec = (1 << 14),
-		eAdmissionConfirm_supportedProtocols = (1 << 13),
-		eAdmissionConfirm_serviceControl = (1 << 12),
-		eAdmissionConfirm_multipleCalls = (1 << 11),
-		eAdmissionConfirm_featureSet = (1 << 10),
-		eAdmissionConfirm_genericData = (1 << 9),
-	} options;
-	TransportAddress destCallSignalAddress;
-} AdmissionConfirm;
-
-typedef struct LocationRequest {	/* SEQUENCE */
-	enum {
-		eLocationRequest_endpointIdentifier = (1 << 31),
-		eLocationRequest_nonStandardData = (1 << 30),
-		eLocationRequest_sourceInfo = (1 << 29),
-		eLocationRequest_canMapAlias = (1 << 28),
-		eLocationRequest_gatekeeperIdentifier = (1 << 27),
-		eLocationRequest_tokens = (1 << 26),
-		eLocationRequest_cryptoTokens = (1 << 25),
-		eLocationRequest_integrityCheckValue = (1 << 24),
-		eLocationRequest_desiredProtocols = (1 << 23),
-		eLocationRequest_desiredTunnelledProtocol = (1 << 22),
-		eLocationRequest_featureSet = (1 << 21),
-		eLocationRequest_genericData = (1 << 20),
-		eLocationRequest_hopCount = (1 << 19),
-		eLocationRequest_circuitInfo = (1 << 18),
-	} options;
-	TransportAddress replyAddress;
-} LocationRequest;
-
-typedef struct LocationConfirm {	/* SEQUENCE */
-	enum {
-		eLocationConfirm_nonStandardData = (1 << 31),
-		eLocationConfirm_destinationInfo = (1 << 30),
-		eLocationConfirm_destExtraCallInfo = (1 << 29),
-		eLocationConfirm_destinationType = (1 << 28),
-		eLocationConfirm_remoteExtensionAddress = (1 << 27),
-		eLocationConfirm_alternateEndpoints = (1 << 26),
-		eLocationConfirm_tokens = (1 << 25),
-		eLocationConfirm_cryptoTokens = (1 << 24),
-		eLocationConfirm_integrityCheckValue = (1 << 23),
-		eLocationConfirm_alternateTransportAddresses = (1 << 22),
-		eLocationConfirm_supportedProtocols = (1 << 21),
-		eLocationConfirm_multipleCalls = (1 << 20),
-		eLocationConfirm_featureSet = (1 << 19),
-		eLocationConfirm_genericData = (1 << 18),
-		eLocationConfirm_circuitInfo = (1 << 17),
-		eLocationConfirm_serviceControl = (1 << 16),
-	} options;
-	TransportAddress callSignalAddress;
-	TransportAddress rasAddress;
-} LocationConfirm;
-
-typedef struct InfoRequestResponse_callSignalAddress {	/* SEQUENCE OF */
-	int count;
-	TransportAddress item[10];
-} InfoRequestResponse_callSignalAddress;
-
-typedef struct InfoRequestResponse {	/* SEQUENCE */
-	enum {
-		eInfoRequestResponse_nonStandardData = (1 << 31),
-		eInfoRequestResponse_endpointAlias = (1 << 30),
-		eInfoRequestResponse_perCallInfo = (1 << 29),
-		eInfoRequestResponse_tokens = (1 << 28),
-		eInfoRequestResponse_cryptoTokens = (1 << 27),
-		eInfoRequestResponse_integrityCheckValue = (1 << 26),
-		eInfoRequestResponse_needResponse = (1 << 25),
-		eInfoRequestResponse_capacity = (1 << 24),
-		eInfoRequestResponse_irrStatus = (1 << 23),
-		eInfoRequestResponse_unsolicited = (1 << 22),
-		eInfoRequestResponse_genericData = (1 << 21),
-	} options;
-	TransportAddress rasAddress;
-	InfoRequestResponse_callSignalAddress callSignalAddress;
-} InfoRequestResponse;
-
-typedef struct RasMessage {	/* CHOICE */
-	enum {
-		eRasMessage_gatekeeperRequest,
-		eRasMessage_gatekeeperConfirm,
-		eRasMessage_gatekeeperReject,
-		eRasMessage_registrationRequest,
-		eRasMessage_registrationConfirm,
-		eRasMessage_registrationReject,
-		eRasMessage_unregistrationRequest,
-		eRasMessage_unregistrationConfirm,
-		eRasMessage_unregistrationReject,
-		eRasMessage_admissionRequest,
-		eRasMessage_admissionConfirm,
-		eRasMessage_admissionReject,
-		eRasMessage_bandwidthRequest,
-		eRasMessage_bandwidthConfirm,
-		eRasMessage_bandwidthReject,
-		eRasMessage_disengageRequest,
-		eRasMessage_disengageConfirm,
-		eRasMessage_disengageReject,
-		eRasMessage_locationRequest,
-		eRasMessage_locationConfirm,
-		eRasMessage_locationReject,
-		eRasMessage_infoRequest,
-		eRasMessage_infoRequestResponse,
-		eRasMessage_nonStandardMessage,
-		eRasMessage_unknownMessageResponse,
-		eRasMessage_requestInProgress,
-		eRasMessage_resourcesAvailableIndicate,
-		eRasMessage_resourcesAvailableConfirm,
-		eRasMessage_infoRequestAck,
-		eRasMessage_infoRequestNak,
-		eRasMessage_serviceControlIndication,
-		eRasMessage_serviceControlResponse,
-	} choice;
-	union {
-		GatekeeperRequest gatekeeperRequest;
-		GatekeeperConfirm gatekeeperConfirm;
-		RegistrationRequest registrationRequest;
-		RegistrationConfirm registrationConfirm;
-		UnregistrationRequest unregistrationRequest;
-		AdmissionRequest admissionRequest;
-		AdmissionConfirm admissionConfirm;
-		LocationRequest locationRequest;
-		LocationConfirm locationConfirm;
-		InfoRequestResponse infoRequestResponse;
-	};
-} RasMessage;
diff --git a/net/ipv4/netfilter/ip_nat_helper_h323.c b/net/ipv4/netfilter/ip_nat_helper_h323.c
index a0bc883928c..6f19c20b34c 100644
--- a/net/ipv4/netfilter/ip_nat_helper_h323.c
+++ b/net/ipv4/netfilter/ip_nat_helper_h323.c
@@ -41,65 +41,12 @@
 #include <linux/netfilter_ipv4/ip_conntrack_h323.h>
 #include <linux/netfilter_ipv4/ip_conntrack_helper.h>
 
-#include "ip_conntrack_helper_h323_asn1.h"
-
 #if 0
 #define DEBUGP printk
 #else
 #define DEBUGP(format, args...)
 #endif
 
-extern int get_h245_addr(unsigned char *data, H245_TransportAddress * addr,
-			 u_int32_t * ip, u_int16_t * port);
-extern int get_h225_addr(unsigned char *data, TransportAddress * addr,
-			 u_int32_t * ip, u_int16_t * port);
-extern void ip_conntrack_h245_expect(struct ip_conntrack *new,
-				     struct ip_conntrack_expect *this);
-extern void ip_conntrack_q931_expect(struct ip_conntrack *new,
-				     struct ip_conntrack_expect *this);
-extern int (*set_h245_addr_hook) (struct sk_buff ** pskb,
-				  unsigned char **data, int dataoff,
-				  H245_TransportAddress * addr,
-				  u_int32_t ip, u_int16_t port);
-extern int (*set_h225_addr_hook) (struct sk_buff ** pskb,
-				  unsigned char **data, int dataoff,
-				  TransportAddress * addr,
-				  u_int32_t ip, u_int16_t port);
-extern int (*set_sig_addr_hook) (struct sk_buff ** pskb,
-				 struct ip_conntrack * ct,
-				 enum ip_conntrack_info ctinfo,
-				 unsigned char **data,
-				 TransportAddress * addr, int count);
-extern int (*set_ras_addr_hook) (struct sk_buff ** pskb,
-				 struct ip_conntrack * ct,
-				 enum ip_conntrack_info ctinfo,
-				 unsigned char **data,
-				 TransportAddress * addr, int count);
-extern int (*nat_rtp_rtcp_hook) (struct sk_buff ** pskb,
-				 struct ip_conntrack * ct,
-				 enum ip_conntrack_info ctinfo,
-				 unsigned char **data, int dataoff,
-				 H245_TransportAddress * addr,
-				 u_int16_t port, u_int16_t rtp_port,
-				 struct ip_conntrack_expect * rtp_exp,
-				 struct ip_conntrack_expect * rtcp_exp);
-extern int (*nat_t120_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
-			     enum ip_conntrack_info ctinfo,
-			     unsigned char **data, int dataoff,
-			     H245_TransportAddress * addr, u_int16_t port,
-			     struct ip_conntrack_expect * exp);
-extern int (*nat_h245_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
-			     enum ip_conntrack_info ctinfo,
-			     unsigned char **data, int dataoff,
-			     TransportAddress * addr, u_int16_t port,
-			     struct ip_conntrack_expect * exp);
-extern int (*nat_q931_hook) (struct sk_buff ** pskb, struct ip_conntrack * ct,
-			     enum ip_conntrack_info ctinfo,
-			     unsigned char **data, TransportAddress * addr,
-			     int idx, u_int16_t port,
-			     struct ip_conntrack_expect * exp);
-
-
 /****************************************************************************/
 static int set_addr(struct sk_buff **pskb,
 		    unsigned char **data, int dataoff,
-- 
cgit v1.2.3