[NETFILTER]: nf_conntrack/nf_nat: add H.323 helper port
Add IPv4 and IPv6 capable nf_conntrack port of the H.323 conntrack/NAT helper. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
1695890057
commit
f587de0e2f
92
include/linux/netfilter/nf_conntrack_h323.h
Normal file
92
include/linux/netfilter/nf_conntrack_h323.h
Normal file
@@ -0,0 +1,92 @@
|
||||
#ifndef _NF_CONNTRACK_H323_H
|
||||
#define _NF_CONNTRACK_H323_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/netfilter/nf_conntrack_h323_asn1.h>
|
||||
|
||||
#define RAS_PORT 1719
|
||||
#define Q931_PORT 1720
|
||||
#define H323_RTP_CHANNEL_MAX 4 /* Audio, video, FAX and other */
|
||||
|
||||
/* This structure exists only once per master */
|
||||
struct nf_ct_h323_master {
|
||||
|
||||
/* Original and NATed Q.931 or H.245 signal ports */
|
||||
__be16 sig_port[IP_CT_DIR_MAX];
|
||||
|
||||
/* Original and NATed RTP ports */
|
||||
__be16 rtp_port[H323_RTP_CHANNEL_MAX][IP_CT_DIR_MAX];
|
||||
|
||||
union {
|
||||
/* RAS connection timeout */
|
||||
u_int32_t timeout;
|
||||
|
||||
/* Next TPKT length (for separate TPKT header and data) */
|
||||
u_int16_t tpkt_len[IP_CT_DIR_MAX];
|
||||
};
|
||||
};
|
||||
|
||||
struct nf_conn;
|
||||
|
||||
extern int get_h225_addr(struct nf_conn *ct, unsigned char *data,
|
||||
TransportAddress *taddr,
|
||||
union nf_conntrack_address *addr, __be16 *port);
|
||||
extern void nf_conntrack_h245_expect(struct nf_conn *new,
|
||||
struct nf_conntrack_expect *this);
|
||||
extern void nf_conntrack_q931_expect(struct nf_conn *new,
|
||||
struct nf_conntrack_expect *this);
|
||||
extern int (*set_h245_addr_hook) (struct sk_buff **pskb,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress *taddr,
|
||||
union nf_conntrack_address *addr,
|
||||
__be16 port);
|
||||
extern int (*set_h225_addr_hook) (struct sk_buff **pskb,
|
||||
unsigned char **data, int dataoff,
|
||||
TransportAddress *taddr,
|
||||
union nf_conntrack_address *addr,
|
||||
__be16 port);
|
||||
extern int (*set_sig_addr_hook) (struct sk_buff **pskb,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data,
|
||||
TransportAddress *taddr, int count);
|
||||
extern int (*set_ras_addr_hook) (struct sk_buff **pskb,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data,
|
||||
TransportAddress *taddr, int count);
|
||||
extern int (*nat_rtp_rtcp_hook) (struct sk_buff **pskb,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress *taddr,
|
||||
__be16 port, __be16 rtp_port,
|
||||
struct nf_conntrack_expect *rtp_exp,
|
||||
struct nf_conntrack_expect *rtcp_exp);
|
||||
extern int (*nat_t120_hook) (struct sk_buff **pskb, struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress *taddr, __be16 port,
|
||||
struct nf_conntrack_expect *exp);
|
||||
extern int (*nat_h245_hook) (struct sk_buff **pskb, struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
TransportAddress *taddr, __be16 port,
|
||||
struct nf_conntrack_expect *exp);
|
||||
extern int (*nat_callforwarding_hook) (struct sk_buff **pskb,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
TransportAddress *taddr,
|
||||
__be16 port,
|
||||
struct nf_conntrack_expect *exp);
|
||||
extern int (*nat_q931_hook) (struct sk_buff **pskb, struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, TransportAddress *taddr,
|
||||
int idx, __be16 port,
|
||||
struct nf_conntrack_expect *exp);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
98
include/linux/netfilter/nf_conntrack_h323_asn1.h
Normal file
98
include/linux/netfilter/nf_conntrack_h323_asn1.h
Normal file
@@ -0,0 +1,98 @@
|
||||
/****************************************************************************
|
||||
* ip_conntrack_h323_asn1.h - BER and PER decoding library for H.323
|
||||
* conntrack/NAT module.
|
||||
*
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net>
|
||||
*
|
||||
* 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 _NF_CONNTRACK_HELPER_H323_ASN1_H_
|
||||
#define _NF_CONNTRACK_HELPER_H323_ASN1_H_
|
||||
|
||||
/*****************************************************************************
|
||||
* H.323 Types
|
||||
****************************************************************************/
|
||||
#include "nf_conntrack_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
|
951
include/linux/netfilter/nf_conntrack_h323_types.h
Normal file
951
include/linux/netfilter/nf_conntrack_h323_types.h
Normal file
@@ -0,0 +1,951 @@
|
||||
/* Generated by Jing Min Zhao's ASN.1 parser, Apr 20 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_ip6Address { /* SEQUENCE */
|
||||
int options; /* No use */
|
||||
unsigned ip6;
|
||||
} TransportAddress_ip6Address;
|
||||
|
||||
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_ip6Address ip6Address;
|
||||
};
|
||||
} 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_iP6Address { /* SEQUENCE */
|
||||
int options; /* No use */
|
||||
unsigned network;
|
||||
} UnicastAddress_iP6Address;
|
||||
|
||||
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_iP6Address iP6Address;
|
||||
};
|
||||
} 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;
|
||||
TransportAddress alternativeAddress;
|
||||
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;
|
Reference in New Issue
Block a user